finds.dev← search

// the find

SciPhi-AI/R2R

★ 7,884 · Python · MIT · updated Nov 2025

SoTA production-ready AI retrieval system. Agentic Retrieval-Augmented Generation (RAG) with a RESTful API.

R2R is a production-oriented RAG framework that handles the full pipeline: document ingestion (PDF, audio, images, etc.), hybrid semantic+keyword search, knowledge graph construction, and an agentic reasoning layer on top. It's aimed at teams who want a batteries-included RAG backend without stitching together LlamaIndex, a vector DB, a graph DB, and an orchestrator themselves.

The hybrid search with reciprocal rank fusion is a practical default that most DIY setups skip and later regret. The two-tier architecture (light mode via `python -m r2r.serve`, full mode via Docker Compose with Hatchet for async orchestration) is a reasonable tradeoff between quick start and production readiness. Both Python and JS SDKs are first-class and tested with real integration tests, not just unit mocks. The knowledge graph layer (entity/relationship extraction) is built into the ingestion pipeline rather than bolted on as an afterthought.

The dependency surface is enormous — the full Docker Compose pulls in Postgres, Hatchet, RabbitMQ, MinIO, and an Unstructured service; a failure in any one of these takes down ingestion or retrieval in ways that aren't obvious to debug. The 'light mode' skips background orchestration entirely, meaning you can't do long-running ingestion jobs without upgrading to the full stack. Knowledge graph quality is entirely dependent on LLM extraction quality, and there's no clear mechanism to inspect or correct bad entity merges before they pollute retrieval. Last push was November 2025 and activity appears to have slowed — worth checking the issue tracker before committing to it as infrastructure.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →