Ground a model in your own documents
Retrieval is the hard half of a RAG pipeline, and it is the half nidus is. Index a directory once, ask a question in plain language, and get back the few passages that answer it, each carrying the file it came from. What comes back is JSON from a command or an HTTP call, so it works with any model and any framework: nothing here is tied to one.
What you need
Section titled “What you need”- Ingest a directory: walk, chunk, embed and store a tree in one command, re-runnable for free.
- Remember & recall: the same store, for text that is not files on disk.
- Hybrid search (RRF): fuse keyword and vector legs into one ranking, so an exact term and a paraphrase both land.
- Reranking: a cross-encoder pass over the retrieved set, for when precision on the last mile matters more than latency.
- HTTP server: the same pipeline over JSON, for a client that never links the crate.
Doing it
Section titled “Doing it”nidus ingest ./docs \ --collection docs \ --glob '**/*.md' \ --dir ./store \ --embed-provider voyagenidus recall docs "how does compaction work" --dir ./store --embed-provider voyageOver HTTP, the same query is a POST:
curl -s localhost:7700/collections/docs/recall \ -H 'content-type: application/json' \ -d '{"query": "how does compaction work", "rollup": {"neighbours": 1}}'What to tune
Section titled “What to tune”--rollupand--neighbours: one readable passage per document instead of three overlapping fragments.- Weighting the legs: favour the exact term or the paraphrase depending on the corpus.
- Turning on reranking: re-score the retrieved set before it reaches the model.
Where it stops
Section titled “Where it stops”nidus retrieves; it does not generate. You bring the model, and you decide what to do with what comes back.