fa82bd495b
persist_hier_tree(): build_hier_tree → document_chunks insert. source_type=hier_section, in_corpus=false, is_leaf 노드만 bge-m3 embedding. idempotent(기존 hier 행 삭제 후 재삽입). chunk_index = doc 별 (max+1) offset → 기존 (doc_id,chunk_index) unique 충돌 회피. embedding NULL 파라미터 asyncpg 타입추론 → cast(cast(:emb AS text) AS vector) 이중캐스트. migration 284/285: ivfflat 오염 fix. full 인덱스는 in_corpus=false hier 벡터까지 색인 → 근사 검색이 비활성 벡터에 오염(corpus_chunks 필터해도 근사 이웃 셋 흔들림). partial index (WHERE in_corpus=true)로 교체 → in_corpus=false 는 검색 인덱스에 부재 = 무영향 인덱스 레벨 보장. c4 pilot(5140/5186/5225) G3: 트리 insert, embed_coverage 1.0(doc-local 100%), in_corpus_true=0, dangling_parent=0, dup 0. **부분인덱스 후 검색 baseline IDENTICAL to 원래(pre-hier)** = 691 hier 행 영향 0 검증(오염 fix 효과). replace 는 c5/c6. plan: hierarchical-decomposition-tiered-nesting-marmot.md Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
8 lines
543 B
SQL
8 lines
543 B
SQL
-- PR-DocSrv-Hierarchical-Decomposition-1 (c4): ivfflat 오염 fix 2/2.
|
|
-- partial ivfflat — in_corpus=true 벡터만 색인 → in_corpus=false(비활성 hier leaf)는
|
|
-- 검색 인덱스에 부재 = 검색 무영향이 인덱스 레벨에서 보장. replace 시 in_corpus 토글로 자동 편입/제외.
|
|
-- corpus_chunks 쿼리(WHERE in_corpus=true)가 이 partial index 사용.
|
|
CREATE INDEX IF NOT EXISTS idx_chunks_embedding ON document_chunks
|
|
USING ivfflat (embedding vector_cosine_ops) WITH (lists = '100')
|
|
WHERE in_corpus = true;
|