如何使用LangChain的load_evaluator()对接本地LLM Ollama?
LangChain load_evaluator 对接本地Ollama模型的适配问题
问题场景
尝试用LangChain的load_evaluator()对接本地Ollama模型时,部分评估器无法正常运行,代码示例如下:
from langchain.evaluation import load_evaluator from langchain.chat_models import ChatOllama from langchain.llms import Ollama from langchain.embeddings import HuggingFaceEmbeddings
# 可正常运行的代码 evaluator = load_evaluator("labeled_score_string", llm=ChatOllama(model="llama2")) evaluator = load_evaluator("pairwise_string", llm=Ollama(model="llama2"))
# 无法运行的代码 evaluator = load_evaluator("pairwise_embedding_distance", llm=HuggingFaceEmbeddings()) evaluator = load_evaluator("pairwise_embedding_distance", llm=Ollama(model="llama2"))
核心原因
不同类型的评估器对传入的模型类型要求不同,且参数名存在差异:
labeled_score_string、pairwise_string这类评估器依赖大语言模型的文本理解能力,因此需要传入llm参数,接受ChatOllama或Ollama实例。pairwise_embedding_distance是基于向量相似度的评估器,不需要大语言模型,而是需要嵌入模型(Embeddings),且参数名应为embeddings而非llm。
修正后的代码
方法1:使用HuggingFaceEmbeddings
from langchain.embeddings import HuggingFaceEmbeddings # 正确传入embeddings参数 evaluator = load_evaluator("pairwise_embedding_distance", embeddings=HuggingFaceEmbeddings())
方法2:使用Ollama内置的嵌入模型
如果Ollama部署的模型支持嵌入功能,可以使用OllamaEmbeddings:
from langchain.embeddings import OllamaEmbeddings evaluator = load_evaluator("pairwise_embedding_distance", embeddings=OllamaEmbeddings(model="llama2"))
各评估器适配模型总结
- 文本类评估器(labeled_score_string、pairwise_string):需传入
llm参数,支持ChatOllama/Ollama实例。 - 向量距离类评估器(pairwise_embedding_distance):需传入
embeddings参数,支持HuggingFaceEmbeddings/OllamaEmbeddings等嵌入模型实例。
内容的提问来源于stack exchange,提问作者Sergey Agapov
相关产品推荐
相关产品推荐

