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

相关推荐
ai_lian_shuo17 小时前
四、使用langchain搭建RAG:金融问答机器人--构建web应用,问答链,带记忆功能
python·ai·金融·langchain·机器人
goTsHgo2 天前
在 Spark 上实现 Graph Embedding
大数据·spark·embedding
爱学习的小道长4 天前
Python langchain ReAct 使用范例
python·ai·langchain
Elastic 中国社区官方博客4 天前
带有 Elasticsearch 和 Langchain 的 Agentic RAG
大数据·人工智能·elasticsearch·搜索引擎·ai·langchain
写编程的木木5 天前
可能是最强文生图工具:Stable Diffusion 3 超详细测试
人工智能·ai作画·stable diffusion·aigc·embedding
ai_lian_shuo6 天前
三、基于langchain使用Qwen搭建金融RAG问答机器人--检索增强生成
python·金融·langchain·aigc
ai_lian_shuo6 天前
二、基于langchain使用Qwen搭建金融RAG问答机器人--数据清洗和切片
python·金融·langchain·机器人·aigc
lzl20407 天前
【深度学习总结】使用PDF构建RAG:结合Langchain和通义千问
深度学习·langchain·通义千问·qwen·rag
OldGj_8 天前
「LangChain4j入门 — JavaAI程序」
java·ai·langchain·langchain4j