Our solutions

Nautris RAG Generator

A folder in. A RAG-ready corpus out. Point it at real documents and it compiles every one of them into clean, cited chunks you can load into your own vector store. It runs on your infrastructure, and what it produces does not need nautris to be useful.

The half of RAG nobody wants to build.

Embedding a corpus is a script you write in an afternoon. Getting a corpus worth embedding is months: a reader per format, layout that survives two columns, tables that keep their headers, and provenance good enough to cite. That is the part this does.

What it produces

Chunks you can defend, not just text you can search.

formatsPDF · Office · CSV · HTML · images · scans
typingby content, never by extension
structurereading order · tables keep their headers
provenancesource file · page · heading trail
runtimeyours. nothing leaves your network

A chunk is a unit of meaning, not a fixed character count. Two columns are read down, not across. A table arrives with its header row still attached to its values, which is the difference between a price that means something and a number floating in a wall of digits.

Every chunk carries where it came from. That is what lets an answer say contract.pdf, section 5.2, page 3 instead of "according to my documents", and it cannot be reconstructed later.

A workbench, not a black box

Watch it work. Then judge the result.

scanevery file typed, duplicates and oversized flagged
compileper-document progress, failures named
searchvector · keyword · hybrid, with provenance
re-scanonly new and edited files recompile

Nothing is sent before you have seen what will be sent, and why anything is being skipped. Compilation streams document by document, so a failure is a named file with a reason rather than a percentage that stalls.

When your documents change, re-scan. Only what actually changed is recompiled, and the superseded versions leave the index instead of lingering as stale answers.

Portable by design

The corpus is yours. It leaves with you.

The export is a self-describing bundle, not an opaque dump. A manifest documents every field, a generated README walks a complete pgvector path, and the app hands you ready-to-run code for four destinations.

pgvectorschema · loader · query, provenance included
langchainchunk to Document, metadata intact
typescriptstreamed, for Node and Next.js
anything elseit is JSONL. Qdrant · Chroma · Postgres FTS

No vectors, on purpose.

The chunks ship as text so you choose your own embedding model. That choice depends on your languages, your costs and the store you already run. Shipping vectors would quietly make it for you, and being locked to the wrong model is not repairable without redoing the corpus.

Embedding is one script. Nothing in the bundle needs nautris at runtime.

Where it runs

On your infrastructure, with your documents.

The generator and the engine are both self-hosted. Contracts, invoices and client files never leave your network, which for most teams is the deciding argument rather than a footnote.