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 的聊天特定格式化
为防止因缺少特殊标记导致模型性能下降,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