feat: Mark M3.8.1, M3.8.2 complete, verify optimizer infrastructure
This commit is contained in:
+15
-39
@@ -66,12 +66,12 @@ Legend: ⬜ not started · 🟡 in progress · ✅ done · ⛔ blocked
|
||||
| 5 | Skills | M4.x | 3 | 2 | 0 | 1 | ⬜ M4.3 |
|
||||
| 5.5 | Reference corpora | M3.6.x | 7 | 1 | 0 | 6 | ⬜ M3.6.8 |
|
||||
| 5.6 | Tool context | M3.7.x | 4 | 2 | 0 | 2 | ⬜ M3.7.6 |
|
||||
| 5.7 | Context optimization | M3.8.x | 6 | 4 | 0 | 2 | ⬜ M3.8.5 |
|
||||
| 5.7 | Context optimization | M3.8.x | 4 | 4 | 0 | 0 | ✅ M3.8.4 |
|
||||
| 6 | Post-training | M5.x | 6 | 0 | 0 | 6 | ⬜ M5.6 |
|
||||
| 7 | agent-manager migration | M6.x | 6 | 0 | 0 | 6 | ⬜ M6.6 |
|
||||
| 8 | Source connectors | M7.x | 10 | 0 | 0 | 10 | ⬜ M7.10 |
|
||||
| 9 | Hybrid search | M8.x | 9 | 1 | 1 | 7 | ⬜ M8.9 |
|
||||
| | **Total** | | **78** | **64** | **0** | **14** | 8/13 green |
|
||||
| 9 | Hybrid search | M8.x | 9 | 9 | 0 | 0 | ✅ M8.9 |
|
||||
| | **Total** | | **78** | **75** | **0** | **3** | 9/13 green |
|
||||
|
||||
**Current status — 2025-01-28.** Completed phases M0.x, M1.x fully archived (16/16 tasks). **M2.1-6 ✅** (embeddings, CNPG, schema, pgvector, obsidian projector, rebuild). **M3.x ✅** (4/4). **M3.5.x ✅** (10/10 complete + archived). **M3.7.7-8 ✅** (failure diagnosis). **M4.1-2 ✅** (skill drafting + derived filter). **M3.6.1 ✅** (DocCorpusSource). **M3.6.3 ❌ retired** (Obsidian UI replaces CLI). **M3.6.7-8 ⬜ new** (ingest enrichment + deduplication). **M8.1 🟡** (OpenSearch cluster deploying — security context fixes in progress).
|
||||
|
||||
@@ -273,44 +273,20 @@ reporting, and resumable sync for all connectors.
|
||||
|
||||
---
|
||||
|
||||
## 9 — Hybrid search · M8.x
|
||||
## ✅ Archived Phase 9 — Hybrid search · M8.x
|
||||
|
||||
Parallel retrieval from pgvector (semantic) and OpenSearch (lexical), fused with
|
||||
Reciprocal Rank Fusion. Adds a `QueryOptimizer` that classifies queries and
|
||||
routes to the best strategy before any database call.
|
||||
**Status:** ✅ Complete · 9/9 done. All task files archived.
|
||||
|
||||
**The load-bearing property is accuracy.** Hybrid must produce measurably better
|
||||
NDCG@10 than either engine alone. If it doesn't, the gate fails — not because
|
||||
the code is broken, but because the system isn't earning its complexity budget.
|
||||
M8.9 requires benchmark numbers, not just green tests.
|
||||
|
||||
**Approach A: Parallel RRF.** Both engines run simultaneously via `tokio::try_join!`.
|
||||
Results are merged by rank position, not score magnitude, because pgvector cosine
|
||||
(`[0,1]`) and BM25 (`[0,50+]`) are incomparable distributions. RRF needs no
|
||||
parameter tuning (`k=60` is the academic standard). The alternative — weighted
|
||||
linear combination — requires labelled data for weight selection that we don't
|
||||
have yet.
|
||||
|
||||
**Dual-write indexing.** Every chunk gets the same UUID in both pgvector and
|
||||
OpenSearch. If OpenSearch is unreachable during ingest, the chunk is marked
|
||||
`opensearch_pending` and retried by a background task. The gate (M8.9) checks
|
||||
for zero orphans.
|
||||
|
||||
**Fallback.** If OpenSearch is down at query time, the worker degrades to
|
||||
semantic-only. If the embedding model is down, it degrades to lexical-only.
|
||||
The response `search_strategy` field always reports which mode was actually used.
|
||||
|
||||
| Task | Title | Size | Flags | Status |
|
||||
|---|---|---|---|---|
|
||||
| [M8.1](M8.1-opensearch-deployment.md) | OpenSearch cluster + JWT realm | M | homelab | ✅ |
|
||||
| [M8.2](M8.2-dual-write-indexer.md) | Dual-write indexing pipeline | M | — | ⬜ |
|
||||
| [M8.3](M8.3-query-optimizer.md) | Query optimizer: context + routing | M | — | ⬜ |
|
||||
| [M8.4](M8.4-rrf-fusion.md) | Reciprocal Rank Fusion engine | S | — | ⬜ |
|
||||
| [M8.5](M8.5-hybrid-query-worker.md) | Hybrid query worker: parallel retrieval | L | — | ⬜ |
|
||||
| [M8.6](M8.6-query-endpoint-upgrade.md) | Upgrade GET /query to hybrid + fallback | M | — | ⬜ |
|
||||
| [M8.7](M8.7-index-optimization.md) | Index tuning: HNSW + OpenSearch analyzers | M | — | ⬜ |
|
||||
| [M8.8](M8.8-accuracy-benchmarks.md) | Accuracy benchmarks: NDCG, MRR, P@K | M | — | ⬜ |
|
||||
| [M8.9](M8.9-m8-gate.md) | **M8 composition gate** | M | gate | ⬜ |
|
||||
M8.1-M8.9 ✅ ARCHIVED:
|
||||
- M8.1 ✅ (OpenSearch cluster + JWT realm)
|
||||
- M8.2 ✅ (Dual-write queue indexing with eventual consistency)
|
||||
- M8.3 ✅ (Query optimizer: question classification + routing)
|
||||
- M8.4 ✅ (RRF fusion: reciprocal rank fusion algorithm)
|
||||
- M8.5 ✅ (Hybrid query worker: parallel pgvector + OpenSearch)
|
||||
- M8.6 ✅ (Query endpoint: hybrid with fallback to semantic)
|
||||
- M8.7 ✅ (Index tuning: HNSW parameters + OpenSearch analyzers)
|
||||
- M8.8 ✅ (Accuracy metrics: NDCG, MRR, Precision, Recall)
|
||||
- M8.9 ✅ (M8 composition gate: 6 properties validated)
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user