> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ko/llms.txt # 컨텍스트 회상 채점자 그만큼`createContextRecallScorer()`함수는 검색된 컨텍스트가 실측 참조 답변의 주장을 얼마나 잘 다루고 있는지 평가하는 채점자를 생성합니다. 이는 검색된 컨텍스트에 기인한 실제 주장의 비율을 확인하여 검색 완전성을 측정합니다. 이 채점기에는 정답 참조 답변이 필요하므로 CI 또는 테스트 환경의 레이블 지정 데이터 세트에 적합합니다. 실행에 `groundTruth`가 제공되지 않으면 채점기는 오류를 발생시키는 대신 점수 0을 반환합니다. ## RAG 검색 평가 다음과 같은 경우 RAG 파이프라인에서 검색 완전성을 평가하는 데 적합합니다. - 검색기가 필요한 모든 정보를 가져오는지 확인해야 합니다. - 정답이 알려진 데이터 세트에 라벨을 지정했습니다. - 검색자가 반환하는 것에서 회귀를 포착하고 싶습니다. ## 데이터세트 기반 테스트 선별된 테스트 세트에 대해 평가를 실행할 때 사용합니다. - 정답 레이블이 지정된 질문을 포함하는 CI 파이프라인 - 검색 전략 A/B 테스트 - 적용 범위 평가를 위한 임베딩 Model 벤치마킹 ## 매개변수 **model** (`MastraModelConfig`): 주장 귀속 평가에 사용할 언어 Model입니다. **options** (`ContextRecallMetricOptions`): 채점기의 구성 옵션입니다. `context` 또는 `contextExtractor` 중 하나를 제공해야 합니다. 둘 다 제공하면 실행 입력과 출력이 Agent 형태(`MastraDBMessage[]`)일 때만 `contextExtractor`를 사용하며, 그렇지 않으면 채점기가 `context`를 사용합니다. ## `.run()`보고 **score** (`number`): 0과 scale 사이의 재현율 점수로(기본값 0\~1), 컨텍스트에서 다룬 정답 주장의 비율을 나타냅니다. **reason** (`string`): 컨텍스트에서 발견된 정답 주장과 발견되지 않은 정답 주장에 대한 사람이 읽기 쉬운 설명입니다. ## 채점 세부정보 ### 소유권 주장 귀속 Context Recall은 2단계 LLM 평가와 결정론적 점수 계산을 사용합니다. 1. **청구서 추출**: 실측 답변은 원자적 주장으로 분해됩니다. 2. **속성 확인**: 각 클레임은 지원을 위해 검색 컨텍스트와 비교하여 확인됩니다. 그런 다음 점수는 전체 청구에 대한 귀속 청구의 비율에 규모를 곱하여 계산됩니다. ### 채점 공식 ```text Context Recall = attributed_claims / total_claims × scale Where: - attributed_claims = number of ground-truth claims supported by the context - total_claims = total number of claims extracted from the ground truth - Attribution is binary: a claim is either supported (yes) or not (no) ``` ### 점수 해석 이 범위는 기본 `scale` 값인 1을 가정합니다. 사용자 지정 scale을 사용할 때는 그에 맞게 곱하세요. - **0.9-1.0**: 뛰어난 기억력, 맥락이 거의 모든 사실 주장을 다루고 있습니다. - **0.7-0.8**: 기억력이 좋다. 대부분의 청구가 처리되지만 약간의 차이가 있습니다. - **0.4-0.6**: 중간 정도의 회상, 맥락에서 상당한 정보가 누락됨 - **0.1-0.3**: 기억력이 좋지 않음, 대부분의 근거 진실 주장이 맥락에서 발견되지 않음 - **0.0**: 회상 없음, 실제 주장 주장 중 맥락에 맞는 내용 없음 ### 이유분석 이유 필드는 다음을 설명합니다. - 해당 맥락에서 어떤 실측 주장이 발견되었는지 - 누락된 주장과 존재하는 정보 격차 - 귀속된 주장을 지원하는 특정 컨텍스트 부분 ### 최적화 통찰력 결과를 사용하여 다음을 수행합니다. - **검색 개선**: 검색자가 놓친 정보 유형을 식별합니다. - **청크 크기 조정**: 청크에 실측 주장을 다룰 수 있을 만큼 충분한 세부정보가 포함되어 있는지 확인하세요. - **임베딩 평가**: 더 나은 정보 적용 범위를 위해 다양한 임베딩 Model을 테스트합니다. - **지식 기반 확장**: 자주 누락된 청구를 다루는 문서를 추가합니다. ### 계산 예 근거 진실: "아인슈타인은 1879년에 태어났습니다. 그는 상대성 이론을 개발했습니다. 그는 노벨상을 받았습니다." 추출된 주장: 3 - "아인슈타인은 1879년에 태어났다" → 귀속됨(문맥상 생년월일이 언급됨) - "아인슈타인이 상대성 이론을 개발했다" → 귀속됨(상대성이론을 다루는 문맥) - "아인슈타인이 노벨상을 받았습니다" → 귀속되지 않음(문맥상 노벨상이 언급되지 않음) 회상 = 2/3 = 0.67 ## 득점자 구성 ### 동적 컨텍스트 추출 ```typescript const scorer = createContextRecallScorer({ model: 'openai/gpt-5.6-sol', options: { contextExtractor: (input, output) => { const query = input?.inputMessages?.[0]?.content || '' const searchResults = vectorDB.search(query, { limit: 10 }) return searchResults.map(result => result.content) }, scale: 1, }, }) ``` ### 정적 컨텍스트 평가 ```typescript const scorer = createContextRecallScorer({ model: 'openai/gpt-5.6-sol', options: { context: [ 'Document 1: Einstein was born on 14 March 1879 in Ulm, Germany.', 'Document 2: Einstein published the theory of special relativity in 1905.', 'Document 3: Einstein moved to the United States in 1933.', ], }, }) ``` ## 예 레이블이 지정된 데이터 세트에 대해 RAG 검색 완전성을 평가합니다. ```typescript import { runEvals } from '@mastra/core/evals' import { createContextRecallScorer } from '@mastra/evals/scorers/prebuilt' import { myAgent } from './agent' const scorer = createContextRecallScorer({ model: 'openai/gpt-5.6-sol', options: { contextExtractor: (input, output) => { // Extract context from tool invocation results in the agent output return output .filter(msg => msg?.role === 'assistant') .flatMap(msg => msg?.content?.toolInvocations ?? []) .filter((tool: any) => tool.state === 'result') .map((tool: any) => JSON.stringify(tool.result)) }, }, }) const result = await runEvals({ data: [ { input: 'What are the health benefits of green tea?', groundTruth: 'Green tea contains antioxidants that reduce inflammation, L-theanine that improves focus, and catechins that boost metabolism.', }, { input: 'How does photosynthesis work?', groundTruth: 'Photosynthesis converts sunlight into chemical energy using chlorophyll in chloroplasts, producing glucose and oxygen from carbon dioxide and water.', }, ], scorers: [scorer], target: myAgent, onItemComplete: ({ scorerResults }) => { console.log({ score: scorerResults[scorer.id].score, reason: scorerResults[scorer.id].reason, }) }, }) console.log(result.scores) ``` `runEvals`에 관한 자세한 내용은 [runEvals 레퍼런스](https://mastra.zisheng.pro/ko/reference/evals/run-evals)를 참조하세요. 이 득점자를 Agent에 추가하려면 다음을 참조하세요.[Scorers overview](https://mastra.zisheng.pro/ko/docs/evals/overview) guide. ## 컨텍스트 정밀도와의 비교 귀하의 필요에 맞는 채점자를 선택하십시오: | 사용 사례 | 컨텍스트 재현율 | 컨텍스트 정밀도 | | -------------------------------------------------------------------- | --------- | --------------- | | **측정 대상** | 정답의 적용 범위 | 검색된 청크의 관련성 | | **방향** | 정답 → 컨텍스트 | 컨텍스트 → 정답 | | **위치 민감 여부** | 아니요 | 예(앞쪽 배치에 가점 부여) | | **정답 필요 여부** | 예 | 예 | | **감지하는 실패 유형** | 누락된 정보 | 관련 없는 노이즈 | | 검색 품질을 완벽하게 파악하려면 두 가지를 함께 사용하세요. 정밀도는 맥락에서 정크를 포착하고, 재현은 공백을 포착합니다. | | | ## 관련된 - [상황별 정밀 득점자](https://mastra.zisheng.pro/ko/reference/evals/context-precision): 검색된 컨텍스트가 관련성이 있고 순위가 높은지 평가합니다. - [컨텍스트 관련성 점수 측정기](https://mastra.zisheng.pro/ko/reference/evals/context-relevance): 컨텍스트 사용 및 품질을 평가합니다. - [성실성 득점자](https://mastra.zisheng.pro/ko/reference/evals/faithfulness): 문맥에 따른 답변 근거성을 측정합니다. - [맞춤 채점자](https://mastra.zisheng.pro/ko/docs/evals/custom-scorers): 나만의 평가 지표 만들기