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-generation、text2text-generation、summarization 與 translation。
使用者可以透過兩種方式初始化此類別:
- 直接從模型 ID:使用
from_model_id方法指定模型與任務。 - 自訂 Pipeline:手動定義
transformerspipeline(包括像 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