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

相关推荐
SQLplusDB5 小时前
Oracle 23ai Vector Search 系列之3 集成嵌入生成模型(Embedding Model)到数据库示例,以及常见错误
数据库·oracle·embedding
牛奶2 天前
前端学AI:LangGraph学习-基础概念
前端·langchain·ai编程
桜吹雪2 天前
手把手教你在浏览器中处理流式传输(Event Stream/SSE)
前端·langchain·openai
herogus丶3 天前
【LLM】Elasticsearch作为向量库入门指南
elasticsearch·docker·langchain
处女座_三月3 天前
大模型架构记录13【hr agent】
人工智能·python·深度学习·langchain
SanMu三木4 天前
LangChain 基础系列之 Prompt 工程详解:从设计原理到实战模板
langchain·prompt
echola_mendes5 天前
LangChain 结构化输出:用 Pydantic + PydanticOutputParser 驯服 LLM 的“自由发挥”
服务器·前端·数据库·ai·langchain
素雪风华5 天前
大模型LLMs框架Langchain之工具Tools
langchain·大模型·tools·llms·langchain工具包
硅谷神农5 天前
LangChain 框架相关概念
人工智能·langchain
小青柑-6 天前
LangChain 文档加载完全指南:从PDF到YouTube的多样化数据源处理
langchain·pdf