feat(8.0): zero-config finalize + cut JS quantization (config.vector = recall + persistMode)
This commit is contained in:
parent
f4c5d9749f
commit
f8e0079d3f
12 changed files with 348 additions and 1739 deletions
22
RELEASES.md
22
RELEASES.md
|
|
@ -115,8 +115,9 @@ Hard renames, no aliases. Every pair below is verified against the 8.0 source.
|
|||
| `HnswProvider` (from `@soulcraft/brainy/plugin`) | `VectorIndexProvider` |
|
||||
| `HNSWIndex` (exported class) | `JsHnswVectorIndex` |
|
||||
| Provider keys `'hnsw'` and `'diskann'` | `'vector'` (the only key Brainy consults for the vector index) |
|
||||
| `config.hnsw = { quantization, vectorStorage }` | `config.vector = { recall?, quantization?, persistMode? }` (shape change — see below) |
|
||||
| `hnswPersistMode: 'immediate' \| 'deferred'` (top level) | `config.vector.persistMode` |
|
||||
| `config.hnsw = { quantization, vectorStorage }` | `config.vector = { recall?, persistMode? }` (shape change — see below) |
|
||||
| `config.vector.quantization` (and 7.x `config.hnsw.quantization`) | **Removed.** The JS vector path is full-precision (exact float32 distances) only — quantization at scale is the native provider's job (e.g. DiskANN PQ). |
|
||||
| `hnswPersistMode: 'immediate' \| 'deferred'` (top level) | `config.vector.persistMode` (auto-selected from the storage adapter when omitted: `'immediate'` on filesystem, `'deferred'` on memory) |
|
||||
| `config.storage.type: 's3' \| 'gcs' \| 'r2' \| 'opfs'` | `'filesystem'` (or `'memory'` / `'auto'`) |
|
||||
| `config.storage.branch` | Removed (no COW branches) |
|
||||
| `brain.stats().indexHealth.hnsw` | `brain.stats().indexHealth.vector` |
|
||||
|
|
@ -155,22 +156,25 @@ new Brainy({
|
|||
hnsw: { quantization: { enabled: true, bits: 8, rerankMultiplier: 3 } }
|
||||
})
|
||||
|
||||
// 8.0
|
||||
// 8.0 — config.vector is { recall?, persistMode? }
|
||||
new Brainy({
|
||||
vector: {
|
||||
recall: 'balanced', // 'fast' | 'balanced' | 'accurate'
|
||||
quantization: { enabled: true, bits: 8 }, // rerankMultiplier is fixed at 3
|
||||
persistMode: 'deferred'
|
||||
persistMode: 'deferred' // optional; auto-selected from storage when omitted
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
`config.vector.recall` replaces the algorithm-internal HNSW knobs: `'balanced'`
|
||||
(the default) maps to exactly the 7.x default parameters, so an upgrade without
|
||||
explicit knobs changes nothing about search behaviour. `config.hnsw.vectorStorage`
|
||||
is removed. The on-disk vector index file names are **unchanged** (e.g.
|
||||
`hnsw-system.json`) — existing filesystem stores need no data migration for
|
||||
this rename; only the API surface moved.
|
||||
explicit knobs changes nothing about search behaviour. `config.vector.quantization`
|
||||
and `config.hnsw.vectorStorage` are removed: the JS vector path now computes exact
|
||||
float32 distances throughout (no rerank/approximate branch), which is what made
|
||||
its quantization a memory *increase* — it stored both the full and the quantized
|
||||
vectors in RAM. Quantization at scale belongs to the native provider's own PQ.
|
||||
The on-disk vector index file names are **unchanged** (e.g. `hnsw-system.json`) —
|
||||
existing filesystem stores need no data migration for this rename; only the API
|
||||
surface moved.
|
||||
|
||||
### Behavior changes
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue