The open-source RAG stack
From a folder of PDFs and a list of URLs to answers you can measure — seven repos in pipeline order, with the why at every step and a way out when chunk-and-embed stops working.
7 steps · every link human-reviewed · how we curate →
- 1
Firecrawl's Rust PDF triage: classifies text-based vs scanned in ~10-50ms, extracts positioned text and clean Markdown without OCR — routing the ~54% of PDFs that never needed a model.
Why this stepMost pipelines OCR everything. About half of PDFs are text-based and never needed a model — this classifies each one in tens of milliseconds and extracts the text locally, so only the genuinely scanned pages go on to something expensive. - 2
Datalab's 39k-star PDF-to-Markdown/JSON converter: a layout pipeline plus an optional LLM pass for tables, forms and equations, with chunk output and form-value extraction built in.
Why this stepThe scanned half, and anything with tables, forms or equations. A layout pipeline that runs on your own hardware, with an optional LLM pass on only the blocks that need it. Check the model-weights licence before you ship it commercially. - 3
The 74k-star LLM-native crawler: turns any site into clean, RAG-ready Markdown — adaptive crawling, JS rendering, extraction strategies, Docker deploy. Python, Apache-2.0.
Why this stepThe other half of your corpus lives on the web. This is the default when the deliverable is Markdown for a model rather than rows for a database — JS rendering, content filtering, deep crawl, one Docker command. - 4
Data framework for connecting custom data sources to LLMs — ingestion, indexing, retrieval.
Why this stepNow wire it together. Loaders for what the first three produced, chunking, indexing and query engines in one framework — so the retrieval logic lives in one place instead of in glue code. - 5
Open-source embedding database for building AI apps with retrieval.
Why this stepSomewhere to put the embeddings. The boring default: embedded or served, metadata filtering, persistence, first-class LlamaIndex support. Stay here until scale forces a choice; its page lists what to reach for then. - 6
Vectorless, reasoning-based RAG — builds a hierarchical tree index from long documents so an LLM retrieves by relevance instead of similarity. No chunking, no embeddings, no vector DB.
Why this stepThe way out when chunk-and-embed returns "similar but irrelevant" — long, structured documents like contracts, filings and manuals. No chunks, no embeddings: a tree index the model reasons over. Costs an LLM call per query, so use it where similarity search fails, not everywhere. - 7
Evaluation toolkit for your RAG and agent pipelines — faithfulness, relevance, and more.
Why this stepRetrieval quality is invisible until you measure it. Faithfulness, answer relevance, context precision and recall — run it before every change to the chunker, the embedder or the store, so you know which one moved the number.
Something missing from this path?
Every suggestion goes through the same human review as the rest of the map.
Suggest a repo