평가 실행과 결과 확인
Struct4Search 평가는 문서 1건부터 전체 2,567문서까지 네 단계로 실행합니다. 처음 실행하거나 환경·모델·파이프라인을 변경했다면 작은 범위부터 차례대로 확인합니다.
- 문서 1건·5건 실행은 인덱싱부터 검색·답변·Citation·HTTP 응답까지 정상적으로 연결되는지 확인하는 동작 검증입니다.
- 100문서·100질의·2,567문서·200질의 실행은 전체 질의를 실행하고 검색·답변 품질 지표를 계산하는 평가입니다.
평가 자료의 질문과 정답 구성은 평가셋, GPU·모델 서버·OpenSearch·PostgreSQL 준비 방법은 설치 요구사항에서 확인합니다.
실행 범위 선택
처음 실행하는 경우에는 다음 순서로 진행합니다.
| 단계 | 실행 범위 | 명령 | 실행하는 경우 |
|---|---|---|---|
| 1 | 문서 1건·질문 1건 | struct4search-smoke-e2e | 설치와 모델·DB·검색·웹 서비스 연결을 처음 확인할 때 |
| 2 | 문서 5건·질문 5건 | struct4search-five-document-e2e | 여러 문서를 연속으로 처리해도 같은 경로가 정상인지 확인할 때 |
| 3 | 문서 100건·질문 100건 | struct4search-final-100-100-e2e | 파이프라인·모델·프롬프트·검색 설정 변경 후 회귀를 확인할 때 |
| 4 | 문서 2,567건·질문 200건 | struct4search-final-full-2567-200-e2e | 전체 검색 대상과 최종 평가셋으로 배포 전 결과를 확인할 때 |
문서 1건이 실패한 상태에서 더 큰 범위를 실행하면 원인을 좁히기 어렵습니다. 처음 설치했거나 실행 환경이 달라졌다면 1건 → 5건 → 100건 → 전체 순서로 확인합니다.
실행 전에 준비하기
네 명령은 모두 실제 문서 인덱싱, 검색, 답변과 Citation 생성을 실행합니다. GPU 모델 서버와 외부 서비스가 준비된 환경에서 저장소 루트로 이동한 뒤 실행합니다.
다른 서버에서 실행하는 경우에는 평가 자료와 결과를 저장할 위치를 환경변수로 지정합니다.
export S4S_ARTIFACT_TEST_FIXTURE_ROOT=/absolute/path/to/test-fixtures
export S4S_ARTIFACT_PRODUCTION_ROOT=/absolute/path/to/production-artifacts
export S4S_ARTIFACT_EVALUATION_ROOT=/absolute/path/to/full-evaluation-set
export S4S_ARTIFACT_CONTROL_ROOT=/absolute/path/to/e2e-results
mkdir -p "$S4S_ARTIFACT_CONTROL_ROOT"
| 환경변수 | 사용하는 실행 | 용도 |
|---|---|---|
S4S_ARTIFACT_TEST_FIXTURE_ROOT | 문서 1건·5건·100건 | 고정 검증 문서와 질문 |
S4S_ARTIFACT_PRODUCTION_ROOT | 문서 2,567건 | 전체 원본 문서 목록 |
S4S_ARTIFACT_EVALUATION_ROOT | 문서 2,567건 | 최종 평가 질문 200건 |
S4S_ARTIFACT_CONTROL_ROOT | 모든 실행 | 실행 기록과 결과 저장 위치 |
앞의 세 자료 디렉터리에는 실행 전에 실제 파일이 들어 있어야 합니다. S4S_ARTIFACT_CONTROL_ROOT는 빈 디렉터리로 만들 수 있으며, 각 실행 결과는 그 아래의 새 디렉터리에 저장됩니다.
공통 결과 확인 방법
각 명령이 끝나면 터미널 마지막 줄에 다음 값이 JSON으로 출력됩니다.
status: 실행의 최종 상태run_id: 이번 실행의 식별자receipt_path: 실행 설정과 최종 상태를 기록한 JSON 경로output_root: 상세 결과 파일이 저장된 디렉터리
출력된 경로를 그대로 지정합니다.
RECEIPT=/path/printed/as/receipt_path
RUN_ROOT=/path/printed/as/output_root
실행 성공과 품질 결과 구분하기
100문서와 전체 문서 평가는 모든 질의를 가능한 한 끝까지 실행한 뒤 결과를 집계합니다. 따라서 실행 성공과 답변 품질을 따로 확인해야 합니다.
| 구분 | 의미 | 확인할 값 |
|---|---|---|
| 실행 결과 | API 호출, 응답 형식, 인덱스, 검색·답변·Citation 경로가 정상적으로 완료됐는지 | status, execution_status, documents_failed, query_execution_failures |
| 품질 결과 | 필요한 문서를 찾고 정답에 맞는 답변을 생성했는지 | query_quality_misses, retrieval, 질문별 검색 점수, 답변 점수 |
- 답변이 없거나 틀렸거나 정답 문서를 찾지 못했지만 요청과 응답 자체는 정상인 경우에는
query_quality_misses에 기록됩니다. 이 항목은 실행 오류가 아니며 전체 검색·답변 지표에 포함됩니다. - API 호출 실패, 응답 형식 오류, 다른 인덱스 사용 또는 검색 근거 밖 Citation은
query_execution_failures에 기록되며 전체 실행을 실패 처리합니다. EVALUATION_RESULTS.json의status: PASS는 질의 실행과 결과 집계가 완료됐다는 뜻입니다. 모든 답변이 정답이라는 뜻은 아닙니다.
1. 문서 1건 실행
설치와 서비스 연결을 처음 확인할 때 실행합니다. 고정 문서 1건을 새 검색 공간에 인덱싱하고, 실제 질문 1건에 대한 답변과 Citation을 생성한 뒤 HTTP 경로까지 확인합니다.
실행
struct4search-smoke-e2e
결과 확인
jq '{
status,
run_id,
query: .query_and_web.query_request,
claims: .query_and_web.claims,
cited_unit_ids: .query_and_web.cited_unit_ids
}' "$RECEIPT"
jq '{
status,
documents_total,
documents_complete,
documents_failed
}' "$RUN_ROOT/FINAL_REPORT.json"
정상이라면 다음 조건을 만족합니다.
- 실행 기록의
status가PASS입니다. - 문서 1건이 완료되고 실패 문서가 없습니다.
claims에 생성된 답변 문장이 있습니다.cited_unit_ids에 답변 문장을 뒷받침한 원문 ID가 있습니다.
문서가 완료되지 않았다면 FINAL_REPORT.json에서 실패 단계를 먼저 확인합니다. 문서는 완료됐지만 답변이나 Citation이 없다면 QUERY_RESULT_DIAGNOSTIC.json에서 검색 결과와 Reader 응답을 확인합니다.
2. 문서 5건 실행
문서 1건은 통과했지만 여러 문서를 연속으로 처리할 때도 같은 경로가 정상인지 확인할 때 실행합니다. 고정 문서 5건을 함께 인덱싱하고, 문서마다 연결된 질문 1건씩 총 5건을 실행합니다.
실행
struct4search-five-document-e2e
결과 확인
jq '{
status,
run_id,
successful_query_count: .queries_and_web.successful_query_count,
failed_query_ids: .queries_and_web.failed_query_ids
}' "$RECEIPT"
jq '{
status,
documents_total,
documents_complete,
documents_failed
}' "$RUN_ROOT/FINAL_REPORT.json"
정상이라면 다음 조건을 만족합니다.
- 문서 5건이 모두 완료되고 실패 문서가 없습니다.
successful_query_count가5입니다.failed_query_ids가 빈 배열입니다.