Repository navigation
v0.7.0
Retrieval becomes a complete story: chunk, embed, persist on either front end, rank three ways.
Store
- SQLite index store (#58):
nibble -index docs.dbwrites chunks plus vectors to a SQLite database — one row per chunk, keyed by text and offsets so a re-upserted chunk updates in place. Vectors are float32, halving the file with the ranking preserved. Incremental: an upsert writes the rows it touched, not the whole file, and the file reopens across processes. Same exact brute-force cosine ranking as the JSONL store; the driver is pure Go, no CGO.
Chunking
- Recursive overlap (#59):
recursiveaccepts-overlap— the next chunk repeats the previous chunk's tail in its own text, the way token windows widen, so a retrieval hit on either side of a cut can see across it. Chunks stay exact slices of the source; the last still ends where the input does.
HTTP API
- Scoring modes (#60):
POST /v1/searchtakesscoring(densedefault,bm25,hybrid) andhybrid_weight, matching the CLI. Only dense and hybrid embed the query; bm25 needs no embedder at all. The ranking lives inpkg/store, shared by both front ends, so they cannot drift. The TypeScript client carries the same options. - Persistent index (#61):
nibble-api -index docs.dbbacks the API's index with the same SQLite file shape the CLI writes — created when missing, resumed by the next server on the same path. Without the flag, the memory default is unchanged.