首页 > 其他分享 >Hugging Face全面拥抱LangChain:全新官方合作包

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

时间:2025-01-22 16:14:21浏览次数:1  
标签:huggingface Hugging Face langchain LangChain kwargs model

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

通过上述介绍,你可以轻松地在你的Python项目中集成Hugging Face平台的强大功能。无论是聊天机器人、文本嵌入还是数据集加载,Hugging Face平台都能提供相应的支持和工具。

参考:

https://zhuanlan.zhihu.com/p/700632322

https://zhuanlan.zhihu.com/p/700632322

 

标签:huggingface,Hugging,Face,langchain,LangChain,kwargs,model
From: https://www.cnblogs.com/yongwei/p/18686274

相关文章

  • 以下是设置Hugging Face `from_pretrained` 默认保存路径的完整解决方案:
    以下是设置HuggingFacefrom_pretrained默认保存路径的完整解决方案:方法1:通过环境变量全局设置在代码或系统环境变量中设置模型缓存路径:importosfrompathlibimportPath#设置自定义缓存路径(推荐使用绝对路径)CUSTOM_CACHE_DIR="/path/to/your/model_cache"......
  • 如何在LangChain中缓存模型响应
    在开发涉及语言模型(LLM)的应用程序时,缓存模型响应可以显著提升性能和降低成本。通过这一技术指南,我们将深入探讨如何在LangChain中实现响应的缓存,确保在不影响系统表现的情况下有效利用计算资源。技术背景介绍在很多情况下,特别是对相同输入多次调用模型时,直接缓存先前的......
  • 使用LangChain快速构建LLM应用程序指南
    LangChain新手指南:快速构建LLM应用程序在这篇文章中,我们将深入探讨如何使用LangChain快速上手LLM应用开发。从基础应用到高级功能,我们将通过代码实例帮助您理解并实现这些技术。技术背景介绍随着大语言模型(LLM)的发展,构建智能应用程序变得越来越普遍。LangChain作为一个强......
  • Facebook广告零支出无消耗:可能原因与解决方法
    Facebook广告开启投放之后预算消耗一动不动,到底是什么原因?又有哪些解决方法?及时排查并解决,助力提升广告效果和转化!一、Facebook广告无支出的可能原因1.出价过低和同属于Meta的Instagram广告竞标因素类似,Facebook广告的竞争因素也是这三点:Advertiser bid出价、Ad quality......
  • Hugging Face功能介绍,及在线体验当前顶级文生图模型Flux
    HuggingFace简介对于非机器学习或深度学习领域的人士来说,HuggingFace这个名字可能并不耳熟。然而,随着近年来大规模模型的迅速崛起,相信大家或多或少都有所接触。如果你对这一领域感兴趣,并在GitHub上查阅过一些开源资料,那么你一定会频繁地看到HuggingFace的身影。例如,在DeepSeek......
  • 全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南
    系列文章目录01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南02-玩转LangChainMemory模块:四种记忆类型详解及应用场景全覆盖03-全面掌握LangChain:从核心链条构建到动态任务分配的实战指南文章目录系列文章目录前言一、LangChain的核心链简介1.1......
  • 2025年必知的Meta(Facebook)广告趋势与技巧!
     Meta广告作为全球最主要的数字广告平台之一,对于许多跨境出海企业来说,关注Meta广告优化趋势是获客的关键之一。过去一年Meta优化步伐渐紧,展望2025年将不断涌现新的趋势和技巧。本文将深入分析2025年Meta广告的关键趋势,帮助广告主在2025年提高投放效果。一、2025Meta广告新趋......
  • 二次开发,在使用LangChain中的Tongyi模型进行流式输出streaming报错问题,官网框架的BUG
    在使用LangChain中的Tongyi模型进行流式输出时,按照官方的代码直接运行会报一个类型错误:TypeError:Additionalkwargskeyoutput_tokensalreadyexistsinleftdictandvaluehasunsupportedtype<class'int'>.​其指向的错误文件路径如下C:\Users\Chenhao\AppData\Lo......
  • Android T(13) 源码分析 — 原生层 Surface 的创建
    AndroidT(13)源码分析—原生层Surface的创建文章目录AndroidT(13)源码分析—原生层Surface的创建前言摘要一、SurfaceComposerClient的createSurfaceChecked分析二、ISurfaceComposerClient的createSurface分析总结前言该系列文章基于AndroidT......
  • 构建本地知识库:基于 LangChain 和 Ollama 的 RAG 实现教程
    构建本地知识库:基于LangChain和Ollama的RAG实现教程简介在这个教程中,我们将学习如何构建一个本地运行的知识库系统,它能够让用户上传PDF或TXT文档,并通过自然语言与文档内容进行交互。这个系统使用了RAG(检索增强生成)技术,结合了LangChain、Ollama和Streamlit......