> Discover all available pages from the documentation index: https://mastra.zisheng.pro/llms.txt # 内容相似度 Scorer `createContentSimilarityScorer()` 函数衡量两个字符串之间的文本相似度,并通过分数表示二者的匹配程度。它支持配置是否区分大小写以及如何处理空白字符。 ## 参数 `createContentSimilarityScorer()` 函数接受一个 options 对象,其中包含以下属性: **ignoreCase** (`boolean`): 比较字符串时是否忽略大小写差异。 (Default: `true`) **ignoreWhitespace** (`boolean`): 比较字符串时是否规范化空白字符。 (Default: `true`) 此函数返回 MastraScorer 类的实例。有关 `.run()` 方法及其输入/输出的详情,请参阅 [MastraScorer 参考](https://mastra.zisheng.pro/reference/evals/mastra-scorer)。 ## `.run()` 返回值 **runId** (`string`): 本次运行的 id(可选)。 **preprocessStepResult** (`object`): 包含处理后输入和输出的对象:{ processedInput: string, processedOutput: string } **analyzeStepResult** (`object`): 包含相似度的对象:{ similarity: number } **score** (`number`): 相似度分数(0-1),其中 1 表示完全相似。 ## 评分详情 该 Scorer 通过字符级匹配和可配置的文本规范化来评估文本相似度。 ### 评分流程 1. 规范化文本: - 规范化大小写(如果 ignoreCase: true) - 规范化空白字符(如果 ignoreWhitespace: true) 2. 使用 string-similarity 算法比较处理后的字符串: - 分析字符序列 - 对齐单词边界 - 考虑相对位置 - 将长度差异纳入考量 最终分数:`similarity_value * scale` ## 示例 评估预期 Agent 输出和实际 Agent 输出之间的文本相似度: ```typescript import { runEvals } from '@mastra/core/evals' import { createContentSimilarityScorer } from '@mastra/evals/scorers/prebuilt' import { myAgent } from './agent' const scorer = createContentSimilarityScorer() const result = await runEvals({ data: [ { input: 'Summarize the benefits of TypeScript', groundTruth: 'TypeScript provides static typing, better tooling support, and improved code maintainability.', }, { input: 'What is machine learning?', groundTruth: 'Machine learning is a subset of AI that enables systems to learn from data without explicit programming.', }, ], scorers: [scorer], target: myAgent, onItemComplete: ({ scorerResults }) => { console.log({ score: scorerResults[scorer.id].score, groundTruth: scorerResults[scorer.id].groundTruth, }) }, }) console.log(result.scores) ``` 有关 `runEvals` 的更多详情,请参阅 [runEvals 参考](https://mastra.zisheng.pro/reference/evals/run-evals)。 要将此 Scorer 添加到 Agent,请参阅 [Scorer 概览](https://mastra.zisheng.pro/docs/evals/overview)指南。 ### 分数解读 相似度分数介于 0 和 1 之间: - **1.0**:完全匹配,内容几乎相同。 - **0.7 到 0.9**:相似度高,仅在用词或结构上有细微差异。 - **0.4 到 0.6**:相似度中等,整体有所重叠,但存在明显差异。 - **0.1 到 0.3**:相似度低,只有少量共同要素或共同含义。 - **0.0**:毫无相似之处,内容完全不同。 ## 相关内容 - [Completeness Scorer](https://mastra.zisheng.pro/reference/evals/completeness) - [Textual Difference Scorer](https://mastra.zisheng.pro/reference/evals/textual-difference) - [Answer Relevancy Scorer](https://mastra.zisheng.pro/reference/evals/answer-relevancy) - [Keyword Coverage Scorer](https://mastra.zisheng.pro/reference/evals/keyword-coverage)