v0.3.0 — Phase 4: ANN index from scratch (IVF + HNSW)
Sub-linear vector search, built from scratch and benchmarked against the brute-force ground truth. No external ANN library.
- IVFIndex: seeded k-means (k-means++ init) → nlist cells; nprobe search with exact rerank in probed cells (nprobe=nlist recovers brute-force recall).
- HNSWIndex: from-scratch hierarchical navigable small-world graph (M / efConstruction / efSearch); property-tested to ≥0.90 recall vs brute force across seeds.
- Backend switch by config:
meridian ask --ann {none,ivf,hnsw}, and in evaluate.py; DenseRetriever now searches any VectorIndex. - Benchmark + ADR-0005: committed recall/latency figure — HNSW reaches recall@10 ≈ 0.999 at efSearch=16, below brute-force latency (synthetic N=2000). Default backend: HNSW (reaffirmed from real embeddings before v1.0).
Real recall/latency/RAM on the corpus pending the Phase-3 embeddings.