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

相关推荐
码--到成功11 小时前
langchain 入门(一)
langchain
爱吃面的猫3 天前
Langchain+文心一言调用
langchain·文心一言
爱吃面的猫3 天前
Langchain+讯飞星火大模型Spark Max调用
langchain
大模型铲屎官5 天前
玩转 LangChain:从文档加载到高效问答系统构建的全程实战
人工智能·python·ai·langchain·nlp·文档加载·问答系统构建
玩电脑的辣条哥6 天前
怎么使用langchain和ollama自己简单开发搭建一个本地有记忆的大模型?
langchain·flask·数字人管家·ai管家·大模型记忆
m0_748250939 天前
GraphRAG如何使用ollama提供的llm model 和Embedding model服务构建本地知识库
python·flask·embedding
for6211 天前
langchain4j执行源码分析
java·langchain
冻感糕人~14 天前
使用LangChain、CrewAI、AutoGen搭建数据分析Agent
人工智能·windows·ai·数据分析·langchain·大模型·agent
weixin_3077791315 天前
Python的Langchain库的功能及实现代码
人工智能·python·langchain
加点油。。。。16 天前
Matlab2019a安装C2000 Processors超详细过程
matlab·embedding·dsp开发