最近Hugging Face官宣发布langchain_huggingface,这是一个由 Hugging Face 和 LangChain 共同维护的 LangChain 合作伙伴包。这个新的 Python 包旨在将 Hugging Face 最新功能引入 LangChain 并保持同步。本系列合集,点击链接查看
通过官方包的加持,开发小伙伴们通过简单的api调用就能在langchain中轻松使用Hugging Face上各类流行的开源大语言模型以及各类AI工具。
以下是笔者在测试使用后,总结的在LangChain中无缝安装和使用Hugging Face最佳实践
。
如何安装
要使用Hugging Face平台的功能,首先需要安装langchain-huggingface
包,这是一个专门为Hugging Face平台集成的Python包。
pip install langchain-huggingface
大型语言模型
(LLM)
LLM是Langchain对大语言模型的核心抽象,Hugging Face中则将类似能力称之为Pipeline。因而Hugging Face平台使用HuggingFacePipeline
类来启动开源大语言模型的本地启动
from langchain_huggingface.llms import HuggingFacePipelinellm = HuggingFacePipeline.from_model_id(model_id="gpt2",task="text-generation",pipeline_kwargs={"max_new_tokens": 10},
)
- 查看使用示例。
- API参考文档:HuggingFacePipeline。
聊天模型
(Chat modal)
Chat作为Langchain集成与交互的核心入口,Hugging Face平台也提供了多种开源聊天模型作为对应支持。你可以直接使用ChatHuggingFace
类来快速集成开源LLM。
from langchain_core.messages import (HumanMessage,SystemMessage,
)
from langchain_huggingface import ChatHuggingFacemessages = [SystemMessage(content="You're a helpful assistant"),HumanMessage(content="What happens when an unstoppable force meets an immovable object?"),
]chat_model = ChatHuggingFace(llm=llm)
- 查看使用示例。
- API参考文档:ChatHuggingFace。
嵌入模型(embedding)
RAG应用开发过程中必不可少的embedding模型
,Hugging Face也提供了各类开源嵌入模型的选择,包括:
HuggingFaceEmbeddings
- 通用开源embedding模型加载
from langchain_huggingface import HuggingFaceEmbeddingsmodel_name = "sentence-transformers/all-mpnet-base-v2"
model_kwargs = {'device': 'cpu'}
encode_kwargs = {'normalize_embeddings': False}
hf = HuggingFaceEmbeddings(model_name=model_name,model_kwargs=model_kwargs,encode_kwargs
=encode_kwargs
)
- 查看使用示例。
- API参考文档:HuggingFaceEmbeddings
HuggingFaceInstructEmbeddings
- 指令型开源embedding模型加载
from langchain_community.embeddings import HuggingFaceInstructEmbeddingsmodel_name = "hkunlp/instructor-large"
model_kwargs = {'device': 'cpu'}
encode_kwargs = {'normalize_embeddings': True}
hf = HuggingFaceInstructEmbeddings(model_name=model_name,model_kwargs=model_kwargs,encode_kwargs=encode_kwargs
)
- 查看使用示例。
- API参考文档:HuggingFaceInstructEmbeddings
HuggingFaceBgeEmbeddings
由北京人工智能研究院(BAAI)创建的BGE模型,是开源嵌入模型中的佼佼者。
from langchain_community.embeddings import HuggingFaceBgeEmbeddingsmodel_name = "BAAI/bge-small-en"
model_kwargs = {"device": "cpu"}
encode_kwargs = {"normalize_embeddings": True}
hf = HuggingFaceBgeEmbeddings(model_name=model_name, model_kwargs=model_kwargs, encode_kwargs=encode_kwargs
)
- 查看使用示例。
- API参考文档:HuggingFaceBgeEmbeddings
Hugging Face Text Embeddings Inference (TEI)
Hugging Face文本嵌入推理(TEI) 是一个部署和提供开源文本嵌入和序列分类模型的工具包
,支持包括FlagEmbedding
、Ember
、GTE
和E5
在内的流行模型。部署后,可以通过本地的http端口来调用Embedding能力。
pip install huggingface-hubmodel=BAAI/bge-large-en-v1.5
revision=refs/pr/5
volume=$PWD/data # share a volume with the Docker container to avoid downloading weights every rundocker run --gpus all -p 8080:80 -v $volume:/data --pull always ghcr
.io/huggingface/text-embeddings-inference:0.6 --model-id $model --revision $revisionfrom langchain_huggingface.embeddings import HuggingFaceEndpointEmbeddingsembeddings = HuggingFaceEndpointEmbeddings(model="http://localhost:8080")
- 查看使用示例。
- API参考文档:HuggingFaceHubEmbeddings
文档加载器
Hugging Face平台拥有超过75,000个数据集,涵盖100多种语言,适用于NLP、计算机视觉和音频领域的多种任务。通过HuggingFaceDatasetLoader,我们可以直接将这些数据集应用于LangChain系统的构建与测试。
Hugging Face Dataset
from langchain_community.document_loaders.hugging_face_dataset import HuggingFaceDatasetLoaderdataset_name = "imdb"
page_content_column = "text"loader = HuggingFaceDatasetLoader(dataset_name, page_content_column)
- 查看使用示例
- API参考文档:HuggingFaceDatasetLoader
工具
Hugging Face Hub Tools
Hugging Face工具 支持文本输入输出,可以通过load_huggingface_tool
函数加载。
pip install transformers huggingface_hubfrom langchain.agents import load_huggingface_tooltool = load_huggingface_tool("lysandre/hf-model-downloads")print(f"{tool.name}: {tool.description}")
- 查看使用示例。
- API参考文档:load_huggingface_tool
通过上述介绍,你可以轻松地在你的Python项目中集成Hugging Face平台的强大功能。无论是聊天机器人、文本嵌入还是数据集加载,Hugging Face平台都能提供相应的支持和工具。
参考:
https://zhuanlan.zhihu.com/p/700632322
https://zhuanlan.zhihu.com/p/700632322