跳至主要內容

忠實度評分器

createFaithfulnessScorer() 函式會比較 LLM 輸出與提供的上下文,以評估輸出的事實正確性。它會從輸出中擷取主張,並根據上下文進行驗證,因此對衡量 RAG 管線回應的可靠性至關重要。

參數
「參數」的直接連結

createFaithfulnessScorer() 函式接受包含下列屬性的單一選項物件:

model:

LanguageModel
用於評估忠實度的模型設定。

context:

string[]
用於驗證輸出主張的上下文區塊陣列。

scale:

number
= 1
最高分數值。最終分數會正規化至此範圍。

此函式會傳回 MastraScorer 類別的執行個體。.run() 方法接受與其他評分器相同的輸入(請參閱 MastraScorer 參考文件),但傳回值會包含下方所述的 LLM 專用欄位。

.run() 傳回值
「run-returns」的直接連結

runId:

string
執行 ID(選填)。

preprocessStepResult:

string[]
從輸出中擷取的主張陣列。

preprocessPrompt:

string
在預處理步驟傳送給 LLM 的提示詞(選填)。

analyzeStepResult:

object
包含判定的物件:{ verdicts: Array<{ verdict: 'yes' | 'no' | 'unsure', reason: string }> }

analyzePrompt:

string
在分析步驟傳送給 LLM 的提示詞(選填)。

score:

number
介於 0 與所設 scale 之間的分數,表示上下文支援的主張比例。

reason:

string
分數的詳細說明,包括哪些主張獲得支援、與上下文矛盾或標記為不確定。

generateReasonPrompt:

string
在 generateReason 步驟傳送給 LLM 的提示詞(選填)。

評分詳情
「評分詳情」的直接連結

此評分器會根據所提供的上下文驗證主張,以評估忠實度。

評分流程
「評分流程」的直接連結

  1. 分析主張與上下文:
    • 擷取所有主張(事實性與推測性主張)
    • 根據上下文驗證每項主張
    • 指定下列三種判定之一:
      • "yes" - 上下文支援此主張
      • "no" - 此主張與上下文矛盾
      • "unsure" - 無法驗證此主張
  2. 計算忠實度分數:
    • 計算獲得支援的主張數量
    • 除以主張總數
    • 依設定範圍縮放

最終分數:(supported_claims / total_claims) * scale

分數解讀
「分數解讀」的直接連結

忠實度分數介於 0 到 1:

  • 1.0:所有主張皆正確,並有上下文直接支援。
  • 0.7 到 0.9:大多數主張正確,只有少量新增或遺漏。
  • 0.4 到 0.6:部分主張有上下文支援,但其他主張無法驗證。
  • 0.1 到 0.3:大多數內容不正確或缺乏支援。
  • 0.0:所有主張皆為錯誤,或與上下文矛盾。

範例
「範例」的直接連結

評估 Agent 回應對所提供上下文的忠實度:

src/example-faithfulness.ts
import { runEvals } from '@mastra/core/evals'
import { createFaithfulnessScorer } from '@mastra/evals/scorers/prebuilt'
import { myAgent } from './agent'

// Context is typically populated from agent tool calls or RAG retrieval
const scorer = createFaithfulnessScorer({
model: 'openai/gpt-5.6-sol',
})

const result = await runEvals({
data: [
{
input: 'Tell me about the Tesla Model 3.',
},
{
input: 'What are the key features of this electric vehicle?',
},
],
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,請參閱評分器概觀指南。