Phase 28-36 body of work

Accumulated since a6f12e2 (Phase 21 Rust port + Phase 27 versioning):

- Phase 36: embed_semaphore on VectorState (permits=1) serializes
  seed embed calls — prevents sidecar socket collisions under
  concurrent /seed stress load
- Phase 31+: run_stress.ts 6-task diverse stress scaffolding;
  run_e2e_rated.ts + orchestrator.ts tightening
- Catalog dedupe cleanup: 16 duplicate manifests removed; canonical
  candidates.parquet (10.5MB -> 76KB) + placements.parquet (1.2MB ->
  11KB) regenerated post-dedupe; fresh manifests for active datasets
- vectord: harness EvalSet refinements (+181), agent portfolio
  rotation + ingest triggers (+158), autotune + rag adjustments
- catalogd/storaged/ingestd/mcp-server: misc tightening
- docs: Phase 28-36 PRD entries + DECISIONS ADR additions;
  control-plane pivot banner added to top of docs/PRD.md (pointing
  at docs/CONTROL_PLANE_PRD.md which lands in next commit)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
profit
2026-04-22 02:41:15 -05:00
co-authored by Claude Opus 4.7
parent a6f12e2609
commit 5b1fcf6d27
52 changed files with 2575 additions and 1012 deletions
+21 -1
View File
@@ -357,7 +357,25 @@ impl LanceVectorStore {
/// Search for top_k nearest neighbors of `query`. Uses the IVF_PQ
/// index if one exists; otherwise does a full scan (slow but
/// correct — useful during development before index build).
pub async fn search(&self, query: &[f32], top_k: usize) -> Result<Vec<Hit>, String> {
///
/// `nprobes` tells Lance how many IVF partitions to probe per query.
/// Lance's built-in default is **1**, which caps recall well below
/// what the index is actually capable of. Passing `None` keeps that
/// default (only sensible when latency trumps recall); for real
/// workloads set `nprobes` to 5–10% of `num_partitions` (e.g. 20–30
/// on a 316-partition index).
///
/// `refine_factor` re-ranks the PQ-approximate top-k by computing
/// exact distances on `top_k * refine_factor` candidates, then
/// trimming to `top_k`. Cheap way to buy back recall lost to product
/// quantization. `None` skips the re-rank pass.
pub async fn search(
&self,
query: &[f32],
top_k: usize,
nprobes: Option<usize>,
refine_factor: Option<u32>,
) -> Result<Vec<Hit>, String> {
use lance::dataset::Dataset;
let dataset = Dataset::open(&self.path).await.map_err(e)?;
@@ -365,6 +383,8 @@ impl LanceVectorStore {
let mut scanner = dataset.scan();
scanner.nearest("vector", &qarr, top_k as usize).map_err(e)?;
if let Some(n) = nprobes { scanner.nprobes(n); }
if let Some(f) = refine_factor { scanner.refine(f); }
scanner.project(&["doc_id", "chunk_text"]).map_err(e)?;
let mut stream = scanner.try_into_stream().await.map_err(e)?;