答案相關性評分器
createAnswerRelevancyScorer() 函式接受包含下列屬性的單一選項物件:
參數「參數」的直接連結
model:
LanguageModel
用於評估相關性的模型設定。
uncertaintyWeight:
number
= 0.3
評分時給予 'unsure' 判定的權重(0-1)。
scale:
number
= 1
最高分數值。
此函式會傳回 MastraScorer 類別的執行個體。.run() 方法接受與其他評分器相同的輸入(請參閱 MastraScorer 參考文件),但傳回值會包含下方所述的 LLM 專用欄位。
.run() 傳回值「run-returns」的直接連結
runId:
string
執行 ID(選填)。
score:
number
相關性分數(0 到 scale,預設為 0-1)
preprocessPrompt:
string
在預處理步驟傳送給 LLM 的提示詞(選填)。
preprocessStepResult:
object
包含擷取陳述的物件:{ statements: string[] }
analyzePrompt:
string
在分析步驟傳送給 LLM 的提示詞(選填)。
analyzeStepResult:
object
包含結果的物件:{ results: Array<{ result: 'yes' | 'unsure' | 'no', reason: string }> }
generateReasonPrompt:
string
在產生理由步驟傳送給 LLM 的提示詞(選填)。
reason:
string
分數的說明。
評分詳情「評分詳情」的直接連結
此評分器會比對查詢與答案來評估相關性,並考量完整性與詳細程度,但不考量事實正確性。
評分流程「評分流程」的直接連結
- 陳述預處理:
- 將輸出拆分為有用的陳述,同時保留上下文。
- 相關性分析:
- 每項陳述會評估為:
- "yes":直接相符時給予完整權重
- "unsure":大致相符時給予部分權重(預設:0.3)
- "no":內容不相關時給予零權重
- 每項陳述會評估為:
- 分數計算:
((direct + uncertainty * partial) / total_statements) * scale
分數解讀「分數解讀」的直接連結
相關性分數介於 0 到 1:
- 1.0:回應提供相關且聚焦的資訊,完整回答查詢。
- 0.7 到 0.9:回應大致回答查詢,但可能包含少量無關內容。
- 0.4 到 0.6:回應僅回答部分查詢,且混雜相關與無關資訊。
- 0.1 到 0.3:回應只包含極少量相關內容,且大幅偏離查詢意圖。
- 0.0:回應完全不相關,未回答查詢。
範例「範例」的直接連結
評估 Agent 在不同情境下的回應相關性:
src/example-answer-relevancy.ts
import { runEvals } from '@mastra/core/evals'
import { createAnswerRelevancyScorer } from '@mastra/evals/scorers/prebuilt'
import { myAgent } from './agent'
const scorer = createAnswerRelevancyScorer({ model: 'openai/gpt-5.6-sol' })
const result = await runEvals({
data: [
{
input: 'What are the health benefits of regular exercise?',
},
{
input: 'What should a healthy breakfast include?',
},
{
input: 'What are the benefits of meditation?',
},
],
scorers: [scorer],
target: myAgent,
onItemComplete: ({ scorerResults }) => {
console.log({
score: scorerResults[scorer.id].score,
reason: scorerResults[scorer.id].reason,
})
},
})
console.log(result.scores)
如需 runEvals 的更多詳細資訊,請參閱 runEvals 參考文件。
若要將此評分器加入 Agent,請參閱評分器概觀指南。