Skip to content

Repository files navigation

splade

SPLADE 모델을 비교하고, 합격 모델 하나를 Rust로 이식하기 위한 실험 저장소입니다.

진행 순서와 합격 기준은 설계 문서에 기록합니다.

원칙

  • 같은 문서와 질의로 모델을 비교합니다.
  • 원시 측정값에서 표와 그래프를 자동 생성합니다.
  • 모델 파일은 커밋하지 않고 버전과 SHA-256을 고정합니다.
  • 합격 모델만 Rust로 이식합니다.
  • pentesting은 Rust POC가 통과한 뒤 수정합니다.

결론

항목 결과
합격 모델 OpenSearch neural sparse v2 mini
Python↔Rust 순위 top-10 60/60 일치
Rust 질의+검색 p95 0.075ms
Rust 문서 인코딩 1.115 docs/s
런타임 모델 파일 132.39MiB
직렬화 인덱스 환산 20.30MiB/1만 문서

Rust 이식은 합격했다. 질의 인코딩은 온라인 경로에 적합하지만, tract 문서 인코딩은 느리므로 인덱싱 작업에서만 실행한다. 상세 수치는 평가Rust 이식에 있다.

최종 프로덕션 평가 및 결정

이후 pentesting 실 서비스 대규모 평가셋(clean-v4, 4,630 질의)에서 프로덕션 벤치마크를 수행했습니다.

아키텍처 R@4 MRR@4 비고
BM25-only (최종 선택) 0.3885 0.2771 최고 성능, 최소 복잡도
SPLADE-only 0.2611 0.1865 BM25 대비 R@4 -0.1275
BM25 + SPLADE 캐스케이드 0.3811 0.2702 BM25-only보다 낮음, 코드 +85% 증가

최종 판단: 대규모 운영 데이터에서 SPLADE 및 캐스케이드가 BM25-only 대비 성능 열세를 보였고, 복잡도(+1,023 LOC, 4개 강등 경로, 35.7MB 모델 자산) 대비 실익이 없어 BM25-only를 프로덕션 아키텍처로 최종 확정하고 SPLADE를 롤백/제거했습니다. 상세 분석은 프로덕션 대규모 검증에 기록되어 있습니다.

재현

모든 Python/Rust 작업은 메모리 4GiB, CPU 2개로 제한된 Docker 안에서 실행한다.

scripts/poc.ps1 pytest -q
scripts/poc.ps1 export
scripts/rust-test.ps1 test
scripts/rust-test.ps1 bench

About

Experimental repository for comparing SPLADE models, porting to Rust, and validating production search architectures.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages