🎊 语义相似度

语义相似度

语义相似度

语义相似度

语义相似度指标评估生成答案与参考(真实)答案之间的语义相似性。其取值范围为0到1,分数越高表示生成答案与真实答案之间的一致性越好。

该指标使用嵌入和余弦相似度来衡量两个答案在语义上的相似程度,这可以为评估生成答案的质量提供有价值的见解。

示例

from openai import AsyncOpenAI

from ragas.embeddings import OpenAIEmbeddings

from ragas.metrics.collections import SemanticSimilarity

# Setup embeddings

client = AsyncOpenAI()

embeddings = OpenAIEmbeddings(model="text-embedding-3-small", client=client)

# Create metric

scorer = SemanticSimilarity(embeddings=embeddings)

# Evaluate

result = await scorer.ascore(

reference="The Eiffel Tower is located in Paris. It has a height of 1000ft.",

response="The Eiffel Tower is located in Paris."

)

print(f"Semantic Similarity Score: {result.value}")

输出

Semantic Similarity Score: 0.8151

同步用法

如果你偏好同步代码,可以使用 .score() 方法来代替 .ascore()

result = scorer.score(

reference="The Eiffel Tower is located in Paris. It has a height of 1000ft.",

response="The Eiffel Tower is located in Paris."

)

计算方法

示例

参考答案:阿尔伯特·爱因斯坦的相对论彻底改变了我们对宇宙的理解。

高相似度答案:爱因斯坦开创性的相对论改变了我们对宇宙的认知。

低相似度答案:艾萨克·牛顿的运动定律极大地影响了经典物理学。

让我们来看看高相似度答案的语义相似度是如何计算的

第一步: 使用指定的嵌入模型将参考答案向量化。

第二步: 使用相同的嵌入模型将生成的答案向量化。

第三步: 计算两个向量之间的余弦相似度。

第四步: 余弦相似度值(0-1)即为最终得分。

旧版指标 API

以下示例使用旧版指标 API 模式。对于新项目,我们建议使用上面显示的基于集合的 API。

弃用时间表

此 API 将在 0.4 版本中被弃用,并在 1.0 版本中被移除。请迁移到上面显示的基于集合的 API。

使用 SingleTurnSample 的示例

from ragas.dataset_schema import SingleTurnSample

from ragas.metrics import SemanticSimilarity

from ragas.embeddings import LangchainEmbeddingsWrapper

sample = SingleTurnSample(

response="The Eiffel Tower is located in Paris.",

reference="The Eiffel Tower is located in Paris. It has a height of 1000ft."

)

scorer = SemanticSimilarity(embeddings=LangchainEmbeddingsWrapper(evaluator_embedding))

await scorer.single_turn_ascore(sample)

输出

0.8151371879226978

2025年11月7日 2025年10月28日 GitHub +1

🎁 相关推荐

「红星」和「牛栏山」谁是二锅头起源?
🎯 365足球规则

「红星」和「牛栏山」谁是二锅头起源?

📅 08-21 👀 2510
电脑游戏怎么全屏 设置游戏全屏方法推荐
🎯 365足球规则

电脑游戏怎么全屏 设置游戏全屏方法推荐

📅 07-30 👀 4259
无花果不能和什么一起吃
🎯 365足球规则

无花果不能和什么一起吃

📅 06-18 👀 1285