5分钟上手R2R:让AI像专家一样精准回答的开源检索引擎

【免费下载链接】R2R 【免费下载链接】R2R 项目地址: https://gitcode.com/GitHub_Trending/r2/R2R

你是否遇到过这些问题:企业知识库文档太多难以查找?AI回答总是"编造"信息?需要处理PDF、图片甚至音频中的知识?R2R(Retrieval-Augmented Generation)作为新一代开源检索增强生成系统,通过RESTful API提供企业级知识管理能力,让AI回答不仅准确有据,还能自动构建知识图谱、支持多模态内容处理。以下是使用R2R的完整指南,包含环境搭建、核心功能演示和实战案例。

核心功能概览

R2R的架构围绕四大核心能力设计,满足从个人开发者到企业级应用的全场景需求:

  • 📁 多模态摄入:支持解析文本(TXT/Markdown)、文档(PDF/DOCX)、图片(PNG/JPG)、音频(MP3)等20+格式,完整列表见支持文件类型
  • 🔍 混合搜索:结合语义向量搜索与关键词检索,通过 reciprocal rank fusion 算法优化结果排序,搜索核心实现见检索服务
  • 🔗 知识图谱:自动从文档中提取实体与关系,构建可可视化的知识网络,实现关联推理,详见图服务模块
  • 🤖 智能代理:集成深度研究API,支持多步骤推理,能调用外部工具(如网络搜索)回答复杂问题,代理逻辑位于agent模块

快速开始:3步搭建本地服务

环境准备

R2R提供两种部署方式,推荐新手使用Python快速启动模式:

# 安装核心库
pip install r2r

# 配置API密钥(以OpenAI为例)
export OPENAI_API_KEY="你的API密钥"

# 启动轻量服务
python -m r2r.serve

生产环境推荐使用Docker Compose完整部署,包含数据库与所有扩展功能:

# 克隆仓库
git clone https://gitcode.com/GitHub_Trending/r2/R2R && cd R2R

# 配置环境变量
export R2R_CONFIG_NAME=full OPENAI_API_KEY="你的API密钥"

# 启动服务栈
docker compose -f docker/compose.full.yaml --profile postgres up -d

服务启动后,访问 http://localhost:7272 即可使用API,完整配置选项见配置文件模板

基础操作演示

1. 初始化客户端

Python SDK提供简洁的API接口,首先创建客户端连接本地服务:

from r2r import R2RClient
client = R2RClient(base_url="http://localhost:7272")

JavaScript开发者可使用JS SDK

const { r2rClient } = require('r2r-js');
const client = new r2rClient("http://localhost:7272");
2. 文档管理

上传示例文档(支持本地文件或URL):

# 上传PDF文件(示例文件路径:py/core/examples/data/DeepSeek_R1.pdf)
client.documents.create(file_path="py/core/examples/data/DeepSeek_R1.pdf")

# 查看已上传文档
documents = client.documents.list()
print(f"已上传{len(documents)}个文档")
3. 检索与问答

基础检索获取相关片段:

# 语义搜索
results = client.retrieval.search(query="DeepSeek R1的技术特点")
print("搜索结果:", results[0]["content"])

带引用的RAG生成:

# RAG回答(自动引用来源)
response = client.retrieval.rag(query="DeepSeek R1相比传统模型有哪些改进?")
print("回答:", response["answer"])
print("引用:", [c["source"] for c in response["citations"]])

进阶应用:知识图谱与深度研究

自动构建知识图谱

R2R能从文档中提取实体关系,构建可查询的知识网络:

# 创建知识图谱
graph = client.graphs.create(name="AI模型知识库")

# 从文档导入实体
client.graphs.ingest_document(graph_id=graph["id"], document_id=documents[0]["id"])

# 查询实体关系
relations = client.graphs.query(
    graph_id=graph["id"],
    query="DeepSeek R1与大语言模型的关系"
)

知识图谱存储使用PostgreSQL, schema定义见数据库迁移文件

深度研究代理

对于复杂问题,可调用R2R的研究代理,它能规划步骤、调用工具并生成详细报告:

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": 0.7
    }
)
print(response["answer"])  # 包含多段推理过程的详细分析

代理的思考过程和工具调用逻辑在research.py中实现。

实战案例:企业知识库管理

某科技公司使用R2R构建内部知识库,实现以下功能:

  1. 文档集中管理:通过文档服务批量导入产品手册、API文档和会议纪要
  2. 权限控制:基于认证服务实现部门级文档访问控制
  3. 智能问答:集成到企业IM工具,员工提问时自动检索相关内部文档并生成答案
  4. 知识更新:通过维护服务定期重新处理更新的文档

该案例的完整配置示例见企业配置模板

扩展与定制

R2R支持多种扩展方式满足个性化需求:

  • 自定义解析器:通过解析器接口添加新文件类型支持,参考现有PDF解析器实现
  • 模型替换:修改配置文件切换LLM提供商(如替换为国产模型),支持Azure、Ollama、LM Studio等
  • API扩展:通过API路由添加自定义端点,参考文档API实现

资源与社区

通过R2R,开发者可以快速构建企业级知识管理系统,让AI应用具备精准、可追溯的知识检索能力。无论是客服机器人、智能问答系统还是研究助手,R2R都能提供坚实的检索增强基础,避免"幻觉"问题,让AI回答有据可查。

【免费下载链接】R2R 【免费下载链接】R2R 项目地址: https://gitcode.com/GitHub_Trending/r2/R2R

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐