R2R
生产级 Agentic RAG 系统,支持多模态文档 ingestion、混合搜索、知识图谱与 De
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
生产级 Agentic RAG 系统,支持多模态文档 ingestion、混合搜索、知识图谱与 De
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这样的场景:企业花费数百万元构建的知识库系统,律师查询判例时要翻阅三百份 PDF,投资顾问获取研报信息靠手动 Ctrl+F,研究人员整合多源文献靠复制粘贴——大语言模型虽然强大,却像一个被困在玻璃罩里的天才,无法直接触及企业最珍贵的私有数据。
R2R(Retrieval-to-Rerank) 正是为了解决这个痛点而生。它不是又一个"给 AI 接个搜索框"的玩具项目,而是一套经过生产环境验证的完整检索增强生成(RAG)系统,获得了 7863 个 GitHub Stars,在同类开源项目中属于头部级别。
R2R 由 SciPhi AI 团队开发,核心作者 Owen Colegrove 是检索系统领域的老兵。项目的设计哲学是:让企业级 RAG 变得像安装一个 Python 包一样简单,同时保留足够的灵活性应对复杂场景。
项目支持 Python SDK 和 JavaScript SDK(pip install r2r 或 npm i r2r-js),通过 RESTful API 提供服务,端口 7272。Python 版本要求 3.10-3.12,依赖管理使用现代的 pyproject.toml。
R2R 的核心能力可以概括为四个字:海纳百川。在文件格式支持上,它几乎覆盖了你能想到的所有类型——PDF、Word、Excel、PPT、图片(JPEG/PNG/HEIC)、音频(MP3)、JSON、RTF,甚至 EPUB 电子书。这意味着企业不需要在导入前做繁琐的格式转换,数据工程师可以直接把原始文件丢进去。

R2R 的检索能力分为三个层次,适合不同复杂度的应用场景:
第一层:混合搜索(Hybrid Search)。 结合语义向量检索和传统关键词检索(BM25),通过倒数排名融合(Reciprocal Rank Fusion, RRF)合并结果。语义搜索理解查询意图,关键词搜索保证精确术语匹配,两者互补——比如"大模型幻觉问题的解决方案",语义搜索能找到讨论"LLM 可靠性"的关联文档,关键词搜索则确保"幻觉"这个专业术语不被忽略。
第二层:知识图谱增强。 R2R 内置自动实体识别和关系抽取,能从文档中构建知识图谱(Knowledge Graph),把非结构化文本转化为可推理的结构化网络。对于需要理解实体间关系的复杂查询(如"某公司供应商的上游原材料涨价了,对利润有什么影响?"),知识图谱能提供关联路径推理能力。
第三层:Agentic RAG(智能体 RAG)。 这是 R2R 最亮眼的功能——Deep Research API。这是一个多步推理系统,内置思考链(Chain-of-Thought),可以迭代式地从知识库和互联网获取信息,逐步深入复杂问题的答案。它支持配置模型(如 Anthropic Claude)、扩展思考令牌数(thinking_budget)、温度参数等参数。
# 一个典型的 Agentic RAG 调用
response = client.retrieval.agent(
message={"role":"user", "content": "分析 DeepSeek R1 对市场的影响"},
rag_generation_config={
"model": "anthropic/claude-3-7-sonnet-20250219",
"extended_thinking": True,
"thinking_budget": 4096,
"temperature": 1,
"max_tokens_to_sample": 16000,
}
)

从代码结构来看,R2R 的技术选型非常务实:核心框架是 FastAPI(异步 REST 服务),通过 LiteLLM 实现对多种大模型的统一调用(支持 OpenAI、Anthropic、Mistral、Google Gemini、Azure AI、Ollama 本地模型等),向量存储默认使用 pgvector(PostgreSQL 插件),也支持 VECS 等替代方案。
项目采用分层架构:
core/ — 核心业务逻辑,包含 agent、base、providers、parsers 等子模块r2r/ — SDK 封装层,对外暴露简洁的客户端接口sdk/ — Python/JS 两种 SDK 实现shared/ — 共享抽象层(abstractions、api)tests/ — 完整的单元测试和集成测试套件(pytest + pytest-asyncio)依赖生态极其丰富:anthropic(Claude API)、openai(GPT 系列)、google-genai(Gemini)、ollama(本地部署)、boto3(AWS S3)、beautifulsoup4(HTML 解析)、pypdf(PDF 处理)等数十个包,覆盖了从文件解析到模型调用的全链路。
代码质量方面,项目使用 pytest 做测试(覆盖率报告通过 pytest-cov),mypy 做类型检查,ruff 做代码风格检查(Lint + Formatting),pre-commit 做提交前检查,整体质量属于开源项目中的上乘水准。文档质量极高,拥有完整的文档站点(r2r-docs.sciphi.ai)和多份使用手册(Application、Custom Tools、Graphs、Evals、MCP 等 Cookbooks)。
R2R 支持完全本地部署,数据不离开你的服务器——这对金融、医疗、法律等敏感行业是刚性需求。系统提供完整的用户认证和访问控制(JWT、bcrypt 密码加密),支持基于集合(Collection)的文档权限隔离。
当然,如果选择使用云端大模型 API,数据会有部分流向第三方服务,项目使用 Sentry 做错误监控、SendGrid/Mailersend 做邮件通知,这些也是需要注意的隐私考量点。
R2R 提供了极其灵活的部署选项:
轻量模式(推荐尝鲜): 一行命令 pip install r2r && python -m r2r.serve,绑定 OPENAI_API_KEY 即可运行,使用内置 SQLite 存储。不需要 Docker,不需要数据库,适合个人开发测试。
标准模式(docker-compose): docker compose -f compose.yaml up -d,自动启动 R2R 服务 + Dashboard,可选启动 Postgres(pgvector)+ MinIO 对象存储。约 5 分钟完成。
完整模式(docker-compose full): docker compose -f compose.full.yaml --profile postgres up -d,包含完整的生产依赖栈:PostgreSQL(pgvector 向量引擎)、MinIO(S3 兼容对象存储)、R2R Graph Clustering 聚类服务、R2R Dashboard 管理界面。可选 Hatchet(任务队列)实现异步处理。
Kubernetes 部署: 提供完整的 Kustomize manifest,包含 ConfigMap、Secret、StatefulSet、Deployment、Service、Ingress 等所有 K8s 资源,支持 Helm values 覆盖,适合企业级生产环境。
R2R 并非完美,部署和使用中需要注意以下问题:
GPU 不是必须的,但内存有要求。 R2R 本身是 CPU 友好的(向量计算和 LLM 调用是分离的),但如果你要跑本地 Embedding 模型(如 BGE 或 E5),至少需要 4GB 以上 RAM。向量索引会占用磁盘空间,大型知识库需要预留足够存储。
配置复杂度较高。 full 模式的 docker-compose.yaml 涉及 8 个服务,理解各服务之间的关系需要一定时间。R2R 配置文件(r2r.toml)选项众多,新手容易迷路。
云端依赖不可避免。 虽然 R2R 支持本地部署,但如果你使用云端大模型(OpenAI GPT、Claude),数据检索结果和查询内容会经过第三方 API。对于极度敏感的数据,必须配合 Ollama 或 vLLM 等本地模型使用,此时对硬件要求会大幅提高。
文档有盲区。 某些高级功能(如 MCP 集成、K8s 内部细节)的文档不够完整,需要参考源码或 Discord 社区求助。
R2R 代表着 RAG 领域一个值得关注的趋势——从"能用"到"好用"的工程化跨越。相比 LangChain、LlamaIndex 等通用 LLM 框架的"大而全",R2R 专注在检索增强这个细分场景做深,提供了开箱即用的生产体验。
项目当前 v3.6.6 版本,维护活跃度较高(GitHub commit activity 表现良好),社区通过 Discord 维护活跃,有 7 个贡献者持续参与。项目支持 MCP(Model Context Protocol),能够与 AI Agent 生态无缝集成。
对于企业来说,如果你的核心需求是"把私有知识库变成可对话的 AI 应用",R2R 是一个值得认真评估的选项——它比从零构建省 80% 的工程量,比直接买商业产品省 90% 的成本。
技术评分: