-
released this
2026-06-03 07:20:27 +00:00 | 33 commits to main since this releasev0.26.0 — arctic-embed 임베더 + doc-side expansion(별칭) 제거
v0.24.0 이후 두 개의 큰 변화가 쌓였습니다. 검색 임베더를 더 강한 모델로 교체할 수 있게 되었고(설명형/풀어쓴 질의의 검색 품질이 크게 올라갑니다), 그 과정에서 유지보수 부담만 크고 효과는 미미했던 별칭(doc-side expansion) 기능을 제거했습니다. 두 변화 모두 측정(나무위키 ~1000 문서, 132개 변형 질의 골든)으로 근거를 잡았습니다.
1. 새 임베더: arctic-embed-l-v2.0 (provider
candle/ollama) — opt-in무엇이 바뀌나.
[models.embedding]에서 기본 multilingual-e5-large 대신 Snowflake arctic-embed-l-v2.0 임베더를 선택할 수 있습니다. 측정에서 같은 골든의 recall@10 이 e5 123/132 → arctic 130/132 (+7), recall@50 은 132/132(완벽) 으로 올랐고, 결정적으로 용어·약어·영어·동의어 질의는 손실 없이(72/72 유지) 설명형/풀어쓴 질의만 끌어올렸습니다(예: "마지막에 넣은 것을 먼저 꺼내는 자료구조" → 스택 문서). 두 백엔드를 제공합니다:# (A) candle — 순수 Rust, in-process (NUMA 안전, macOS Metal GPU 가능) [models.embedding] provider = "candle" model = "snowflake-arctic-embed-l-v2.0" # CLS pooling, query 에 "query: " 접두어 dimensions = 1024 # (B) ollama — 로컬/원격 Ollama 데몬에 위임 (POST /api/embed) [models.embedding] provider = "ollama" model = "snowflake-arctic-embed2" # ollama pull 필요 dimensions = 1024 endpoint = "http://127.0.0.1:11434" # 생략 시 [models.llm].endpoint 로 폴백Trade-off. arctic 으로 바꾸면 임베딩 벡터 공간이 달라지므로(
embedding_versioncascade) 기존 e5 KB 와 혼용할 수 없습니다 — 전환하려면 한 번 재색인이 필요합니다. 별칭과 달리 이 비용은 색인 1회뿐이고, per-query 추가 비용도 LLM 호출도 없어 살아있는(계속 갱신되는) KB 에 지속 가능합니다.Mitigation / 검증. 기본값은 그대로 e5-large 이므로 아무것도 안 바꾸면 동작·벡터가 100% 동일합니다(arctic 은 완전 opt-in). candle 백엔드의 정확성은 측정에 쓴 Ollama 경로와 코사인 0.999984 일치로 검증했고(같은 pooling/prefix), v0.26.0 실제 바이너리로 namu 를 재색인해 recall@10 130/132 를 종단 재현했습니다. 새 크레이트
kebab-embed-ollama가 추가됐습니다.Upgrade 절차. (1)
ollama pull snowflake-arctic-embed2(ollama 경로) 또는 candle 경로는 첫 색인 시 safetensors(~2GB) 자동 다운로드. (2) 위 config 로 변경 +dimensions = 1024. (3)kebab reset후 재 ingest. macOS 는cargo install --path crates/kebab-cli --features embed_metal --locked로 candle GPU 가속.
2. doc-side expansion(별칭) 기능 제거
무엇이 바뀌나. 청크마다 LLM 을 호출해 "검색용 별칭"을 생성하던 기능(
[ingest.expansion])을 완전히 제거했습니다. 측정 결과 이 기능의 실효는 설명형 질의 +2 그룹뿐인데, 그 대가가 색인할 때마다 청크당 LLM 호출(나무위키 18문서 cold 2.5시간)이라 계속 갱신되는 KB 에서는 지속 불가능했습니다. 별칭이 노렸던 한↔영 교차언어 recall 은 임베더 단독으로 이미 충분했고, 남은 설명형 약점은 위 arctic 교체가 더 깔끔하게 해결합니다.Trade-off / 영향. 별칭은 이미 기본 비활성(default-off)이었으므로 일반 사용자 체감은 0 입니다.
config.toml에[ingest.expansion]섹션이 남아 있어도 무시되며(forward-compat), 신규 마이그레이션 V013 이 사용되지 않던chunk_aliases_fts테이블과chunks.aliases컬럼을 정리합니다. wire 의ingest_progress.v1에서expansion_progress이벤트가 빠졌습니다(추가 직후라 호환 영향 없음).
기타
- 상세 측정·방법 비교(리랭크 / query-side expansion / heading enrichment / bge-m3 등 대안 포함):
tasks/HOTFIXES.md(2026-06-03 두 entry) + 연구 문서docs/superpowers/research/2026-06-03-expansion-cost-rethink-research.md. - 잔존 설명형 약점 2개(추상적 정의 질의)는 후속 query-side 보강 후보로 남겨둠.
- 문서 동기화: README Configuration, docs/SMOKE.md, docs/ARCHITECTURE.
Downloads
- 상세 측정·방법 비교(리랭크 / query-side expansion / heading enrichment / bge-m3 등 대안 포함):