使用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模型的中文效果好多了。

相关推荐
是一碗螺丝粉9 小时前
LangChain 链(Chains)完全指南:从线性流程到智能路由
前端·langchain·aigc
前端付豪9 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain
神秘的猪头9 小时前
🔌 给 AI 装上“三头六臂”!实战大模型接入第三方 MCP 全攻略
langchain·llm·mcp
前端付豪1 天前
LangChain链 写一篇完美推文?用SequencialChain链接不同的组件
人工智能·python·langchain
神秘的猪头1 天前
🔌 把 MCP 装进大脑!手把手带你构建能“热插拔”工具的 AI Agent
langchain·llm·mcp
是一碗螺丝粉2 天前
5分钟上手LangChain.js:用DeepSeek给你的App加上AI能力
前端·人工智能·langchain
是一碗螺丝粉2 天前
LangChain 核心组件深度解析:模型与提示词模板
前端·langchain·aigc
大模型真好玩3 天前
大模型训练全流程实战指南工具篇(七)——EasyDataset文档处理流程
人工智能·langchain·deepseek
勇气要爆发4 天前
吴恩达《LangChain LLM 应用开发精读笔记》1-Introduction_介绍
笔记·langchain·吴恩达