10分钟R2R本地部署:免费跑通自己的AI文档问答系统
【免费下载链接】R2RSoTA production-ready AI retrieval system. Agentic Retrieval-Augmented Generation (RAG) with a RESTful API.项目地址: https://gitcode.com/GitHub_Trending/r2/R2R
部署完成后,你的文档库就住进了一台"会思考的检索引擎":上传 PDF、Word、网页,它自动切块、向量化,再基于文档内容回答问题并附上出处。这就是 R2R 本地部署要解决的事——一个带完整管理面板的开源 AI 文档检索与问答系统,全程跑在你自己的机器上。
🧭 方案选型:Docker 还是源码
| 维度 | Docker 部署 | 源码部署 |
|---|---|---|
| 上手速度 | 快,几条命令起全部容器 | 慢,需装 Python 环境、配依赖 |
| 可定制性 | 中,改配置文件即可生效 | 高,可深入改源码 |
| 适用人群 | 想先跑通、验证效果的普通用户 | 要二次开发的开发者 |
| 资源占用 | 全套约 8GB 内存起 | 视加载模块而定,更可控 |
建议:先用 Docker 跑通,确认满足需求后再考虑源码方式,避免一开始陷在环境搭建里。
✅ 环境自检:动手前花 2 分钟确认
| 检查项 | 最低要求 | 推荐值 | 如何确认是否达标 |
|---|---|---|---|
| Docker Desktop | 已安装并能运行容器 | 24.0 以上 | 终端执行docker version,能打印客户端和服务端版本 |
| 内存 | 8GB | 16GB | 系统设置里查看;Docker 需在设置里分配至少 8GB |
| 磁盘空间 | 10GB 可用 | 20GB | docker system df查看镜像占用,另留空间放文档数据 |
| 端口占用 | 7272、7273 空闲 | 同左 | netstat -an \| findstr 7272(Windows)或lsof -i :7272(Mac/Linux)无输出即空闲 |
| 网络 | 能拉取 Docker Hub 镜像 | 有加速配置 | docker pull hello-world能成功下载 |
别急,有一项没达标就先补上,后面会少踩很多坑。
🚀 分步部署:跟着做就行
第 1 步:拿到项目代码。克隆仓库并进入部署目录,这一步只为把 compose 文件和默认配置放到本地。
git clone https://gitcode.com/GitHub_Trending/r2/R2R cd R2R/docker # 部署文件都在这个目录执行后应看到compose.yaml、env/、user_configs/等文件,说明目录没错。
第 2 步:填上模型密钥。编辑 docker/env/r2r.env,找到OPENAI_API_KEY=这一行,把你的密钥填进去(后面接 Ollama 本地模型可以跳过这步)。其他变量如 Postgres 账号密码已有默认值,不用动。
第 3 步:启动服务栈。一条命令拉起 R2R 服务、数据库和管理面板,数据持久化到 Docker 卷里。
# --profile postgres 让向量数据库一起启动,数据不随容器销毁丢失 docker compose -f compose.yaml --profile postgres up -d首次会拉取镜像,耐心等待几分钟。执行后应看到各容器状态变为Up (healthy)。
第 4 步:打开管理面板。浏览器访问http://localhost:7273,用默认管理员账号登录(默认邮箱admin@example.com,密码change_me_immediately,来自认证配置项)。登录后应看到登录界面,输入凭证后进入文档管理页:
关于完整功能栈:上面的compose.yaml是轻量组合。如果你还需要 Hatchet 工作流编排(处理批量文档任务的后台调度器),改用 docker/compose.full.yaml,命令换成docker compose -f compose.full.yaml --profile postgres up -d,详细说明见官方文档 docs/README.md。
🤖 本地模型接入:数据不出内网
为什么接本地模型?两个理由:文档内容不经过任何第三方 API(隐私),以及按 token 计费的云模型在高频检索下会烧钱(成本)。R2R 内置 Ollama 配置模板,最小可运行组合是两个模型——一个负责生成回答的llama3.1,一个负责把文本变成向量的mxbai-embed-large:
# 拉取本地大模型和向量模型 ollama pull llama3.1 ollama pull mxbai-embed-large然后复用仓库里现成的 Ollama 配置 py/core/configs/full_ollama.toml:把它复制一份放到 docker/user_configs/ 目录,再到r2r.env里把R2R_CONFIG_PATH指向它,例如R2R_CONFIG_PATH=/app/user_configs/full_ollama.toml,重启容器生效。该目录的用途说明见 docker/user_configs/README.md。
🎯 验证闭环:看到这些才算部署成功
| 验证项 | 操作 | 成功的现象 |
|---|---|---|
| 健康检查 | 浏览器访问http://localhost:7272/v3/health | 返回 JSON,状态为正常 |
| 面板登录 | 访问 7273 端口并输入默认管理员凭证 | 进入文档管理页,而不是反复跳回登录框 |
| 文档入库 | 上传 py/core/examples/data/aristotle.txt,等状态变完成 | 文档列表里出现该文件,状态为成功 |
| 检索问答 | 在聊天框问一个只存在于文档里的问题 | 回答准确,且带可点击的文档出处引用 |
| 持久化 | 执行docker compose ps,重启容器后再看 | 文档和对话记录都还在 |
🛠️ 高频问题排障
现象:浏览器打不开 7273,一直转圈。原因:面板容器还在启动,或有程序占用了端口。 解法:docker compose ps确认所有服务是healthy;用端口检查命令排查占用,换端口后同步改r2r-dashboard.env。
现象:登录时提示凭证错误。原因:认证配置里改过默认账号,或require_authentication未开启导致行为不一致。 解法:对照 docker/env/r2r.env 与认证段的default_admin_email/default_admin_password核对一遍。
现象:问答无响应或报模型超时。原因:LLM 密钥没填,或 Ollama 没在跑。 解法:检查r2r.env里密钥非空;终端执行ollama list能看到两个模型,且ollama serve在后台运行。
现象:内存占用飙高,Docker 变卡。原因:full 栈包含 Hatchet、RabbitMQ 等多套容器。 解法:先用轻量compose.yaml验证;Docker Desktop 设置里把分配内存调到 12GB 以上。
现象:上传某类文件失败。原因:该格式没有对应解析器,或文件损坏。 解法:对照 py/core/examples/supported_file_types/ 里的示例确认格式在支持列表内,换个文件重试。
⚙️ 调优建议
- 分块别贪大:
chunk_size调小(如 512)检索更精准,调大(如 2048)上下文更完整,按文档长度二选一即可。 - 混合检索打开:语义检索加关键词检索一起用(RRF 融合排序),专有名词多的场景命中率明显更高。
- 并发限流:
concurrent_request_limit控制模型并发,本机跑 Ollama 时调低(比如 2~4),避免显存被打爆。 - 定期备份:
postgres_data卷里存着全部文档和向量,docker run -v导出该卷即可,换机迁移也靠它。 - 提示词在线改:面板设置页直接编辑各场景的提示词模板,不用重启服务,见 docs/cookbooks/images/application/settings_prompts.png 对应的设置界面。
下一步
系统跑通之后,把真实工作文档批量传进集合里,用聊天功能验证检索质量。如果问答还不够聪明,再去 py/core/configs/ 里挑一份更细的模型配置替换,然后按排障清单核对一遍环境变量。
【免费下载链接】R2RSoTA production-ready AI retrieval system. Agentic Retrieval-Augmented Generation (RAG) with a RESTful API.项目地址: https://gitcode.com/GitHub_Trending/r2/R2R
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考