Memory search demo — TF-IDF vs custom embedding
EPIC-13 Tier 3/4. @wasmclaw/core alpha.5 의 JsEngine.setSearcher + JsBridgeSearcher 에 의해 가능 해진 pluggable 검색 backend. 8개 sample document 에 대해 default TF-IDF 와 custom embedding (transformers.js) 의 결과 비교.
예시:
TF-IDF (JsMemoryIndex) (loading)
@wasmclaw/core — default backend, sync wasm
(no hits)
Custom embedding (transformers.js) (idle)
JsBridgeSearcher → keyword-overlap (sync alpha.5)
체크박스 로 embedding searcher 를 활성 하세요.
diagnostics (0)
- (none yet)
구현 노트
- TF-IDF:
JsMemoryIndex(alpha.4 stable) 을 직접 사용. 8개 sample document 를 mount 시 1회 인덱싱. - Custom embedding: 새로운
@soulclaw/engine-wrapper/searcher-embedding의EmbeddingSearcher. 토글 활성 시@huggingface/transformers+ Xenova/all-MiniLM-L6-v2 모델 lazy-load. - Sync 제약 (중요):
JsBridgeSearcher는 alpha.5 시점 sync callback 만 받음 — async 검색 (= cosine similarity over query embedding) 는EmbeddingSearcher.semanticSearch()으로 별도 노출 되어 있지만JsEngine.setSearcher에 직접 연결 불가. 본 데모 의 embedding column 은 keyword-overlap fallback 사용. - Engine 통합:
new CustomSearcher(searchFn) → engine.setSearcher(custom.inner)패턴 으로 wasm engine 의 Tier 2 검색 backend 를 swap. 본 데모 는 UI 비교 위해 직접 호출만 보여 줌.