Every answer, grounded in a citation you can check.
Nongor is Riverborn's local-first knowledge base: hybrid retrieval, cross-encoder reranking, and citation-validated answers, with zero document data ever leaving the machine. Built for legal, healthcare, financial services, defense, and any team that can't ship sensitive documents to a third-party cloud API.

Your most useful knowledge base is also the one you can't send to the cloud.
Legal contracts, patient records, defense specs, and financial filings are exactly the documents a knowledge base is most useful for, and exactly the documents most teams cannot ship to a third-party cloud API. Most RAG SaaS is a non-starter before the first demo even runs.
Sensitive Documents Can't Leave the Building
Compliance and contractual obligations mean uploading documents to a vendor's cloud is simply off the table for legal, healthcare, financial services, and defense teams, no matter how good the model is.
A Confident, Wrong Answer Is a Liability
A fluent, ungrounded answer over a contract clause or a patient record is worse than no answer. Teams need to see exactly which source sentence backs every claim before they act on it. LLMs will even fabricate a citation id that looks real.
Knowledge Trapped in Long Documents
The answer already exists inside a 90-page spec or a wiki nobody reads end to end. Finding it means a human re-reading dozens of pages, so the same question gets re-researched again and again.
The local-first guarantee
lives in the code.
The boundary is drawn in the code, not a document you have to trust. Parsing, chunking, embedding, reranking, and the vector store all run on the machine Nongor is deployed on. Only one function in the entire system is capable of leaving the box, and in local mode, the server won't even boot if that endpoint points anywhere but a loopback or private address.
Where does the document go?
Toggle between a typical cloud RAG SaaS and Nongor's local-first path.
The final step routes through a single call_llm()chokepoint. In local mode the server refuses to boot unless that endpoint is a loopback or private address, so a config typo can't silently ship your documents off the machine.
Stacked Retrieval Signals,
Then a Verified Answer
Rather than trusting one similarity search, Nongor stacks independent retrieval signals (dense vectors, sparse BM25, and a cross-encoder reranker), then grounds every generated claim in a citation that is checked against the retrieved text before it ever reaches the user.
Retrieval is the ceiling
If the right passage never makes it into the prompt, no model can answer correctly, so accuracy work starts before generation.
Two engines beat one
Dense vectors catch paraphrase; BM25 catches exact tokens like part numbers and proper nouns that embeddings blur.
A second, stronger signal
A cross-encoder reranker scores the exact query-chunk pair, not just first-stage similarity, before anything enters the prompt.
Trust, then verify
The model must cite every claim, and every citation is checked against what was retrieved before it's shown.
Retrieval & Grounded Generation Visualizer
Watch a query pass through hybrid retrieval, reranking, generation, and citation validation.
An answer you can check, every time.
Nongor shows its work. Every claim ships with a citation id, and every id is validated against the chunks that were retrieved. Nongor flags a fabricated reference before it ever reaches your team.
Ask the Knowledge Base
What Makes Nongor Different
Every piece of the pipeline is built for the same two goals: retrieval that finds the right passage, and answers a team can verify without leaving the app.
Hybrid Retrieval
Dense vector search (BGE-M3) and sparse BM25 full-text search run in parallel and merge via Reciprocal Rank Fusion, covering both paraphrase recall and exact-token recall.
Cross-Encoder Reranking
BGE-reranker-v2-m3 rescopes the fused candidates on the exact query-chunk pair, down to the top-8 that enter the prompt.
Citation Validation
Every claim carries a citation id. After generation, each id is checked against the retrieved chunks, and fabricated ones are flagged, never silently shown as real.
Local-First Architecture
Parsing, chunking, embedding, reranking, and the LanceDB store all run on-device with zero network egress. The corpus can be indexed and queried with the network cable pulled.
Idempotent Ingestion
Every document is fingerprinted with a SHA-256 hash of its normalized markdown, so re-ingesting an unchanged file is a no-op and re-uploads never duplicate the corpus.
Swappable LLM Provider
DeepSeek, OpenAI, Ollama, vLLM, or LM Studio sit behind one config flag and a single call_llm() chokepoint, so a vendor swap touches exactly one file.
Every Claim, Measured
Accuracy claims are only as good as the harness behind them. Nongor ships its own eval runner: a hand-labeled question set that scores retrieval, faithfulness, and citation validity, and fails CI on any ≥3% relative regression against the last run.
Built to Run Anywhere
A provider-agnostic core keeps the whole stack portable. Swap the LLM vendor without touching retrieval, storage, or the UI, and the whole thing still ships as a single Docker Compose deployment.
Frequently Asked Questions
What teams evaluating Nongor for legal, healthcare, and financial services usually ask first.
In local mode, no. Parsing, chunking, embedding, reranking, and the vector store all run on-device with zero network egress. The only network-capable call is the final answer-generation step, and a boot-time egress guard refuses to start the server if that endpoint isn't a loopback or private address.
Nongor ships its own eval harness against a hand-labeled question set, enforcing gates: Recall@5 ≥ 85%, Recall@10 ≥ 92%, answer faithfulness ≥ 90% (scored by an LLM-as-judge), and a valid-citation rate ≥ 95%. CI fails automatically on any ≥3% relative regression against the last run.
Yes. Point the single call_llm() chokepoint at a local runtime (Ollama, vLLM, or LM Studio) and the whole stack, including generation, runs with zero external network calls. The full system ships as a Docker Compose deployment.
PDF, DOCX, PPTX, HTML, Markdown, and plain text, plus direct URLs. Office and PDF formats are parsed with Docling to preserve structure; web pages use trafilatura with a headless Playwright fallback for JavaScript-rendered content.
Any OpenAI-compatible endpoint (DeepSeek, OpenAI, Ollama, vLLM, or LM Studio) selected with a single config flag. Embedding and reranking always use the local BGE models regardless of which LLM you choose for generation.
An intent router skips retrieval entirely for general chat so it doesn't force a source that doesn't exist. When a generated claim's citation id doesn't resolve to a retrieved chunk, it's flagged as invalid rather than rendered as a trustworthy source.