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 的聊天特定格式化

为防止因缺少特殊标记导致模型性能下降,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