RAGFlow:深度文档理解RAG引擎安装与使用指南
官方信息
| 项目名称 | RAGFlow |
| 仓库地址 | https://github.com/infiniflow/ragflow |
| 官方网站 | https://ragflow.io |
| 最新更新时间 | 2026-10-21 |
| Star 数 | 45k+ |
| 项目定位 | 基于深度文档理解的开源 RAG 引擎,擅长处理复杂 PDF 和表格 |
项目背景
RAGFlow 是由 infiniflow 团队开源的 RAG(Retrieval-Augmented Generation)引擎。市面上大多数 RAG 系统在处理纯文本时表现不错,但一遇到带复杂表格、图片、扫描件、多栏排版的 PDF 就抓瞎——切分不对、表格丢失、检索召回率低。RAGFlow 的核心卖点就是"深度文档理解":它用视觉模型 + 布局分析来解析文档,能准确识别标题、段落、表格、图片,并保留它们之间的逻辑关系。
在企业知识库场景中,大量文档是合同、财报、技术白皮书、医学文献——这些都是复杂排版的 PDF。传统的 RAG 方案把 PDF 粗暴转成纯文本再切分,结果就是"问财报里某季度营收"根本答不对,因为表格信息已经丢了。RAGFlow 通过 DeepDoc 文档解析引擎,把 PDF 还原成结构化的 Markdown 带表格,再做切片和向量化,检索质量显著提升。
RAGFlow 同时提供了完整的 Web UI:上传文档、选择解析模板、测试检索效果、调试 Prompt、发布 API——一条龙服务,不需要写代码。
核心特性
- DeepDoc 深度文档解析:OCR + 布局分析 + 表格识别,支持扫描件 PDF、多栏排版、复杂表格。
- 多种切分模板:通用、论文、法律、手册、表格、图片等预设模板,针对不同文档类型优化切分策略。
- 混合检索:向量检索 + 全文检索(BM25)+ 重排序(Rerank),三路融合提升召回。
- 引用溯源:回答会标注来自原文的哪一页、哪一段,可点击查看出处。
- 可视化调试:可以看到每个 chunk 的内容、向量相似度分数,调参直观。
- 多模型接入:支持 OpenAI、DeepSeek、通义、Ollama、本地嵌入模型。
- API 优先:所有功能都有 REST API,可嵌入自有应用。
环境要求
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| 操作系统 | Ubuntu 20.04+ | Ubuntu 22.04 LTS |
| Docker | 20.10+ | 24.0+ |
| Docker Compose | v2.0+ | v2.20+ |
| CPU | 4 核 | 8 核+ |
| 内存 | 8 GB | 16 GB+ |
| 磁盘 | 20 GB | 50 GB+ SSD |
| GPU(可选) | 无 | NVIDIA 4GB+(加速文档解析) |
详细部署步骤
第一步:安装 Docker
curl -fsSL https://get.docker.com | bash
systemctl start docker && systemctl enable docker
docker --version && docker compose version
第二步:克隆 RAGFlow
cd /opt
git clone https://github.com/infiniflow/ragflow.git
cd ragflow/docker
第三步:配置环境变量
# 编辑 .env 文件
vim .env
# 关键配置:
# 服务器内存小于 16GB 用 slim 镜像;大于 16GB 用完整镜像
# 镜像版本在 docker-compose.yml 中修改:
# ragflow:ragflow:x.y.y-slim # 轻量版(CPU 推理,约 2GB)
# ragflow:ragflow:x.y.y # 完整版(含本地 embedding 模型,约 9GB)
# 时区
TIMEZONE=Asia/Shanghai
# 端口(默认 80,被占用就改)
SVR_HTTP_PORT=9380
第四步:启动 RAGFlow
# 拉取镜像并启动
docker compose up -d
# 查看日志,等待初始化完成
docker compose logs -f ragflow
首次启动会下载模型文件,需要 5-15 分钟,看到 Uvicorn running on http://0.0.0.0:9380 即启动成功。
第五步:初始化账号
浏览器访问 http://你的服务器IP:9380:
- 首次使用点击"注册"
- 输入邮箱、密码(管理员账号)
- 登录后进入主界面
第六步:配置 LLM 模型
右上角头像 → 模型提供商,以 DeepSeek 为例:
- 选择 DeepSeek
- 填入 API Key
- 保存,设为默认聊天模型
如果用本地 Ollama:
- 选择 Ollama
- 服务器地址填
http://host.docker.internal:11434(Docker 内访问宿主) - 填入模型名(如 qwen2.5:7b)
第七步:创建知识库并上传文档
- 左侧"知识库" → 新建知识库
- 选择切片方法:
- General:通用文档,适合普通文本
- Book:书籍类,保留章节结构
- Paper:学术论文,按摘要/引言/方法切分
- Law:法律条文,按条款切分
- Manual:产品手册
- Table:纯表格文档
- 选择 Embedding 模型(如 BAAI/bge-large-zh-v1.5)
- 上传 PDF / Word / Excel / TXT
- 等待解析完成(状态变为"已完成")
第八步:测试检索效果
- 进入知识库 → "测试"标签
- 输入一个问题,查看召回的 chunks 和相似度分数
- 调整 Top N、相似度阈值、重排序开关
- 满意后进入"聊天" → 新建助手,关联该知识库
第九步:API 调用
在"头像 → API"中生成 API Key,然后:
# 发起对话
curl -X POST 'http://your-server:9380/api/v1/chats/chat-id/completions' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"question": "这份文件的核心结论是什么?",
"stream": false
}'
常见坑与解决
- OOM 启动失败:8GB 内存机器用
slim镜像,并设置MEM_LIMIT=4G。 - PDF 解析乱码:扫描件需要 OCR,确认用的是完整版镜像(不是 slim)。
- 中文检索效果差:Embedding 模型选中文优化的 bge-large-zh,不要用英文模型。
- 文档上传后一直 parsing:检查 Elasticsearch 状态
docker compose logs es,通常是内存不足。
使用方法示例
默认端口 9380,注册第一个账号即为管理员。RAGFlow 内置的 Elasticsearch + Infinity 向量数据库全部在 Docker 内,无需额外安装。生产环境建议把 9380 端口反代到 Nginx 并加 HTTPS。
常见问题 FAQ
Q1:RAGFlow 和 Dify 知识库有什么区别?
A:RAGFlow 专注文档解析深度,复杂 PDF/表格处理能力强;Dify 是全功能 LLM 平台,知识库只是其中一个模块。如果你主要需求是"喂大量 PDF 进去问答",RAGFlow 更好;如果还要工作流和 Agent,选 Dify。
Q2:支持多少并发?
A:默认 Docker 配置支持 10-50 并发,生产环境建议加 GPU 跑 Embedding 和 Rerank,并用 Nginx 负载均衡。
Q3:数据存在哪里?
A:文档原文和 chunk 存在 Elasticsearch,向量存在 Infinity/ES,元数据存在 MySQL。都在 Docker volumes 里。
Q4:能微调模型吗?
A:RAGFlow 是 RAG 引擎,不做微调。它的定位是检索增强,不是训练平台。
Q5:开源协议?
A:基于 Apache 2.0,允许商用。
跳转链接
- GitHub 仓库:https://github.com/infiniflow/ragflow
- 官方文档:https://ragflow.io/docs/dev/
- 在线 Demo:https://demo.ragflow.io