使用LangChain+Ollama的时候怎么使用其他的embedding模型

相信这是很多做RAG的朋友的需求。Ollama的Embedding model是比较少的:

https://ollama.com/library?q=embedhttps://ollama.com/library?q=embed而且这些模型并不一定适用于中文,如果直接在LangChain中使用,例如:

python 复制代码
oembed = OllamaEmbeddings(base_url="http://127.0.0.1:11434", model="mxbai-embed-large")

会导致Embedding的效果不好。那么怎么使用其他embedding模型呢?我们都知道HuggingFace上有很多embedding model,而LangChain也确实提供了这样的接口:

langchain_community 0.2.5 --- 🦜🔗 LangChain 0.2.5https://api.python.langchain.com/en/latest/community_api_reference.html#module-langchain_community.embeddings这里有列出几类API:

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------|
| embeddings.huggingface.HuggingFaceBgeEmbeddings | HuggingFace sentence_transformers embedding models. |
| embeddings.huggingface.HuggingFaceEmbeddings | [Deprecated] HuggingFace sentence_transformers embedding models. |
| embeddings.huggingface.HuggingFaceInferenceAPIEmbeddings | Embed texts using the HuggingFace API. |
| embeddings.huggingface.HuggingFaceInstructEmbeddings | Wrapper around sentence_transformers embedding models. |
| embeddings.huggingface_hub.HuggingFaceHubEmbeddings | [Deprecated] HuggingFaceHub embedding models. |

其中有两个是Deprecated的,而我们平时用到的HuggingFace的embedding model都基本以SentenceTransformer形式提供,我测试了一下,embeddings.huggingface.HuggingFaceBgeEmbeddings这个类是可以使用的,embeddings.huggingface.HuggingFaceInstructEmbeddings这个会报错,也没有仔细检查原因。

另外就是具体应该使用什么embedding模型,特别是针对中文,HuggingFace在这里有个leader board:https://huggingface.co/spaces/mteb/leaderboardhttps://huggingface.co/spaces/mteb/leaderboard可以在下面选择Chinese,例如我们要使用zpoint_large_embedding_zh这个模型,点开其页面可以看到对应Sentence Transformer的链接:https://huggingface.co/iampanda/zpoint_large_embedding_zh

那可以通过LangChain这样调用:

python 复制代码
    from langchain_community.embeddings import HuggingFaceBgeEmbeddings
    model_name = "iampanda/zpoint_large_embedding_zh"
    model_kwargs = {'device': 'cpu'}
    encode_kwargs = {'normalize_embeddings': True}
    hf_embeddings = HuggingFaceBgeEmbeddings(
        model_name=model_name,
        model_kwargs=model_kwargs,
        encode_kwargs=encode_kwargs
    )

然后就可以通过这个模型生成embedding了。经过测试,发现比Ollama自己的embedding模型的中文效果好多了。

相关推荐
wuhen_n1 小时前
LangChain Agents 实战:构建智能文件管理助手
前端·javascript·人工智能·langchain·ai编程
wAEWQ6Ib74 小时前
性能干翻235B,单卡私有化部署OpenClaw
langchain
wAEWQ6Ib78 小时前
[拆解LangChain执行引擎]支持自然语言查询的长期存储
数据库·oracle·langchain
Ofm1z1Q9R9 小时前
python-langchain框架(3-5-pdf文件load_and_split()加载 )
python·langchain·pdf
一如既往の18 小时前
LangChain 是什么
langchain
new Object ~19 小时前
langchain 的向量存储
langchain
Timer@20 小时前
LangChain 教程 04|Agent 详解:让 AI 学会“自己干活“
javascript·人工智能·langchain
YuanDaima204821 小时前
基于 LangChain 1.0 的检索增强生成(RAG)实战
人工智能·笔记·python·langchain·个人开发·langgraph
qq_5470261791 天前
LangChain 工具调用(Tool Calling)
java·大数据·langchain
AI大模型..1 天前
数据洞察加速器:LLM Copilot 如何让 SQL 查询效率提升 50% 以上?
人工智能·langchain·llm·agent·llama