feat(expansion): doc-side expansion 별칭 개별 dense 벡터 + 파생물 캐시(V012)
별칭을 줄별 개별 dense 벡터(sentinel `{chunk}#alias#N`)로 색인하고
boilerplate 청크는 별칭 생성을 skip. 묶음 1벡터 방식은 평균화로 특정
표현이 희석돼 오히려 회귀(13/18)했던 것을 폐기. 변형 일관성 14/18 →
16/18, mean_spread@10 0.222 → 0.111 (나무위키 ~1000 문서 CS corpus).
`kebab-core::strip_alias_suffix` 가 suffix 형과 per-alias 형 둘 다 처리.
파생물 캐시(V012): embedding 벡터 + 별칭 LLM 결과를 청크 내용 해시
키로 캐싱해 재색인 시 내용 불변 청크의 재계산을 skip. cache_key =
blake3(kind ‖ text_blake3 ‖ version_key)[:32], version_key 에
model/prompt/dimensions 포함 → §9 cascade 와 정합(버전 bump 시 자동
miss). 측정: 정답 3개 cold 1879s → warm 13s ≈ 145배. 순수 가산이라
corpus_revision bump 없음. search/ask 는 kebab.sqlite+lancedb 만으로
동작 → 외부 서버 색인 후 DB 만 복사하는 이식 워크플로 가능.
V012 schema migration + 신규 surface 로 workspace version 0.20.2 →
0.21.0 (minor) bump. README/HANDOFF/ARCHITECTURE/HOTFIXES sync.
known limitation: stack·svm 설명형 2개 잔존 + grounded 판정이 부분
인용을 grounded 로 오분류(후속 후보).
측정 상세: docs/superpowers/handoffs/2026-05-31-namu-wiki-alias-cache-study.md
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
22
migrations/V012__derivation_cache.sql
Normal file
22
migrations/V012__derivation_cache.sql
Normal file
@@ -0,0 +1,22 @@
|
||||
-- V012__derivation_cache.sql — 내용 해시 기반 파생물 캐시 (Derivation Cache).
|
||||
--
|
||||
-- 설계 spec docs/superpowers/specs/2026-05-31-derivation-cache-design.md §3.2.
|
||||
-- 비용 큰 ingest 파생물(embedding 벡터 / LLM 별칭 / 선택적 한국어 형태소)을
|
||||
-- 청크 text 의 *내용 해시* 키로 캐싱해, 문서 갱신·재색인 시 변경되지 않은
|
||||
-- 청크의 재계산을 없앤다. cache_key = blake3(kind ‖ text_blake3 ‖ version_key)[:32]
|
||||
-- (§3.1) — 위치 기반 chunk_id 와 달리 내용이 같으면 문서·위치 무관 동일 키.
|
||||
--
|
||||
-- 순수 가산(additive): 기존 데이터를 무효화하지 않으므로 corpus_revision 을
|
||||
-- bump 하지 않는다(§3.2). 캐시는 순수 성능 레이어 — 손상/삭제되어도 정확성
|
||||
-- 영향 없음(miss → 재계산). `kebab reset` 시 같은 sqlite 라 함께 비워진다.
|
||||
|
||||
CREATE TABLE derivation_cache (
|
||||
cache_key TEXT PRIMARY KEY, -- §3.1 blake3 32-hex
|
||||
kind TEXT NOT NULL, -- 'embedding' | 'alias' | 'korean_tokens'
|
||||
payload BLOB NOT NULL, -- kind 별 인코딩 (§3.3)
|
||||
created_at TEXT NOT NULL,
|
||||
last_used_at TEXT NOT NULL -- LRU/TTL 정리용 (§3.5)
|
||||
);
|
||||
|
||||
CREATE INDEX idx_dcache_kind ON derivation_cache(kind);
|
||||
CREATE INDEX idx_dcache_last_used ON derivation_cache(last_used_at);
|
||||
Reference in New Issue
Block a user