海域重启礼包码汇总 海域重启最新可用兑换码分享
2026-07-21
2026-07-21 0
一句话定位: RAGFlow 是 infiniflow 团队开源的 RAG(检索增强生成)引擎,核心差异点是深度文档理解(DeepDoc)——能从复杂格式(PDF、扫描件、表格、幻灯片等)中精准提取结构化知识,配合多路召回+重排序,为 LLM 提供高质量、可溯源的上下文。目前 GitHub 81.6k Stars。

它同时融合了 Agent 能力、MCP 支持、代码执行沙箱和记忆系统,不只是做一个向量检索库,而是想做一套企业级的 RAG 工作流平台。
硬件要求: CPU ≥ 4 核,RAM ≥ 16 GB,磁盘 ≥ 50 GB
前置检查:
# 检查 vm.max_map_count,必须 ≥ 262144sysctl vm.max_map_count# 不够的话临时设置sudo sysctl -w vm.max_map_count=262144# 永久生效写入 /etc/sysctl.confecho "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
启动服务:
git clone https://github.com/infiniflow/ragflow.gitcd ragflow/docker# 可选:切换到稳定版本# git checkout v0.25.6# CPU 模式启动docker compose -f docker-compose.yml up -d# GPU 加速 DeepDoc(需 NVIDIA GPU)# sed -i '1i DEVICE=gpu' .env# docker compose -f docker-compose.yml up -d
确认启动成功:
docker logs -f docker-ragflow-cpu-1
看到 RAGFlow 的 ASCII Logo 和 Running on all addresses 即表示启动完成。
访问: 浏览器打开 http://你的服务器IP,默认端口 80。
直接访问 cloud.ragflow.io 使用托管版。
需要 Python 3.13、Node.js、Docker 基础服务(MinIO、ES/Infinity、Redis、MySQL)。详见官方文档「Launch service from source for development」。
首次登录后,需要先配置模型。RAGFlow 不内置商业大模型,需要你自己接入:
支持的模型来源:
配置路径: 登录后 → 右上角头像 → Model → 添加模型供应商
一个典型的配置需要设置:
Embedding 和 Rerank 直接影响检索质量,建议不要省。
RAGFlow 的使用遵循一个标准流水线:
创建知识库(Dataset) → 上传文件 → 解析/分块(Chunking) → 创建对话助手(Chat)/ Agent → 开始问答
下面按步骤拆解。
路径: 左侧菜单 Datasets → Create dataset
创建时需要配置几个关键参数:
| 参数 | 说明 |
|---|---|
| Name | 知识库名称 |
| Embedding Model | 选择刚才配置的 Embedding 模型 |
| Chunk Method | 分块策略,这是 RAGFlow 的核心能力之一 |
RAGFlow 提供了多种针对不同文档类型的分块模板:
| 分块策略 | 适用场景 |
|---|---|
| Naive | 通用文本,按固定长度切分 |
| Manual | 手动切分,用户自己定义边界 |
| Q&A | 问答对格式,适合 FAQ 类文档 |
| Table | 表格数据,保留行列结构 |
| Paper | 学术论文,按章节结构切分 |
| Book | 书籍,按目录层级切分 |
| Laws | 法律条文,按条款结构切分 |
| Presentation | PPT/幻灯片,按页切分 |
| Picture | 图片,用多模态模型理解内容 |
| One | 整篇文档作为一个 chunk |
为什么分块策略很重要?
RAG 的效果很大程度上取决于 chunk 的质量。RAGFlow 的 DeepDoc 引擎会基于文档结构(标题、段落、表格、图片等)做智能分块,而不是无脑按字符数切。比如:
标题 → 摘要 → 章节 → 小节 的层级保留结构选好分块策略后,后续上传的文档会自动按这个策略处理。
路径: 进入 Dataset → Files → Upload
支持的文件格式:
上传后的处理流程:
人工干预环节:
RAGFlow 允许你在解析完成后查看和编辑 chunk:
这个功能很实在——自动分块不可能 100% 完美,尤其是复杂版面的 PDF 和扫描件,人工微调能显著提升问答质量。
路径: 左侧菜单 Chat → Create chat assistant
创建对话助手时需要关联一个或多个 Dataset,并配置检索策略:
| 参数 | 说明 |
|---|---|
| Datasets | 关联的知识库(可多选) |
| Rerank Model | 重排序模型,提升检索精度 |
| Similarity Threshold | 相似度阈值,低于此值的 chunk 会被过滤 |
| Top K | 每次检索返回多少个 chunk |
RAGFlow 的检索不是简单的向量相似度搜索,而是:
对话中使用:
用户:公司的报销流程是什么?AI:根据《员工手册》第三章第二节,报销流程如下:[1]1. 填写报销单...2. 部门主管审批...3. 财务审核...[1] 来源:员工手册.pdf,第 12 页,Chunk #5
每个回答底部会显示引用的 chunk,点击可以查看原文,减少幻觉。
除了基础的 Chat 问答,RAGFlow 还支持Agentic Workflow。
路径: 左侧菜单 Agents → Create agent
Agent 的核心能力:
如果你只需要检索相关片段,不需要 LLM 生成回答,可以用 Search 模式:
路径: 左侧菜单 Search
输入查询后,RAGFlow 会返回:
适合用来做文档检索、内容审核、相似度分析等场景。
RAGFlow 支持多用户协作:
路径: 左侧菜单 Team
RAGFlow 支持从外部系统自动同步数据:
配置好后,数据源更新会自动同步到 RAGFlow 中重新解析。
RAGFlow 提供了 RESTful API,可以把对话能力集成到自己的产品里。
基础调用流程:
Python SDK 示例:
from ragflow_sdk import RAGFlow# 初始化rag = RAGFlow(api_key="your-api-key", base_url="http://localhost:80")# 获取 Datasetdataset = rag.list_datasets()[0]# 创建对话助手assistant = dataset.create_chat_session(name="客服助手")# 对话for chunk in assistant.chat("公司的年假政策是什么?"):print(chunk.content, end="")
完整的 API 文档参考官方 References 章节。
理解架构对排查问题和性能调优至关重要。RAGFlow 是一个典型的"主从分布式架构"——前端 + API + 一组无状态 Worker + 一组有状态存储。这一章讲清三件事:组件角色分工、两条关键数据流、可替换点。
┌──────────────────────────────────────────────────────────────┐│接入层 ││ Web UI (:80) API Server (:9380) MCP 接入│└──────────────────────────────┬───────────────────────────────┘ │┌──────────────────────────────▼───────────────────────────────┐│业务层(RAGFlow Core 进程) ││ ├─ 文档处理 Worker(TaskExecutor)││ ├─ 对话 / Agent / Search 引擎││ └─ 代码沙箱(gVisor 隔离, 可选) │└──────────────────────────────┬───────────────────────────────┘ │┌──────────────────────────────▼───────────────────────────────┐│模型层(可插拔, 外部调用) ││ Chat Model · Embedding Model · Rerank Model · OCR/多模态 │└──────────────────────────────┬───────────────────────────────┘ │┌──────────────────────────────▼───────────────────────────────┐│存储层(Docker Compose 内置)││ Elasticsearch←向量 + 全文 + 倒排索引││ MySQL←元数据 / 用户 / Dataset / Chat 配置 ││ Redis←任务队列 / 缓存 / 会话状态 ││ MinIO←原始文件 / 解析中间产物 / 切片图片│└──────────────────────────────────────────────────────────────┘
| 组件 | 角色 | 默认端口 | 资源占用 | 关键日志 |
|---|---|---|---|---|
| Web UI (nginx) | 反向袋里 + 静态资源 | 80 | 极小 | docker logs docker-ragflow-cpu-1 |
| API Server | 业务中枢,对外暴露 RESTful API | 9380 | 中(4-8 GB) | 同上,关注 /api/v1/... 路由 |
| TaskExecutor | 解析、分块、向量化等长任务 | - | 吃 CPU / 内存 | task_executor.log |
| Elasticsearch | 向量 + 全文 + 倒排检索 | 9200 | 最吃内存(建议 heap ≥ 8 GB) | elasticsearch.log |
| MySQL | 元数据 | 3306 | 轻量 | mysql.log |
| Redis | 任务队列、缓存、会话 | 6379 | 极轻量 | redis.log |
| MinIO | 对象存储 | 9000 / 9001 (控制台) | 吃磁盘 | minio.log |
| Sandbox (gVisor) | Agent 代码执行隔离 | - | 可选 | sandbox.log |
ES 启动 → MySQL 启动 → Redis 启动 → MinIO 启动↓API Server 启动 → TaskExecutor 启动 → Web UI (nginx)
排查原则:先看依赖链上游。在 docker compose ps 里看到 "Restarting" 的容器,先排它前面的依赖。例如 ES 没起好,下游所有组件都会反复重启。
用户上传文件│▼[API Server]接收 → 校验格式 / 大小│▼[MinIO] 存原始文件,按 dataset_id 分桶│▼[Redis] 入队 task: parse_
排查要点:
task_executor.log,DeepDoc 步骤最慢、最容易 OOMdataset_id 是否匹配,权限配置是否正确用户提问 "公司年假政策是什么?"│▼[API Server]接收 → 关联 Chat / Agent 配置│▼[Query 预处理]←RAGFlow v0.20+ 已内置 Query 改写(可选开启)│▼[Elasticsearch] 多路召回├─ 向量召回:top_k × similarity_threshold 过滤├─ 关键词召回:BM25└─ 全文召回(可选)│▼多路结果融合 → 送 Rerank 模型重排│▼[Chat Model] 拼装 Prompt(系统提示 + 召回 chunks + 用户问题)→ 流式输出│▼[API Server] 把回答 + 引用 chunk 列表返回前端│▼前端渲染:"AI 回答 [1][2],底部显示来源 PDF / Page / Chunk"
排查要点:
| 组件 | 默认 | 备选 | 切换建议 |
|---|---|---|---|
| 检索引擎 | Elasticsearch 8.x | Infinity | 数据量 ≥ 千万级、纯向量为主 → 选 Infinity(性能更好、资源占用更低);否则 ES 稳定且生态全 |
| 文档解析 | DeepDoc | MinerU / Docling | 学术论文(公式多)→ MinerU;复杂版式 PDF → Docling;通用场景 → DeepDoc 已够用 |
| 对象存储 | MinIO | AWS S3 / 阿里 OSS / 腾讯 COS | 生产环境外接 S3 兼容存储更可靠;本地开发用 MinIO |
| 向量库 | 内嵌在 ES / Infinity | - | 不必单独切,ES 本身已是混合检索 |
如何切换检索引擎(以 ES → Infinity 为例):
# 1. 修改 .env# DOCUMENT_ENGINE=infinity# INFINITY_HOST=infinity# 2. 拉起新组件docker compose -f docker-compose.yml up -d infinity# 3. 重建索引(必须!数据格式不兼容)# 在 Web UI → Dataset → "重建索引"# 4. 重启 API Serverdocker compose restart ragflow
| 现象 | 优先查的组件 | 命令 | 优化方向 |
|---|---|---|---|
| 文件解析慢、CPU 满载 | TaskExecutor + DeepDoc | docker stats | 升 CPU 核数 / 开 GPU 加速 / 拆分大文件 |
| ES 查询慢、内存满 | Elasticsearch | curl :9200/_cat/nodes?v | 加 heap (ES_JAVA_OPTS=-Xms8g -Xmx8g) / 加节点 / 切 Infinity |
| LLM 回答慢 | API Server + 上游模型 | 看 nginx 响应时间 | 换更快的模型 / 改流式 / 加缓存 |
| MinIO 磁盘满 | MinIO | du -sh /var/lib/docker/volumes/... | 清理失败解析的中间产物 / 加磁盘 / 切 S3 |
| Web UI 加载慢 | Nginx | docker logs | 静态资源 CDN 化 / 开启 gzip |
RAGFlow 在三处留了扩展接口,不需要改核心代码,升级时也不会被覆盖:
deepdoc/parser 下实现,注册到 task_executor 即可生产部署推荐至少补两层:HTTPS(前置 Nginx/Caddy)+ 监控(Grafana + Prometheus,把上面那张表里的指标都接上)。
排查方向:
vm.max_map_count 设置RAGFlow 不是又一个简单的「上传文件 → 向量检索 → LLM 回答」的玩具项目。它在文档解析深度和分块智能度上下了真功夫,配合多路召回、重排序、引用溯源,确实能在企业复杂文档场景下给出更可靠的回答。
加上 Agent 工作流、MCP、代码沙箱和记忆系统,它正在从一个 RAG 引擎向一个企业知识处理平台演进。
如果你的场景涉及大量非结构化文档(合同、论文、手册、报表),且对回答的准确性和可追溯性有要求,RAGFlow 值得认真评估。
GitHub:github.com/infiniflow/…
文档:ragflow.io/docs/dev/
云服务:cloud.ragflow.io
如果你希望更快体验 AI 知识库、企业文档问答或 RAG 类应用,而不想一开始就投入服务器部署、模型配置、文档解析和运维成本,也可以关注 eBeeAI:
官网:ebeeai.net
它适合作为 RAGFlow 自建方案之外的补充选择:前者更适合需要深度定制、私有化部署和技术掌控的团队;而托管型或产品化平台更适合希望快速落地、验证场景、降低使用门槛的用户。