RCRAG Converter

RAG citations: every chunk needs a source and a page

A RAG citation is only real if each retrieved chunk still knows the file and page it came from - without that metadata the model can be right and you still cannot show anyone the evidence.

The hosted parsers sell citations because production needs them

Reducto leads with citation-ready JSON and bounding boxes. LlamaParse keeps a source page on every extracted table row. Unstructured attaches coordinates and element types to every block. They are not decorating the output. A reviewer in legal, finance or support will not accept 'the model said so', and a passage that cannot be opened in the original file is not evidence. If you are converting yourself, the same fields have to survive into your index.

Store the minimum that lets someone open the source

Each chunk wants an id, the passage text, the source filename, and a position - a page number on a PDF, a slide number on a deck, a sheet name on a workbook, a timestamp on a transcript. Bounding boxes are better when you have them and not required when you do not. What is required is that the metadata is written at conversion time. You cannot reconstruct a page number later from an embedding.

How the text was obtained belongs next to it

Parsed text, OCR, speech, and a vision-model description are not the same kind of claim. A parsed sentence is a quotation. An OCR line is a machine's best reading of pixels and can be confidently wrong. A description of a chart is inference. An application that cites a passage as if it were quoted needs to know which of those it is holding, or it will present a guess in the same typeface as a contract clause. Carry the engine and the kind on the chunk.

JSONL is enough if the fields are actually there

There is no formal citation format for RAG. The working one is a JSON object per line with the passage, its vector and a metadata object. SpaceDB, Chroma, Qdrant, pgvector and LanceDB will all store whatever you put in that object - they will not invent a page number you omitted. RAG Converter writes source and chunk kind onto every line and a sibling manifest for the run, so a citation is a field you already have rather than a feature you add after the first audit.

More on converting for RAG

  • rusty_ragdocument ingest, chunking and retrieval
  • rusty_xmlWord, PowerPoint and Excel, without LibreOffice
  • rusty_jpeg / rusty_pngimage decode
  • rusty_flacaudio decode
  • rusty_zstdcompression
  • rusty_allocthe allocator, in wasm too
  • rusty_timeNTP timestamps on every chunk
  • spacedbthe storage seam, CRDT per entry
  • FFAIthe AI toolkit the three engines below come from
  • CarmentaOCR - reads scans and screenshots, in your browser
  • Mercuryspeech recognition - turns recordings into transcripts
  • Argusvision - describes images and video frames

MATA Corporate Holdings © 2026 — Made in Scottsdale, Arizona

Remade with Rust