검색 실험 골든셋 40문항
정답지 계보의 첫 판 — 수치는 현행이 아니다
현행 정답지는 200문항 골든셋 v5다 → 골든셋 · 골든셋 200문항 제작 여기 성적(36~40문항 기준)은 인용하지 말 것 — 164문항에서 부호까지 뒤집힌 것이 있다. 남긴 이유: 40문항 전체 목록과 실패 4건의 원인 분석이 여기에만 있다. 검색 실험 → 검색 실험 설계 (4모델·BM25)
40문항을 사람이 전수 라벨링하고 감사한 기록. 실험 결과는 검색 개선, 사전등록 설계는 [검색 실험 구도], 여기서 드러난 데이터 손상은 인덱스 데이터 손상 진단.
| 라벨링 | 40문항 (기존 30 · 어휘형 10) |
| 측정 대상 | 35문항 / 정답 청크 72개 |
| 제외 | 검색 미검출 4 · 검색 대상 아님 1 |
| 최대 수확 | 실패 4건의 원인을 실측으로 규명 → 병목은 후보 깊이 |
라벨링 결과
| 상태 | 수 | 뜻 |
|---|---|---|
| ✅ 정상 | 35 | 측정에 사용 |
| ❌ 검색 미검출 | 4 | 문서엔 답이 있으나 후보 30~40개에 못 들어옴 |
| ➖ 검색 대상 아님 | 1 | 본문에 답이 없고 data_list.csv에만 존재 (라우터 direct_meta 몫) |
정답 개수 분포: 1개 12문항 · 2개 14 · 3개 7 · 5개 1 · 6개 1
어휘형 10문항은 이번 실험용 신규 작성분이다. 고유번호·규격·법령처럼 임베딩이 뭉개기 쉬운 표층 문자열을 묻는다. 기존 30문항은 팀 확장 골든셋 42문항에서 검색이 실제로 도는 것만 추렸다.
실패 4건 — 무엇을 답했어야 했고 왜 못 했나
후보는 dense·BM25 각 top-20까지만 가져온다. 아래 4건은 정답이 그 안에 못 들어왔다.
각 건마다 세 가지를 쟀다 — 실제 질문 그대로 넣은 BM25, 핵심어만 남긴 BM25, dense top-100.
1. ENDURA-5500은 어떤 공정 설비인가
답했어야 할 것 — TSP10 | SPUTTER | AMAT | ENDURA-5500 | RF Etch/Ti/MOCVD TiN/Al/TiN | SECS | 2 (설비 목록 표, 165토큰)
| 검색 | 정답 순위 |
|---|---|
| BM25 (질문 26토큰 전체) | 160위 |
BM25 (ENDURA-5500만) | 2위 |
| dense (top-100) | 23위 |
ENDURA는 30,002청크 중 2개에만 있는 희귀어다(IDF 9.39). 그런데 BM25는 질문의 모든 토큰 점수를 더하므로, 설비(질문에 3회)·시스템·구축 같은 흔한 단어를 잔뜩 가진 청크가 합계에서 앞선다.
정답 청크의 점수 자체는 짧은 질문일 때와 똑같이 17.34였다. 점수가 낮아진 게 아니라 다른 청크가 위로 올라왔다.
2. RFID 리더가 지원해야 하는 프로토콜 표준
답했어야 할 것 — • Protocols : EPC C1G2 / ISO 18000-6C (장비 사양 표, 287토큰)
| 검색 | 정답 순위 |
|---|---|
| BM25 (질문 29토큰 전체) | 264위 |
BM25 (EPC C1G2 ISO 18000-6C만) | 2위 |
| dense (top-100) | 94위 |
1번과 같은 희석이 주원인. 여기에 길이 감점이 겹친다 — 287토큰은 평균(134)의 두 배가 넘어 BM25가 34%를 깎는다(b=0.75). 다만 감점이 없어도 top-20에는 못 들었을 것이라 부차적이다.
3. BIT 유형별 수량
답했어야 할 것 — 소형 쉘터형 50대 · 소형 독립형 30대 · 중형 쉘터형 38대 · 중형 독립형 4대 · 대형 쉘터형 8대 (사업범위 표, 113토큰)
| 검색 | 정답 순위 |
|---|---|
| BM25 (질문 22토큰 전체) | 7,406위 |
BM25 (소형 쉘터형 … 수량만) | 4위 |
| dense (top-100) | 35위 |
질문은 “유형별 수량”인데 문서는 “도입장비 수량”이라 쓴다. 결정적 단어가 문서에 아예 없으니 BM25가 기댈 곳이 없다. 나머지 토큰(울산·버스정보시스템·구축)은 그 문서 418청크 전체에 널려 있어 변별력이 0이다.
4. 한의학연구원이 새로 구축해야 하는 업무 영역
답했어야 할 것 — | 신규구축 | 1. 기관생명윤리… | 동물실험… (사업범위 표, 211토큰)
| 검색 | 정답 순위 |
|---|---|
| BM25 (질문 24토큰 전체) | 18,254위 |
BM25 (신규구축 기관생명윤리 동물실험만) | 1위 |
| dense (top-100) | 100위 밖 |
어휘 불일치가 가장 심하다. 질문의 “새로 구축” ↔ 문서의 “신규구축”, “업무 영역”은 문서에 한 번도 안 나온다. 4건 중 유일하게 dense도 100위 밖이라, 후보를 깊게 파도 안 잡히는 사례다.
교훈 A — 검색에 대해
① 주범은 토크나이저가 아니라 긴 질문이다
처음엔 EPC C1G2 → ['EPC','C','1','G','2'] 분해가 원인이라고 봤으나 틀렸다. 조각난 ENDURA도 IDF 9.39의 훌륭한 희귀어였고, 핵심어만 넣으면 4건 모두 1~4위로 올라온다.
진짜 문제는 BM25가 질문의 모든 토큰 점수를 더한다는 것. 자연어 질문 2029토큰 중 결정적인 건 13개고, 나머지 흔한 단어가 합계를 지배한다.
손댈 곳은
tokenize_ko가 아니라 쿼리 전처리다. 저IDF 토큰을 BM25 쿼리에서 빼거나 고IDF에 가중치를 준다. → 변형B′
② 후보 깊이(top-20)가 병목이다 — 가장 싸게 고칠 수 있다
dense 순위가 23위 · 94위 · 35위다. 셋은 후보를 40~100까지 넓히기만 해도 잡힌다.
RERANK_CANDIDATE_K = 20 ← 지금 값. 23위 청크를 버리고 있다
설정 한 줄이고, 리랭커에게 정답을 볼 기회를 준다. 리랭커의 존재 이유가 여기 있다 — 후보를 넓히면 정밀도가 떨어지는데 그걸 되살리는 게 리랭커다. → 변형 E
③ 표에서는 dense가 약하고 BM25가 강하다
정답 청크 72개를 표/줄글로 나눠 순위를 쟀다.
| 정답 청크 | dense 중앙값 | dense top-20 | BM25 중앙값 | BM25 top-20 |
|---|---|---|---|---|
| 표 (27개) | 10위 | 70% | 10위 | 70% |
| 줄글 (45개) | 4위 | 87% | 12위 | 64% |
dense는 표에서 확연히 약하다 — 줄글 4위가 표에서 10위, 진입률 87%가 70%로. 파이프·구분선이 임베딩을 흐린다. 반면 BM25는 표에서 dense와 대등하고 진입률은 오히려 앞선다. 표에 든 고유번호·규격 같은 희귀어 이득이 길이 감점을 상쇄하고 남는다.
하이브리드가 이득을 낼 지점이 여기다. 그래서 결과는 표 문항 / 줄글 문항을 나눠 봐야 한다.
길이 감점은 실재하지만 주범은 아니다. BM25는 평균(134토큰) 대비 287토큰에 66%, 500토큰에 45%만 준다. RFID 사양표가 이 손해를 봤지만, 감점을 없애도 264위 → 100~150위라 top-20에는 못 든다.
④ 어휘 불일치는 검색으로 못 푼다
“새로 구축” ↔ “신규구축”, “업무 영역” ↔ 부재. dense도 BM25도 실패했고 후보를 넓혀도 안 잡힌다. 쿼리 확장이나 표 문장화 같은 다른 층의 대응이 필요하다.
⑤ 원인 추정은 반드시 실측으로 검증할 것
이 절의 결론은 두 번 뒤집혔다. “토크나이저가 문자열을 부순다” → “흔한 단어가 희석한다” → “후보 깊이가 병목”. IDF 실측과 순위 재현이 없었으면 엉뚱한 곳(토크나이저)을 고칠 뻔했다.
교훈 B — 평가 데이터를 만드는 일에 대해
① 라벨은 사람도 기계도 틀린다
사람은 300자 미리보기 절단과 깨진 문자(楴䵴)에 걸려 2건을 놓쳤다. 자동 채점은 표기 차이(40,000천원 ↔ 40,000,000원)와 짧은 답(“4점이다”)에서 37건 중 3건(8%)을 오판했다. 원문 대조 감사를 반드시 거칠 것.
② 도구에 문서명이 없으면 타 문서 청크가 섞인다
검색에 doc_id 필터가 없어 후보에 타 사업 청크가 들어오는데, 화면에 문서명이 없어 정답에 3건이 혼입됐다. 전수 감사로 제거.
③ 검색으로 답할 수 없는 문항이 섞인다
마감일·사업금액처럼 data_list.csv에만 있는 값은 라우터 direct_meta의 몫이다. 검색 실험 모수에서 분리해야 한다(실측 1건).
④ 구분 불가능한 중복 청크 — 지금은 안 터졌지만 감시 대상
같은 형식의 표가 여러 벌 있는 문서에서 잘린 뒤 조각들이 거의 같아진다. 울산 BIT 사양표가 대표적이다.
후보 25 (::0054) 냉각 FAN(최소 2개이상) … 서지보호기 2P 40kA … ← 소형
후보 26 (::0057) 냉각 FAN(최소 2개이상) … 서지보호기 2P 40kA … ← 중형A
후보 27 (::0060) 냉각 FAN(최소 2개이상) … 서지보호기 2P 40kA … ← 중형B
후보 28 (::0063) 냉각 FAN(최소 2개이상) … 서지보호기 2P 40kA … ← 대형
어느 타입인지는 앞 조각에만 적혀 있다. 리랭커 입력은 (질문, 그 청크 텍스트) 한 쌍뿐이라 앞 조각을 볼 수 없고, 넷을 구분하지 못한다.
다만 실측하니 지금은 문제가 아니다.
| 실측 | 문항 |
|---|---|
| 후보에 중복 청크가 있는 문항 | 19 |
| 그중 정답이 중복 무리에 낀 문항 | 1 |
| 그중 정답이 전부 중복 무리인 문항 | 0 |
중복은 대부분 오답 쪽에 몰려 있고, 오답끼리 헷갈리는 건 정답 선택에 지장이 없다. 위 BIT 사례도 정답 두 개 중 앞 조각(도입장비 수량 ▹ 소형 쉘터형 : 50대)이 유일한 텍스트라 리랭커가 정확히 짚는다.
왜 남겨두나 — 문서가 늘거나 유사 양식 RFP가 쌓이면 정답이 중복 무리에 들어갈 수 있다. 조건(같은 양식 표 다수 + 표 절단 + 뒤 조각 식별자 부재)은 이미 갖춰져 있고, 그때는 리랭커가 손쓸 방법이 없다.
대비책 — 리랭커 입력을 청크 본문 대신
parent_text(표 전문, 후보의 36%가 보유)로 바꾸면 표 머리의 식별자(ECR-002등)까지 보게 되어 구분된다. 지금은 해당 문항이 1건뿐이라 우선순위가 낮다.감시 지표 — 재인덱싱·문서 추가 때마다 “정답이 전부 중복 무리인 문항 수”를 잰다. 0이 아니게 되면 적용한다.
⑤ 문제의 뿌리 상당수가 인제스트에 있다
검색 알고리즘을 아무리 바꿔도 안 고쳐지는 층이다. 라벨링 중 실제로 걸린 것들:
| 관찰 | 실측 | 단계 |
|---|---|---|
| 정답이 인접 청크로 쪼개짐 | 정답 2개 이상 22문항 중 10개(45%) | 청킹 |
| 거의 동일한 청크가 후보에 공존 | 40문항 중 19개, 최대 6개 | 청킹 |
hwp 파싱 깨짐 문자 (楴䵴) | 345청크 (1.1%) · 57개 문서 | 추출 |
| 가운뎃점 유니코드 변종 | ∙ 92청크 / · 4,149청크 | 클리닝 |
| 단위 표기 불일치 | 40,000천원 ↔ 40,000,000원 | 평가 데이터 |
전수 진단과 대응 우선순위는 인덱스 데이터 손상 진단.
감사에서 잡은 오류
라벨링 직후 전수 감사(형태소 겹침 + 원문 대조). 자동 채점만으로는 못 잡았고 원문을 읽어야 했다.
| 오류 | 건수 | 내용 |
|---|---|---|
정답이 후보에 있는데 n 처리 | 2 | | 합 계 | 71 |(300자 미리보기 밖) · 사업금액 : 40,000천원(머리에 楴䵴, 기준답변은 원 단위) |
| 타 문서 청크 혼입 | 3 | doc_id 필터 부재 + 화면에 문서명 없음 |
| 자동 채점 오판 | 3/37 (8%) | 단위 표기 차이, 짧은 답은 내용어가 없어 0%로 계산 |
측정 방법상의 성질
정답 풀이 dense ∪ BM25 각 top-20으로 구성되므로:
- 두 검색기가 20위 안에 못 넣은 청크는 정답이 될 기회조차 없었다(실측 4건). 다만 그중 3건은 dense top-100 안에 있었으므로(23·35·94위) “못 찾은 것”이 아니라 잘라낸 것이다.
- 측정 시 전 변형이 top-20을 가져오므로 정답은 항상 후보 안에 있다. 즉 이 측정은 순위 개선 효과를 재며, 재현율 개선 여지(후보 깊이 확대)는 별도 항목으로 보고한다.
부록 — 전체 40문항
기존 30문항
| # | 유형 | 질문 | 정답 | 상태 |
|---|---|---|---|---|
| 1 | 단일세부 | 한영대 트랙운영 학사정보시스템 고도화 — 사업기간 | 1 | ✅ |
| 2 | 단일세부 | 봉화군 재난통합관리 — GIS로 관리할 정보 | 2 | ✅ |
| 3 | 단일세부 | 전기안전 관제 보안모듈 — 도입 암호모듈 | 3 | ✅ |
| 4 | 단일세부 | GIS/통계 재난안전데이터 — 연계 표준화 작업 | 3 | ✅ |
| 5 | 단일세부 | KUSF 경기기록 — 개인정보 관련 지원 사항 | 2 | ✅ |
| 6 | 단일세부 | 한영대 트랙운영 — 구축 목표 | 2 | ✅ |
| 7 | 단일세부 | 봉화군 — 통합연계시스템 기능 | 6 | ✅ |
| 8 | 단일세부 | 전기안전 관제 — 원격점검장치 제조사 지원 | 2 | ✅ |
| 9 | 단일세부 | GIS/통계 재난안전데이터 — 품질 관리 방법 | 2 | ✅ |
| 10 | 단일세부 | 한국한의학연구원 — 신규 구축 업무 영역 | 0 | ❌ 미검출 |
| 11 | 단일세부 | 건설통합시스템(CMS) — 위원회 운영 개선 | 2 | ✅ |
| 12 | 단일세부 | 울산 버스정보시스템 — 현장 단말기·SW 적용 내용 | 3 | ✅ |
| 13 | 단일세부 | 한영대 트랙운영 — 기존 시스템 연계 방식 | 5 | ✅ |
| 14 | 단일세부 | 봉화군 — 통합상황전파 경보 기능 | 3 | ✅ |
| 15 | 단일세부 | KUSF 경기기록 — 기대 효과 | 2 | ✅ |
| 16 | 후속 | 한영대 사업기간 → 안정화기간 | 2 | ✅ |
| 17 | 후속 | 전기안전 추진배경 → 통신 보안 표준 | 2 | ✅ |
| 18 | 후속 | 봉화군 GIS 구축내용 → 관리 시설 정보 | 3 | ✅ |
| 19 | 후속 | 재난안전데이터 요구사항 → 표준화 목적 | 3 | ✅ |
| 20 | 직답 | 한영대 트랙운영 — 공고상 사업금액 | 1 | ✅ |
| 21 | 직답 | UICC 기능개선 — 입찰 참여 마감일 | 0 | ➖ 대상 아님 |
| 22 | 직답 | EIP3.0 고압가스 — 공고상 사업금액 | 1 | ✅ |
| 23 | 직답 | 도시계획위원회 통합관리 — 발주 기관 | 2 | ✅ |
| 24 | 직답 | 고려대 차세대 포털·학사 — 공고상 사업금액 | 1 | ✅ |
| 25 | 단일세부 | 울산 — BIT 유형별 수량 | 0 | ❌ 미검출 |
| 26 | 단일세부 | 울산 BIT — 제어부 최소사양 | 1 | ✅ |
| 27 | 단일세부 | 울산 — 중형 B타입 표출부·외형 최소사양 | 2 | ✅ |
| 28 | 단일세부 | 울산 — 요구사항 분류별 항목 수·총합 | 1 | ✅ |
| 29 | 단일세부 | 울산 — 기능 요구사항(SFR) 세부 항목 | 2 | ✅ |
| 30 | 단일세부 | 울산 — 소형 BIT 전원부·보호안내 최소사양 | 2 | ✅ |
어휘형 10문항
| # | 유형 | 질문 | 정답 | 상태 |
|---|---|---|---|---|
| 31 | 단일세부 | 나노종합기술원 — ENDURA-5500은 어떤 공정 설비 | 0 | ❌ 미검출 |
| 32 | 직답 | RFID 국가자격 — 리더 지원 프로토콜 표준 | 0 | ❌ 미검출 |
| 33 | 직답 | 네팔 수자원 — 수문 관측 기자재 ISO 표준 | 1 | ✅ |
| 34 | 직답 | 고려대 차세대 — 기록관리 KS 규격 | 1 | ✅ |
| 35 | 직답 | 봉화군 — ‘사회적 책임·성실성’ 배점 | 1 | ✅ |
| 36 | 단일세부 | 통합사회정보시스템 — ‘비상 대책’ 배점·평가내용 | 1 | ✅ |
| 37 | 직답 | 실손보험 청구 전산화 — CDR-003 요구사항 명칭 | 2 | ✅ |
| 38 | 직답 | KUSF — 구축·운영 지침 행안부고시 번호 | 1 | ✅ |
| 39 | 직답 | HDIMS 재구축 — 공공데이터 개방표준 고시 번호 | 1 | ✅ |
| 40 | 직답 | 산단 안전정보 — DDoS 장비 CC인증 등급 | 3 | ✅ |
관련
검색 실험 구도 · 인덱스 데이터 손상 진단 · 검색 품질 개선 (BM25·리랭커) · 검색 개선 · 쿼리 파이프라인 개선안