Skip to content

Query Coverage 24 KO

teamswyg edited this page Sep 30, 2026 · 2 revisions

기존 인덱스로 질의 단어 일치율 계산 24

추가 인덱스 없이 낮은 비용으로 새 특징을 계산했지만, 단독 특징의 손해/이득 구분은 개선되지 않았다. 네 특징의 저장소 평균 AUC는 0.4709–0.4933이다. 새 모델·임계값·자동 라우팅은 적용하지 않았다.

구현한 기능

hintsearch.Index.QueryCoverage(query, ids)는 기존 BM25 인덱스에서 선택한 최대 20개 후보가 질의의 고유 단어를 얼마나 포함하는지 반환한다. 원본 코드를 다시 읽지 않고, 이미 정렬된 단어 목록과 문서 번호 posting 배열에서 이진 탐색한다. 검색 보조 인덱스나 모델은 필요 없다.

토큰화는 기존 BM25와 같다. Unicode 문자·숫자를 단어로 보고 소문자로 바꾸며, 중복 질의 단어는 한 번만 센다. 문장부호만 있는 질의는 0개 단어로 처리한다. 잘못된 문서 번호·중복 번호·20개 초과 후보·빈 질의·8,192바이트 초과 질의는 거부한다. 호출자가 접근 가능한 문서로 만든 인덱스와 그 인덱스의 번호를 제공해야 한다.

인덱스 구조에 필드를 추가하지 않았다. 후보 카운터와 결과는 고정 배열이며, 질의 토큰화에는 임시 할당이 있다. 인덱스는 읽기 전용이므로 여러 호출이 잠금 없이 공유할 수 있다. 검증된 메모리 할당 수를 “완전 무할당”으로 바꾸어 표현하지 않는다.

연구용 특징 네 개는 다음과 같다.

  1. 첫 후보가 포함하는 고유 질의 단어 비율.
  2. 기본 검색 상위 최대 20개 후보에서 이 비율의 평균.
  3. 같은 비율의 모집단 표준편차.
  4. 기본 인덱스 어휘 전체에 없는 고유 질의 단어 비율.

기존 12개 특징과 점수 분포 4개는 그대로 보존했다. 새 특징을 별도 배열에 담고, 보조 검색·정답 순위 계산 전에 추출한다. 후보 단어 일치는 의미 이해나 정답 확률이 아니다.

2,948개 질문에서의 신호

계획을 실행 전에 커밋했다. 기존 23과 같이 학습 저장소에서만 특징의 방향을 정하고 다른 저장소에 적용했다. 표는 세 저장소의 동일 가중 평균 AUC다. 0.5는 순위 구별이 없는 수준이며 정확도가 아니다.

새 특징 손해/나머지 이득/나머지 손해/이득
첫 후보 일치율 0.5157 0.5742 0.4933
상위 20개 평균 0.5675 0.5696 0.4709
상위 20개 표준편차 0.5210 0.5403 0.4745
질의 단어 어휘 부재 비율 0.4909 0.4932 0.4756

앞의 두 구분은 각각 고유 질문 2,948개 전체를 한 번씩 센다. 마지막은 페이지 동률을 제외한 478개 부분집합이며 별도의 2,400개 최종 평가가 아니다. 손해 146개, 이득 332개, 동률 2,470개라는 구성은 이전과 같다. 동점을 묶은 AP·양성 비율·저장소별 결과도 모두 공개했다.

평가 점수가 낮다고 그 방향을 뒤집어 보고하지 않았다. 단일 특징으로는 유용성을 보이지 못했지만, 기존 특징과의 조합까지 무의미하다고 입증한 것은 아니다. 사전 계획대로 다음에는 네 특징을 모두 추가한 16개 대 20개 특징 학습 비교를 별도 고정해 진행한다. 학습 목표·분할·후보 선택을 함께 바꾸거나, 평가에서 좋아 보인 특징만 골라 넣지 않는다. 조합 비교도 효과가 없다면 이 특징 경로를 기본 모델에 넣을 근거가 없다.

계산 비용과 검증

Apple M4 Pro/macOS/Go 1.27.1 합성 fixture: 문서 3,009개, 후보 20개, 소문자 질의 4단어 중 어휘에 있는 2단어와 없는 2단어. 인덱스 생성은 측정 밖이다.

작업 3회 측정 할당
후보 20개 일치율 681.6 / 650.1 / 640.3 ns 64 B/op, 1 alloc/op
같은 fixture의 기본 순위 계산, 배열 재사용 11,883 / 11,825 / 11,867 ns 120 B/op, 3 allocs/op

두 작업은 대체 관계가 아니다. 일치율은 기본 검색 이후 추가되는 비용이다. 총 지연이 줄었다고 주장하지 않는다. 짧은 고정 질의·따뜻한 캐시의 측정이며, 긴 질의·대문자 변환·더 많은 알려진 단어에서는 비용과 할당이 달라질 수 있다. 연구 특징의 평균·표준편차 계산과 JSON/IPC는 위 일치율 마이크로벤치마크에 포함하지 않았다.

CPU 프로파일에서 일치율 메서드 누적 82.61%, 정수 posting 이진 탐색 자체 36.65%였다. 해당 합성 실행 범위의 샘플이며 앱 전체나 GPU 병목을 뜻하지 않는다. 원시 프로파일은 로컬에만 보관한다.

고정 원천 확인·검색·특징 준비·전체 분석 한 번은 wall 1.85초, user CPU 1.50초, 최대 RSS 91,717,632바이트(약 87.5MiB). 이는 전체 분석 프로세스이며 개별 함수 메모리나 이전 실험 대비 RSS 감소의 증거가 아니다.

새 결과 전체 JSON 재실행이 바이트 일치했다. 공통 준비 코드 수정 후 기존 실험 23 결과도 바이트 일치했다. 단어 직접 검사와 인덱스 계산의 동등성, 중복·대소문자·한국어·부재 단어·잘못된 번호·동시 읽기, 기존 순위 불변 및 특징 수치를 검사했다. 기존 16개 특징의 분석 결과도 그대로 유지됐다.

go run ./cmd/riido-coverageaudit --out .cache/query-coverage-24
go test ./pkg/hintsearch -run '^$' -bench BenchmarkCoverageAndRanking -benchmem

전체 결과. 같은 세 저장소를 반복 관찰한 개발 분석이다. 새로운 실제 사용자 요청 최소 2,400개·에이전트 완료율·LLM 절감은 미검증이다. CoSQA reserve는 사용하지 않았고 새 모델 가중치도 없으므로 HF 모델 저장소를 만들지 않는다.

Source / 소스 · PR #47 / CI

CI passed on macOS and Linux; PR #47 merged. macOS·Linux CI 및 병합 완료. Feature research only; no new model release / 특징 연구이며 새 모델 배포 없음.

Follow-up / 후속: Joint training 25 / 조합 학습. Both seeds worsen page cost; additions deferred. 두 초기값 모두 페이지 비용이 악화되어 추가 채택 보류.

Clone this wiki locally