Hugging Face와 LangChain이 langchain_huggingface 파트너 패키지를 출시합니다

Hugging Face와 LangChain은 최신 Hugging Face 개발을 LangChain에 통합하도록 설계된 공동 유지 관리 파트너 패키지 langchain_huggingface를 출시했습니다. 이번 협업은 새로운 Hugging Face 기능이 출시된 후 LangChain 사용자에게 제공되기까지의 지연 시간을 줄이고, 가끔씩 폐기된 커뮤니티 코드 클래스들을 대체하는 것을 목표로 합니다.

LLM 통합 옵션

langchain_huggingface 패키지는 사용자가 로컬 실행이 필요한지 혹은 API 기반 추론이 필요한지에 따라 대형 언어 모델(LLM)과 상호작용할 수 있는 세 가지 주요 방법을 제공합니다.

HuggingFacePipeline을 이용한 로컬 실행

HuggingFacePipeline은 사용자가 자체 하드웨어에서 모델을 실행할 수 있게 해줍니다. 이는 Hugging Face transformers Pipeline을 활용하며, 특히 text-generation, text2text-generation, summarization, translation과 같은 텍스트 중심 작업을 지원합니다.

사용자는 이 클래스를 두 가지 방법으로 초기화할 수 있습니다:

  1. 모델 ID 직접 지정: from_model_id 메서드를 사용해 모델과 작업을 지정합니다.
  2. 커스텀 파이프라인: transformers 파이프라인을 직접 정의(예: 4비트 양자화와 같은 커스텀 로딩 포함)하고 이를 HuggingFacePipeline 클래스에 전달합니다.

모델이 로컬 캐시에 로드되기 때문에 성능은 사용 가능한 로컬 하드웨어 자원에 의해 제한됩니다.

HuggingFaceEndpoint를 이용한 API 기반 추론

HuggingFaceEndpointInferenceClient를 활용해 서버리스 API 또는 배포된 TGI(Text Generation Inference) 인스턴스를 통해 모델을 제공한다. 이는 Pro 계정이나 Enterprise Hub 접근 권한이 있는 사용자에게 특히 유용하지만, 일반 사용자도 Hugging Face 토큰을 통해 이용할 수 있습니다.

두 가지 구성 방법을 지원합니다:

  • Repo ID: repo_id를 지정하여 서버리스 API를 사용합니다.
  • Endpoint URL: 전용 배포를 위해 특정 endpoint_url을 제공합니다.

ChatHuggingFace를 이용한 채팅 전용 포맷팅

특수 토큰이 누락되어 모델 성능이 저하되는 것을 방지하기 위해 ChatHuggingFace는 다른 LLM 클래스들을 감싸는 래퍼 역할을 합니다. 이는 tokenizer.apply_chat_template 메서드를 사용해 메시지 리스트를 모델이 요구하는 특정 완성 프롬프트로 변환합니다(예: Mistral-7B-Instruct 또는 Llama-3-8B-Instruct가 요구하는 고유 포맷).

임베딩 모델 통합

이 패키지는 Hugging Face Hub의 강력한 임베딩 모델을 로컬 및 원격 계산 옵션으로 사용할 수 있게 합니다.

HuggingFaceEmbeddings를 통한 로컬 임베딩

HuggingFaceEmbeddingssentence-transformers를 사용해 사용자의 머신에서 로컬로 임베딩을 계산합니다.

HuggingFaceEndpointEmbeddings를 통한 원격 임베딩

HuggingFaceEndpointEmbeddingsInferenceClient를 사용해 임베딩을 계산합니다. 이를 통해 패키지는 Hub에 호스팅된 모델이나 Text Embeddings Inference(TEI) 인스턴스와 로컬이든 온라인이든 관계없이 연동할 수 있습니다.

설치

사용자는 pip를 통해 파트너 패키지를 설치할 수 있습니다:

pip install langchain-huggingface

Sources