Hugging Face全面擁抱LangChain:全新官方合作包
通過(guò)Hugging Face官方包的加持,開(kāi)發(fā)小伙伴們通過(guò)簡(jiǎn)單的api調(diào)用就能在langchain中輕松使用Hugging Face上各類(lèi)流行的開(kāi)源大語(yǔ)言模型以及各類(lèi)AI工具。
以下是筆者在測(cè)試使用后,總結(jié)的在LangChain中無(wú)縫安裝和使用Hugging Face最佳實(shí)踐。
如何安裝
要使用Hugging Face平臺(tái)的功能,首先需要安裝langchain-huggingface包,這是一個(gè)專(zhuān)門(mén)為Hugging Face平臺(tái)集成的Python包。
pip install langchain-huggingface
大型語(yǔ)言模型(LLM)
LLM是Langchain對(duì)大語(yǔ)言模型的核心抽象,Hugging Face中則將類(lèi)似能力稱(chēng)之為Pipeline。因而Hugging Face平臺(tái)使用HuggingFacePipeline類(lèi)來(lái)啟動(dòng)開(kāi)源大語(yǔ)言模型的本地啟動(dòng)
from langchain_huggingface.llms import HuggingFacePipeline
llm = HuggingFacePipeline.from_model_id(
model_id="gpt2",
task="text-generation",
pipeline_kwargs={"max_new_tokens": 10},
)
- 使用示例:https://python.langchain.com/v0.2/docs/integrations/llms/huggingface_pipelines/
- API參考文檔:https://api.python.langchain.com/en/latest/llms/langchain_huggingface.llms.huggingface_pipeline.HuggingFacePipeline.html
聊天模型(Chat modal)
Chat作為L(zhǎng)angchain集成與交互的核心入口,Hugging Face平臺(tái)也提供了多種開(kāi)源聊天模型作為對(duì)應(yīng)支持。你可以直接使用ChatHuggingFace類(lèi)來(lái)快速集成開(kāi)源LLM。
from langchain_core.messages import (
HumanMessage,
SystemMessage,
)
from langchain_huggingface import ChatHuggingFace
messages = [
SystemMessage(content="You're a helpful assistant"),
HumanMessage(
content="What happens when an unstoppable force meets an immovable object?"
),
]
chat_model = ChatHuggingFace(llm=llm)
- 使用示例:https://python.langchain.com/v0.2/docs/integrations/chat/huggingface/
- API參考文檔:https://api.python.langchain.com/en/latest/chat_models/langchain_huggingface.chat_models.huggingface.ChatHuggingFace.html
嵌入模型(embedding)
RAG應(yīng)用開(kāi)發(fā)過(guò)程中必不可少的embedding模型,Hugging Face也提供了各類(lèi)開(kāi)源嵌入模型的選擇,包括:
HuggingFaceEmbeddings
- 通用開(kāi)源embedding模型加載
from langchain_huggingface import HuggingFaceEmbeddings
model_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
)
- 使用示例:https://python.langchain.com/v0.2/docs/integrations/text_embedding/huggingfacehub/
- API參考文檔:https://api.python.langchain.com/en/latest/embeddings/langchain_huggingface.embeddings.huggingface.HuggingFaceEmbeddings.html
HuggingFaceInstructEmbeddings
- 指令型開(kāi)源embedding模型加載
from langchain_community.embeddings import HuggingFaceInstructEmbeddings
model_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
)
- 使用示例:https://python.langchain.com/v0.2/docs/integrations/text_embedding/instruct_embeddings/
- API參考文檔:https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.huggingface.HuggingFaceInstructEmbeddings.html
HuggingFaceBgeEmbeddings
由北京人工智能研究院(BAAI)創(chuàng)建的BGE模型,是開(kāi)源嵌入模型中的佼佼者。
from langchain_community.embeddings import HuggingFaceBgeEmbeddings
model_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
)
- 使用示例:https://python.langchain.com/v0.2/docs/integrations/text_embedding/bge_huggingface/
- API參考文檔:https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.huggingface.HuggingFaceBgeEmbeddings.html
Hugging Face Text Embeddings Inference (TEI)
Hugging Face文本嵌入推理(TEI) 是一個(gè)部署和提供開(kāi)源文本嵌入和序列分類(lèi)模型的工具包,支持包括FlagEmbedding、Ember、GTE和E5在內(nèi)的流行模型。部署后,可以通過(guò)本地的http端口來(lái)調(diào)用Embedding能力。
pip install huggingface-hub
model=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 run
docker run --gpus all -p 8080:80 -v $volume:/data --pull always ghcr.io/huggingface/text-embeddings-inference:0.6 --model-id $model --revision $revision
from langchain_huggingface.embeddings import HuggingFaceEndpointEmbeddings
embeddings = HuggingFaceEndpointEmbeddings(model="http://localhost:8080")
- 使用示例:https://python.langchain.com/v0.2/docs/integrations/text_embedding/text_embeddings_inference/
- API參考文檔:https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.huggingface_hub.HuggingFaceHubEmbeddings.html
文檔加載器
Hugging Face平臺(tái)擁有超過(guò)75,000個(gè)數(shù)據(jù)集,涵蓋100多種語(yǔ)言,適用于NLP、計(jì)算機(jī)視覺(jué)和音頻領(lǐng)域的多種任務(wù)。通過(guò)HuggingFaceDatasetLoader,我們可以直接將這些數(shù)據(jù)集應(yīng)用于LangChain系統(tǒng)的構(gòu)建與測(cè)試。
Hugging Face Dataset
from langchain_community.document_loaders.hugging_face_dataset import HuggingFaceDatasetLoader
dataset_name = "imdb"
page_content_column = "text"
loader = HuggingFaceDatasetLoader(dataset_name, page_content_column)
- 使用示例:https://python.langchain.com/v0.2/docs/integrations/document_loaders/hugging_face_dataset/
- API參考文檔:https://api.python.langchain.com/en/latest/document_loaders/langchain_community.document_loaders.hugging_face_dataset.HuggingFaceDatasetLoader.html
工具
Hugging Face Hub Tools
Hugging Face工具 支持文本輸入輸出,可以通過(guò)load_huggingface_tool函數(shù)加載。
pip install transformers huggingface_hub
from langchain.agents import load_huggingface_tool
tool = load_huggingface_tool("lysandre/hf-model-downloads")
print(f"{tool.name}: {tool.description}")
- 使用示例:https://python.langchain.com/v0.2/docs/integrations/tools/huggingface_tools/
- API參考文檔:https://api.python.langchain.com/en/latest/agent_toolkits/langchain_community.agent_toolkits.load_tools.load_huggingface_tool.html
總結(jié)
通過(guò)上述介紹,相信你已經(jīng)可以輕松地在你的LangChain項(xiàng)目中集成Hugging Face平臺(tái)的強(qiáng)大功能。無(wú)論是聊天機(jī)器人、文本嵌入還是數(shù)據(jù)集加載,Hugging Face平臺(tái)都能為你提供更多的開(kāi)源模型的支持。
