Hugging Face全面拥抱LangChain:全新官方合作包

大模型人工智能与算法微服务治理

picture.image

❝ 最近Hugging Face 官宣发布langchain_huggingface ,这是一个由 Hugging Face 和 LangChain 共同维护的 LangChain 合作伙伴包。这个新的 Python 包旨在将 Hugging Face 最新功能引入 LangChain 并保持同步。

通过Hugging Face 官方包的加持,开发小伙伴们通过简单的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 HuggingFacePipeline  
  
llm = HuggingFacePipeline.from_model_id(  
    model_id="gpt2",  
    task="text-generation",  
    pipeline_kwargs={"max\_new\_tokens": 10},  
)  

      

聊天模型(Chat modal)

Chat作为Langchain集成与交互的核心入口,Hugging Face 平台也提供了多种开源聊天模型作为对应支持。你可以直接使用ChatHuggingFace类来快速集成开源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)  

      

嵌入模型(embedding)

RAG 应用开发过程中必不可少的embedding模型,Hugging Face 也提供了各类开源嵌入模型的选择,包括:

HuggingFaceEmbeddings

  • 通用开源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  
)  

      

HuggingFaceInstructEmbeddings

  • 指令型开源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  
)  

      

HuggingFaceBgeEmbeddings

由北京人工智能研究院(BAAI)创建的BGE模型,是开源嵌入模型中的佼佼者。


        
          
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  
)  

      

Hugging Face Text Embeddings Inference (TEI)

Hugging Face文本嵌入推理(TEI) 是一个部署和提供开源文本嵌入和序列分类模型的工具包,支持包括FlagEmbeddingEmberGTEE5在内的流行模型。部署后,可以通过本地的http端口来调用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")  

      

文档加载器

Hugging Face 平台拥有超过75,000个数据集,涵盖100多种语言,适用于NLP、计算机视觉和音频领域的多种任务。通过HuggingFaceDatasetLoader,我们可以直接将这些数据集应用于LangChain系统的构建与测试。

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)  

      

工具

Hugging Face Hub Tools

Hugging Face工具 支持文本输入输出,可以通过load_huggingface_tool函数加载。


        
          
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}")  

      

总结

通过上述介绍,相信你已经可以轻松地在你的LangChain项目中集成Hugging Face 平台的强大功能。无论是聊天机器人、文本嵌入还是数据集加载,Hugging Face 平台都能为你提供更多的开源模型的支持。

今天的内容就到这里,如果老铁觉得还行,可以来一波三连,感谢!

PS

AI小智技术交流群(技术交流、摸鱼、白嫖课程为主)又不定时开放了,感兴趣的朋友,可以在下方公号内回复:666,即可进入。

老规矩

,道友们还记得么,

右下角的 “在看” 点一下

, 如果感觉文章内容不错的话,记得分享朋友圈让更多的人知道!

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
大规模高性能计算集群优化实践
随着机器学习的发展,数据量和训练模型都有越来越大的趋势,这对基础设施有了更高的要求,包括硬件、网络架构等。本次分享主要介绍火山引擎支撑大规模高性能计算集群的架构和优化实践。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论