Embedding距离评估
为了衡量预测和参考标签字符串之间的语义相似性(或不相似性),您可以使用向量距离度量两个嵌入表示之间的embedding_distance
评估器。[1]
注意:这返回一个距离分数,意味着数字越低,预测与参考的嵌入表示越相似。
请查看参考文档以获取有关EmbeddingDistanceEvalChain的更多信息。
from langchain.evaluation import load_evaluator
evaluator = load_evaluator("embedding_distance")
API参考:
- load_evaluator 来自
langchain.evaluation
evaluator.evaluate_strings(prediction="I shall go", reference="I shan't go")
{'score': 0.0966466944859925}
evaluator.evaluate_strings(prediction="I shall go", reference="I will go")
{'score': 0.03761174337464557}
选择距离度量
默认情况下,评估器使用余弦距离。如果需要,您可以选择其他距离度量。
from langchain.evaluation import EmbeddingDistance
list(EmbeddingDistance)
API参考:
- EmbeddingDistance 来自
langchain.evaluation
[<EmbeddingDistance.COSINE: 'cosine'>,
<EmbeddingDistance.EUCLIDEAN: 'euclidean'>,
<EmbeddingDistance.MANHATTAN: 'manhattan'>,
<EmbeddingDistance.CHEBYSHEV: 'chebyshev'>,
<EmbeddingDistance.HAMMING: 'hamming'>]
# 您可以通过枚举或原始Python字符串加载
evaluator = load_evaluator(
"embedding_distance", distance_metric=EmbeddingDistance.EUCLIDEAN
)
选择要使用的嵌入
构造函数默认使用OpenAI
嵌入,但您可以根据需要进行配置。下面使用huggingface本地嵌入。
from langchain.embeddings import HuggingFaceEmbeddings
embedding_model = HuggingFaceEmbeddings()
hf_evaluator = load_evaluator("embedding_distance", embeddings=embedding_model)
API参考:
- HuggingFaceEmbeddings 来自
langchain.embeddings
hf_evaluator.evaluate_strings(prediction="I shall go", reference="I shan't go")
{'score': 0.5486443280477362}
hf_evaluator.evaluate_strings(prediction="I shall go", reference="I will go")
{'score': 0.21018880025138598}
1. 注意:在语义相似性方面,这通常比旧的字符串距离度量(例如StringDistanceEvalChain中的度量)产生更好的结果,尽管它往往比直接使用LLM的评估器(例如QAEvalChain或LabeledCriteriaEvalChain)不太可靠。