Hugging Face 與 LangChain 推出 langchain_huggingface 合作套件

Hugging Face 與 LangChain 已推出 langchain_huggingface,這是一個共同維護的合作套件,旨在將最新的 Hugging Face 發展整合至 LangChain。此合作旨在縮短新 Hugging Face 功能發布與其在 LangChain 使用者可用之間的延遲,取代偶爾已被棄用的社群自行編寫的類別。

大型語言模型整合選項

langchain_huggingface 套件提供三種主要方式與大型語言模型(LLM)互動,取決於使用者是需要本地執行還是基於 API 的推論。

使用 HuggingFacePipeline 進行本地執行

HuggingFacePipeline 允許使用者在自己的硬體上執行模型。它利用 Hugging Face 的 transformers Pipeline,特別支援以文字為中心的任務,如 text-generationtext2text-generationsummarizationtranslation

使用者可以透過兩種方式初始化此類別:

  1. 直接從模型 ID:使用 from_model_id 方法指定模型與任務。
  2. 自訂 Pipeline:手動定義 transformers pipeline(包括像 4 位元量化這樣的自訂載入),並將其傳遞給 HuggingFacePipeline 類別。

由於模型會載入本地快取,效能受限於可用的本地硬體資源。

使用 HuggingFaceEndpoint 進行 API 基礎推論

HuggingFaceEndpoint 使用 InferenceClient 透過無伺服器 API 或部署的 TGI(文字生成推論)實例提供模型服務。這對於擁有 Pro 帳號或 Enterprise Hub 存取權的使用者特別有益,儘管一般使用者也可透過 Hugging Face 令牌存取。

它支援兩種設定方式:

  • Repo ID:透過 repo_id 指定模型以使用無伺服器 API。
  • Endpoint URL:提供特定的 endpoint_url 以用於專屬部署。

使用 ChatHuggingFace 進行聊天特定格式化

為防止因缺少特殊 token 而導致模型表現不佳,ChatHuggingFace 作為其他 LLM 類別的包裝器。它使用 tokenizer.apply_chat_template 方法將訊息列表轉換為模型所需的特定完成提示(例如 Mistral-7B-Instruct 或 Llama-3-8B-Instruct 所需的不同格式)。

嵌入模型整合

此套件支援使用來自 Hugging Face Hub 的強大嵌入模型,提供本地與遠端計算的選項。

透過 HuggingFaceEmbeddings 進行本地嵌入

HuggingFaceEmbeddings 使用 sentence-transformers 在使用者的機器上本地計算嵌入。

透過 HuggingFaceEndpointEmbeddings 進行遠端嵌入

HuggingFaceEndpointEmbeddings 使用 InferenceClient 計算嵌入。這使得套件能與托管於 Hub 或文字嵌入推論(TEI)實例的模型協同工作,無論是本地部署或線上部署。

安裝

使用者可以透過 pip 安裝此合作套件:

pip install langchain-huggingface

Sources