RAGFlow 实现 GraphRAG 知识库多模态问答与 AI 编排流体验
1. RAGFlow 简介
RAGFlow 是一款基于深度文档理解的开源 RAG(Retrieval-Augmented Generation)引擎。它旨在解决传统 RAG 系统在处理复杂非结构化数据时的局限性,通过引入 GraphRAG(基于知识图谱的检索增强生成)技术,显著提升检索的准确性和可解释性。
核心特性
'Quality in, quality out'
- 深度文档理解:能够从各类复杂格式的非结构化数据中提取真知灼见,不仅仅是简单的文本切片。
- 无限上下文支持:真正在长上下文(Long Context)场景下快速完成大海捞针测试,确保关键信息不丢失。
基于模板的文本切片
- 可控可解释:不仅仅是智能,更重要的是可控。提供多种文本模板供用户选择,适应不同文档结构。
- 可视化调整:文本切片过程可视化,支持手动调整切片边界,优化检索效果。
降低幻觉(Hallucination)
- 有理有据:答案提供关键引用的快照并支持追根溯源,减少大模型幻觉问题。
- GraphRAG 支持:启发于知识图谱和思维导图,利用实体关系增强检索逻辑。
兼容各类异构数据源
- 丰富文件类型:支持 Word 文档、PPT、Excel 表格、txt 文件、图片、PDF、影印件、复印件、结构化数据、网页等。
- 多模态解析:支持解析音频文件,Q&A 解析方式支持 Markdown 文件和 Docx 文件,支持提取 Docx 中的图片和 Markdown 中的表格。
自动化的 RAG 工作流
- 企业级架构:全面优化的 RAG 工作流可以支持从个人应用乃至超大型企业的各类生态系统。
- 灵活配置:大语言模型 LLM 以及向量模型均支持配置,支持多路召回、融合重排序。
- API 集成:提供易用的 API,可以轻松集成到各类企业系统。
2. 环境要求与准备
在开始部署之前,请确保服务器满足以下最低硬件和软件要求:
- CPU:>= 4 核
- RAM:>= 16 GB(建议 32GB 以上以获得更好的性能)
- Disk:>= 50 GB(根据知识库大小预留空间)
- Docker:>= 24.0.0
- Docker Compose:>= v2.26.1
如果本机未安装 Docker,请参考官方文档自行安装。
2.1 系统参数优化
vm.max_map_count是 Linux 内核中的一个重要参数,它定义了一个进程可以拥有的最大内存映射区域数。RAGFlow 依赖 Elasticsearch 进行数据存储和检索,该服务对内存映射有较高需求。
- 性能优化:增加
vm.max_map_count 的值,允许应用程序创建更多的内存映射区域,从而提高性能和效率。
- 稳定性保障:如果超过限制,可能导致映射失败,引发性能问题或直接导致应用程序崩溃。
设置方法
-
临时设置:
sudo sysctl -w vm.max_map_count=262144
*注意:此更改在系统重启后会失效。
-
永久设置:
编辑 /etc/sysctl.conf 文件,添加或更新以下内容:
vm.max_map_count=262144
保存后执行以下命令使更改立即生效:
sudo sysctl -p
-
确认设置:
sysctl vm.max_map_count
输出应显示 262144 或更大。
3. 快速开始部署
3.1 克隆仓库
使用 Git 克隆 RAGFlow 官方仓库:
git clone https://github.com/infiniflow/ragflow.git
cd ragflow/docker
3.2 启动服务器
进入 docker 文件夹,利用提前编译好的 Docker 镜像启动服务器:
chmod +x ./entrypoint.sh
docker compose -f docker-compose-CN.yml up -d
注意:运行上述命令会自动下载 RAGFlow 的开发版本 Docker 镜像。如果你想下载并运行特定版本的 Docker 镜像,请在 docker/.env 文件中找到 RAGFLOW_VERSION 变量,将其改为对应版本。例如 RAGFLOW_VERSION=v0.11.0,然后重新运行上述命令。
镜像拉取提示:核心镜像文件大约 9 GB,可能需要一定时间拉取,请耐心等待。如果遇到网络问题,可参考相关镜像加速方案。
3.3 验证启动状态
服务器启动成功后,再次确认服务器状态:
docker logs -f ragflow-server
出现以下界面提示说明服务器启动成功:
____ ______ __
/ __ \ ____ _ ____ _ / ____// /____ _ __
/ /_/ // __ `// __ `// /_ / // __ \| | /| / /
/ _, _// /_/ // /_/ // __/ / // /_/ /| |/ |/ /
/_/ |_| \__,_/ \__, //_/ /_/ \____/ |__/|__/
/____/
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:9380
* Running on http://x.x.x.x:9380
INFO:werkzeug:Press CTRL+C to quit
如果跳过这一步系统确认步骤就登录 RAGFlow,浏览器可能会提示 network abnormal 或 网络异常,因为 RAGFlow 可能并未完全启动成功。
在你的浏览器中输入你的服务器对应的 IP 地址并登录 RAGFlow。
默认 HTTP 服务端口为 80,无需输入端口号。例如:http://IP_OF_YOUR_MACHINE
4. 配置大模型与 API Key
在登录后的管理后台中,需要配置连接的大模型服务。
- 进入 设置 -> 模型工厂。
- 在
user_default_llm 栏配置 LLM factory(如 OpenAI, Azure, 本地部署模型等)。
- 在
API_KEY 栏填写和你选择的大模型相对应的 API key。
- 对于 GraphRAG 相关的向量模型,同样需要在相应模块进行配置。
具体配置细节请参考官方文档中的模型接入指南。
5. GraphRAG 知识库构建
GraphRAG 是 RAGFlow 的核心亮点之一,它通过构建知识图谱来增强检索能力,特别适用于需要理解实体间关系的复杂问答场景。
5.1 创建知识库
- 点击 知识库 菜单,选择 新建知识库。
- 选择 GraphRAG 模式作为索引策略。
- 上传文档(支持 PDF, Word, Excel, Markdown 等)。
5.2 解析策略配置
在文档上传后,需配置解析策略以优化图谱构建:
- Chunking Strategy:选择适合文档结构的切片模板。对于包含大量实体关系的文档,建议使用基于段落或语义的切片方式。
- Entity Extraction:启用实体抽取功能,系统将自动识别文档中的人名、地名、机构等实体。
- Relation Extraction:启用关系抽取,建立实体之间的关联,形成知识子图。
5.3 检索与问答
配置完成后,即可在 问答 模块进行测试:
- 输入自然语言问题。
- 系统将通过向量检索结合图谱路径检索,返回更精准的答案。
- 答案下方会展示引用来源及图谱路径,方便验证信息的可靠性。
6. Agent 编排流体验
RAGFlow 支持 Agentic RAG,即基于工作流的智能体编排,允许将多个工具、模型和知识库串联起来。
6.1 创建工作流
- 进入 Agent 菜单,选择 新建工作流。
- 拖拽组件构建流程,例如:
- Start Node:接收用户输入。
- Knowledge Base Node:调用已配置的 GraphRAG 知识库。
- LLM Node:调用大模型生成回答。
- Condition Node:根据条件分支处理不同逻辑。
- End Node:输出最终结果。
6.2 医疗问诊模板示例
RAGFlow 内置了医疗问诊模板,可作为学习参考:
- 用户上传病历文档。
- 系统提取关键症状和诊断信息。
- 结合医学知识库进行推理。
- 输出初步建议。
7. 常见问题排查
7.1 资源不足问题
ES(Elasticsearch)会占用较多内存资源。如果发现服务不稳定或启动缓慢,建议调整 .env 文件中的内存限制。
修改 .env 文件,根据自己内存资源进行设置:
MEM_LIMIT=72864896288
*注:建议设置为物理内存的 70%-80%,避免影响宿主机其他服务。
7.2 网络异常
如果浏览器提示 network abnormal,请检查:
- 防火墙是否放行了相关端口。
- Docker 容器是否完全启动(查看
docker logs)。
- 服务器安全组是否开放了 80 或 9380 端口。
7.3 镜像拉取失败
如果镜像拉取太慢,可尝试配置 Docker 镜像加速器,或使用国内镜像源替换默认地址。
8. 总结
RAGFlow 通过结合深度文档理解与 GraphRAG 技术,为企业提供了强大的多模态问答与 AI 编排能力。通过合理的系统配置、知识库构建及 Agent 工作流设计,用户可以快速搭建符合业务需求的智能应用。持续关注官方更新,获取最新的功能支持与优化建议。