之前简单调研了一下RAG开源项目:RAG开源框架调研笔记,看上去ragflow挺好的,就试了试
github:
https://github.com/infiniflow/ragflow
文档:
https://ragflow.io/docs/v0.22.1/
阿里云有直接部署的方案:
RAGFlow阿里云部署方案
架构:

笔者记录的时候最新版本是0.22.1,笔者试玩的是0.22.0 
文章目录
- [1 开始使用 | RAGFlow](#1 开始使用 | RAGFlow)
-
- [1.1 本地化部署配置要求](#1.1 本地化部署配置要求)
- [1.2 启动服务器](#1.2 启动服务器)
- [1.3 docker里面有哪些模组](#1.3 docker里面有哪些模组)
- [1.4 ragflow的WEB UI主页面](#1.4 ragflow的WEB UI主页面)
- [1.5 ragflow管理页面](#1.5 ragflow管理页面)
- [1.6 ragflow密码登录问题](#1.6 ragflow密码登录问题)
- [2 新建知识库-内置-分块-Ingestion Pipeline](#2 新建知识库-内置-分块-Ingestion Pipeline)
-
- [2.1 不同分块支持的文件格式](#2.1 不同分块支持的文件格式)
- [2.2 General](#2.2 General)
- [2.3 Q&A 分块](#2.3 Q&A 分块)
- [2.4 Resume分块方法:](#2.4 Resume分块方法:)
- [2.5 Manual分块方法:](#2.5 Manual分块方法:)
- [2.6 Table分块方法:](#2.6 Table分块方法:)
- [2.7 Paper 分块方法:](#2.7 Paper 分块方法:)
- [2.8 Book分块方法:](#2.8 Book分块方法:)
- [2.9 Laws分块方法:](#2.9 Laws分块方法:)
- [2.10 Presentation 分块方法:](#2.10 Presentation 分块方法:)
- [2.11 One分块方法:](#2.11 One分块方法:)
- [2.11 Tag分块方法:](#2.11 Tag分块方法:)
- [3 PDF解析器](#3 PDF解析器)
-
- [3.1 DeepDoc](#3.1 DeepDoc)
- [3.2 MinerU PDF](#3.2 MinerU PDF)
- [4 知识库配置其他功能点](#4 知识库配置其他功能点)
-
- [4.1 配置 LLMs](#4.1 配置 LLMs)
- [4.2 设置页面排名 | RAGFlow](#4.2 设置页面排名 | RAGFlow)
- [4.3 自动关键词提取、自动问题提取](#4.3 自动关键词提取、自动问题提取)
-
- [4.3.1 什么是 Auto-keyword?](#4.3.1 什么是 Auto-keyword?)
- [4.3.2 什么是 Auto-question](#4.3.2 什么是 Auto-question)
- [4.3.3 不同场景的值设置范围](#4.3.3 不同场景的值设置范围)
- [4.4 Excel2HTML-表格转HTML](#4.4 Excel2HTML-表格转HTML)
- [4.5 使用召回增强 RAPTOR 策略](#4.5 使用召回增强 RAPTOR 策略)
- [4.6 知识图谱生成](#4.6 知识图谱生成)
-
- [4.6.1 前提条件配置](#4.6.1 前提条件配置)
- [4.6.2 实体类型(必需)](#4.6.2 实体类型(必需))
- [4.6.3 方法](#4.6.3 方法)
- [4.6.4 实体解析/实体归一化](#4.6.4 实体解析/实体归一化)
- [4.6.5 社区报告](#4.6.5 社区报告)
- [4.6.6 快速开始](#4.6.6 快速开始)
- [4.6.7 常见问题](#4.6.7 常见问题)
- [5 知识检索测试](#5 知识检索测试)
-
- [5.1 前提条件与配置](#5.1 前提条件与配置)
- [5.2 测试](#5.2 测试)
1 开始使用 | RAGFlow
RAGFlow 是一个基于深度文档理解的开源 RAG(检索增强生成)引擎。当与 LLM 集成时,它能够提供真实的问答能力,并且有良好的引用支持,适用于各种复杂格式的数据。
1.1 本地化部署配置要求
- CPU ≥ 4 核(x86)
- RAM ≥ 16 GB
- 硬盘 ≥ 50 GB
- Docker ≥ 24.0.0 & Docker Compose ≥ v2.26.1
- gVisor:仅在您打算使用 RAGFlow 的代码执行器(沙盒)功能时需要
如果不按照这个配置,会报内存的错误,导致无法使用
1.2 启动服务器
这里说一下工作原理:
docker启动的时候,外部文件不能直接挂载的,比如笔者想/ragflow 文件夹下代码的时候,需要将docker外部文件修改好后,docker cp复制进去
如果我更改了一些代码,例如Python 后端已导入的模块不会热重载,改动后通常仍需重启容器或相应进程以生效。

克隆仓库:
bash
$ git clone https://github.com/infiniflow/ragflow.git
$ cd ragflow/docker
$ git checkout -f v0.22.1
使用预构建的 Docker 镜像并启动服务器:
使用 CPU 进行 DeepDoc 任务:
bash
$ docker compose -f docker-compose.yml up -d
| RAGFlow 镜像标签 | 镜像大小 (GB) | 稳定性 |
|---|---|---|
| v0.22.1 | ≈2 | 稳定发布 |
| nightly | ≈2 | 不稳定的夜间构建 |
注意
所示的镜像大小是指下载的 Docker 镜像的大小,它是压缩的。当 Docker 运行该镜像时,它会解压,导致显著更大的磁盘使用量。Docker 镜像解压后将扩展到约 7 GB。
在服务器启动并运行后检查服务器状态:
bash
$ docker logs -f docker-ragflow-cpu-1
以下输出确认系统成功启动:
____ ___ ______ ______ __
/ __ \ / | / ____// ____// /____ _ __
/ /_/ // /| | / / __ / /_ / // __ \| | /| / /
/ _, _// ___ |/ /_/ // __/ / // /_/ /| |/ |/ /
/_/ |_|/_/ |_|\____//_/ /_/ \____/ |__/|__/
* Running on all addresses (0.0.0.0)
一般情况下,需要等后台反应一下才能使用,很多东西在docker当中启动。
如果您跳过此确认步骤并直接登录 RAGFlow,您的浏览器可能会提示网络异常错误,因为此时您的 RAGFlow 可能尚未完全初始化。
在您的网页浏览器中,输入服务器的 IP 地址并登录 RAGFlow。
警告
使用默认设置,您只需输入 http://IP_OF_YOUR_MACHINE(不带端口号),因为可以省略默认配置下的 HTTP 服务端口 80。
1.3 docker里面有哪些模组
1.3.1 重要文件
在系统配置方面,您需要管理以下文件:
- .env: 包含 Docker 的重要环境变量。
- service_conf.yaml.template: 配置后端服务。它指定 RAGFlow 的系统级配置,并由其 API 服务器和任务执行器使用。在容器启动时,将根据此模板文件生成 service_conf.yaml 文件。此过程会替换模板中的任何环境变量,从而实现针对容器环境的动态配置。
- docker-compose.yml: 启动 RAGFlow 服务的 Docker Compose 文件。
要更新默认的 HTTP 服务端口(80),请转到 docker-compose.yml 并将 80:80 更改为 <YOUR_SERVING_PORT>:80。
对上述配置的更新需要重启所有容器才能生效:
docker compose -f docker/docker-compose.yml up -d
其他:
- docker-compose.yml: 设置 RAGFlow 及其依赖项的环境。
- docker-compose-base.yml: 设置 RAGFlow 依赖项的环境:Elasticsearch/Infinity、MySQL、MinIO 和 Redis。
重要
我们不主动维护 docker-compose-CN-oc9.yml、docker-compose-macos.yml,因此请自行承担风险。但是,欢迎您提交拉取请求以改进它们。
1.3.2 Docker 内含组件
.env 文件 包含 Docker 的重要环境变量。
service_conf.yaml.template 指定 RAGFlow 的系统级配置,并由其 API 服务器和任务执行器使用。
Elasticsearch
- STACK_VERSION: Elasticsearch 的版本。默认为 8.11.3
- ES_PORT: 用于将 Elasticsearch 服务暴露给主机的端口,允许外部访问运行在 Docker 容器内的服务。默认为 1200。
- ELASTIC_PASSWORD: Elasticsearch 的密码。
Kibana
- KIBANA_PORT: 用于将 Kibana 服务暴露给主机的端口,允许外部访问运行在 Docker 容器内的 Kibana 服务。默认为 6601。
- KIBANA_USER: Kibana 的用户名。默认为 rag_flow。
- KIBANA_PASSWORD: Kibana 的密码。默认为 infini_rag_flow。
MySQL
- MYSQL_PASSWORD: MySQL 的密码。
- MYSQL_PORT: 用于将 MySQL 服务暴露给主机的端口,允许外部访问运行在 Docker 容器内的 MySQL 数据库。默认为 5455。
MinIO
RAGFlow 利用 MinIO 作为其对象存储解决方案,利用其可扩展性来存储和管理所有上传的文件。
- MINIO_CONSOLE_PORT: 用于将 MinIO 控制台接口暴露给主机的端口,允许外部访问运行在 Docker 容器内的基于 Web 的控制台。默认为 9001。
- MINIO_PORT: 用于将 MinIO API 服务暴露给主机的端口,允许外部访问运行在 Docker 容器内的 MinIO 对象存储服务。默认为 9000。
- MINIO_USER: MinIO 的用户名。
- MINIO_PASSWORD: MinIO 的密码。
Redis
- REDIS_PORT: 用于将 Redis 服务暴露给主机的端口,允许外部访问运行在 Docker 容器内的 Redis 服务。默认为 6379。
- REDIS_PASSWORD: Redis 的密码。
RAGFlow
- SVR_HTTP_PORT: 用于将 RAGFlow 的 HTTP API 服务暴露给主机的端口,允许外部访问运行在 Docker 容器内的服务。默认为 9380。
- RAGFLOW-IMAGE: Docker 镜像版本。默认为 infiniflow/ragflow:v0.22.1(不包含嵌入模型的 RAGFlow Docker 镜像)。
1.4 ragflow的WEB UI主页面

ragflow的WEB UI主页面:
管理员界面登录
(文档):
1.5 ragflow管理页面
默认管理员账号与密码:
| 用户名 | 密码 |
|---|---|
| admin@ragflow.io | admin |


用户管理页面提供全面的工具来管理 RAGFlow 系统中的所有用户。
- 用户列表:以表格形式查看所有用户。
- 搜索用户:使用搜索栏按电子邮件或昵称查找用户。
- 过滤用户:单击过滤图标按状态过滤。
- 单击 "新用户" 按钮在对话框中创建新用户帐户。
- 通过使用启用列中的切换开关激活或停用用户,变更立即生效。
- 操作 (将鼠标悬停在行上以查看操作按钮):
- 查看详情:导航到用户详情页面以查看用户的详细信息。
- 更改密码:强制重置用户的密码。
- 删除用户:在确认后从系统中删除用户。
1.6 ragflow密码登录问题
笔者在初始化刚刚开始的时候,出现一个问题,就是使用admin密码一直登录不上
原因是,前端键入英文,后端会明文转码后键入,一直验证失败
所以,笔者就新建了一个账号,数字密码,并直接修改mysql后台,让这个账号成为超级管理员。
2 新建知识库-内置-分块-Ingestion Pipeline



2.1 不同分块支持的文件格式
RAGFlow 提供多种内置分块模板,以便于对不同布局的文件进行分块并确保语义完整性。在"解析类型"下的"内置分块方法"下拉菜单中,您可以选择适合文件布局和格式的默认模板。以下表格显示了每个支持的分块模板的描述和兼容文件格式:
| 模板 | 描述 | 文件格式 |
|---|---|---|
| 一般 | 文件根据预设的分块令牌数量连续分块。 | MD, MDX, DOCX, XLSX, XLS (Excel 97-2003), PPT, PDF, TXT, JPEG, JPG, PNG, TIF, GIF, CSV, JSON, EML, HTML |
| Q&A | 检索相关信息并生成答案以回应问题。 | XLSX, XLS (Excel 97-2003), CSV/TXT |
| 简历 | 企业版专用。您还可以在 demo.ragflow.io 上试用。 | DOCX, PDF, TXT |
| 手动 | ||
| 表格 | 表格模式使用 TSI 技术进行高效数据解析。 | XLSX, XLS (Excel 97-2003), CSV/TXT |
| 论文 | ||
| 书籍 | DOCX, PDF, TXT | |
| 法律 | DOCX, PDF, TXT | |
| 演示文稿 | PDF, PPTX | |
| 图片 | JPEG, JPG, PNG, TIF, GIF | |
| 一体化 | 每个文档整体分块(作为一个)。 | DOCX, XLSX, XLS (Excel 97-2003), PDF, TXT |
| 标签 | 数据集作为其他数据集的标签集。 | XLSX, CSV/TXT |
2.2 General

支持的文件格式为MD、MDX、DOCX、XLSX、XLS (Excel 97-2003)、PPTX、PDF、TXT、JPEG、JPG、PNG、TIF、GIF、CSV、JSON、EML、HTML。
此方法将简单的方法应用于块文件:
- 系统将使用视觉检测模型将连续文本分割成多个片段。
- 接下来,这些连续的片段被合并成Token数不超过"Token数"的块。

2.3 Q&A 分块
此块方法支持 excel 和 csv/txt 文件格式。
- 如果文件是 excel 格式,则应由两个列组成 没有标题:一个提出问题,另一个用于答案, 答案列之前的问题列。多张纸是 只要列正确结构,就可以接受。
- 如果文件是 csv/txt 格式 以 UTF-8 编码且用 TAB 作分开问题和答案的定界符。
- 未能遵循上述规则的文本行将被忽略,并且 每个问答对将被认为是一个独特的部分。

2.4 Resume分块方法:
支持的文件格式为DOCX、PDF、TXT。
简历有多种格式,就像一个人的个性一样,但我们经常必须将它们组织成结构化数据,以便于搜索。
我们不是将简历分块,而是将简历解析为结构化数据。 作为HR,你可以扔掉所有的简历, 您只需与'RAGFlow'交谈即可列出所有符合资格的候选人。

2.5 Manual分块方法:
仅支持PDF。
我们假设手册具有分层部分结构。 我们使用最低的部分标题作为对文档进行切片的枢轴。 因此,同一部分中的图和表不会被分割,并且块大小可能会很大。

2.6 Table分块方法:
支持XLSX和CSV/TXT格式文件。
对于 csv 或 txt 文件,列之间的分隔符为 TAB。
第一行必须是列标题。
列标题必须是有意义的术语,以便我们的大语言模型能够理解。 列举一些同义词时最好使用斜杠'/'来分隔,甚至更好 使用方括号枚举值,例如 'gender/sex(male,female)'。
表中的每一行都将被视为一个块。

2.7 Paper 分块方法:
仅支持PDF文件。
如果我们的模型运行良好,论文将按其部分进行切片,例如摘要、1.1、1.2等。
这样做的好处是LLM可以更好的概括论文中相关章节的内容, 产生更全面的答案,帮助读者更好地理解论文。 缺点是它增加了 LLM 对话的背景并增加了计算成本, 所以在对话过程中,你可以考虑减少'topN'的设置。

2.8 Book分块方法:
支持的文件格式为DOCX、PDF、TXT。
由于一本书很长,并不是所有部分都有用,如果是 PDF, 请为每本书设置页面范围,以消除负面影响并节省分析计算时间。

2.9 Laws分块方法:
支持的文件格式为DOCX、PDF、TXT。
法律文件有非常严格的书写格式。 我们使用文本特征来检测分割点。
chunk的粒度与'ARTICLE'一致,所有上层文本都会包含在chunk中。

2.10 Presentation 分块方法:
支持的文件格式为PDF、PPTX。
每个页面都将被视为一个块。 并且每个页面的缩略图都会被存储。
您上传的所有PPT文件都会使用此方法自动分块,无需为每个PPT文件进行设置。

2.11 One分块方法:
支持的文件格式为DOCX、EXCEL、PDF、TXT。
对于一个文档,它将被视为一个完整的块,根本不会被分割。
如果你要总结的东西需要一篇文章的全部上下文,并且所选LLM的上下文长度覆盖了文档长度,你可以尝试这种方法。

2.11 Tag分块方法:
Tag 分块方法支持XLSX和CSV/TXT文件格式。
使用"Tag"分块方法的知识库用作标签集.其他知识库可以把标签集当中的标签按照相似度匹配到自己对应的文本块中,对这些知识库的查询也将根据此标签集对自己进行标记。
使用"标签"作为分块方法的知识库不参与 RAG 检索过程。
标签集中的每个文本分块是都是相互独立的标签和标签描述的文本对。
如果文件为XLSX格式,则它应该包含两列无标题:一列用于标签描述,另一列用于标签,标签描述列位于标签列之前。支持多个工作表,只要列结构正确即可。
如果文件为 CSV/TXT 格式,则必须使用 UTF-8 编码并以 TAB 作为分隔符来分隔内容和标签。
在标签列中,标签之间使用英文逗号分隔。不符合上述规则的文本行将被忽略。

3 PDF解析器
RAGFlow 并不是一刀切的解决方案。它旨在灵活性,并支持更深层次的自定义,以适应更复杂的用例。从 v0.17.0 开始,RAGFlow 将 DeepDoc 特定的数据提取任务与 PDF 文件的分块方法解耦。这种分离使您能够自主选择用于 OCR(光学字符识别)、TSR(表格结构识别)和 DLR(文档布局识别)任务的视觉模型,以平衡速度和性能,以适应您的特定用例。如果您的 PDF 仅包含纯文本,您可以选择跳过这些任务,通过选择 Naive 选项来减少整体解析时间。

选择适合您场景的选项:
- DeepDoc: (默认)执行 PDF 上的 OCR、TSR 和 DLR 任务的默认视觉模型,但可能耗时。
- Naive: 如果您的 PDF 全部是纯文本,则跳过 OCR、TSR 和 DLR 任务。
- MinerU: (实验性)将 PDF 转换为机器可读格式的开源工具。
- Docling: (实验性)用于生成 AI 的开源文档处理工具。
- 来自特定模型提供者的第三方视觉模型。
3.1 DeepDoc
对于来自不同领域、具有不同格式和不同检索要求的大量文档,准确的分析成为一项极具挑战性的任务。DeepDoc 就是为了这个目的而诞生的。到目前为止,DeepDoc 中有两个组成部分:视觉处理和解析器。
作为人类,我们使用视觉信息来解决问题。
-
OCR(Optical Character Recognition,光学字符识别)。由于许多文档都是以图像形式呈现的,或者至少能够转换为图像,因此OCR是文本提取的一个非常重要、基本,甚至通用的解决方案。
输入可以是图像或PDF的目录,或者单个图像、PDF文件。您可以查看文件夹 path_to_store_result ,其中有演示结果位置的图像,以及包含OCR文本的txt文件。

-
布局识别(Layout recognition)。来自不同领域的文件可能有不同的布局,如报纸、杂志、书籍和简历在布局方面是不同的。只有当机器有准确的布局分析时,它才能决定这些文本部分是连续的还是不连续的,或者这个部分需要表结构识别(Table Structure Recognition,TSR)来处理,或者这个部件是一个图形并用这个标题来描述。我们有10个基本布局组件,涵盖了大多数情况:
- 文本
- 标题
- 配图
- 配图标题
- 表格
- 表格标题
- 页头
- 页尾
- 参考引用
- 公式

-
TSR(Table Structure Recognition,表结构识别)。数据表是一种常用的结构,用于表示包括数字或文本在内的数据。表的结构可能非常复杂,比如层次结构标题、跨单元格和投影行标题。除了TSR,我们还将内容重新组合成LLM可以很好理解的句子。TSR任务有五个标签:
- 列
- 行
- 列标题
- 行标题
- 合并单元格
输入可以是图像或PDF的目录,或者单个图像、PDF文件。您可以查看文件夹 path_to_store_result ,其中包含图像和html页面,这些页面展示了以下检测结果:

3.2 MinerU PDF
MinerU PDF 文档解析从 v0.22.0 开始可用。RAGFlow 支持 MinerU(>= 2.6.3)作为可选 PDF 解析器,具有多个后端。RAGFlow 仅作为 MinerU 的客户端,调用它来解析文档,读取输出文件,并摄取解析的内容。要使用此功能,请遵循以下步骤:
如果您从源代码部署 RAGFlow,请在隔离的虚拟环境中安装 MinerU(推荐路径:$HOME/uv_tools):
bash
mkdir -p "$HOME/uv_tools"
cd "$HOME/uv_tools"
uv venv .venv
source .venv/bin/activate
uv pip install -U "mineru[core]" -i https://mirrors.aliyun.com/pypi/simple
# 或
# uv pip install -U "mineru[all]" -i https://mirrors.aliyun.com/pypi/simple
如果您使用 Docker 部署 RAGFlow,通常只需在 docker/.env 中启用 MinerU 支持:
bash
# docker/.env
...
USE_MINERU=true
...
启用 USE_MINERU=true 将内部执行与手动配置相同的设置(包括设置 MinerU 可执行文件路径和相关环境变量)。如果您是从源代码运行或希望完全控制 MinerU 的安装,您只需上述手动安装。
启动启用 MinerU 的 RAGFlow:
- 源代码部署 -- 在 RAGFlow 仓库中,导出关键的 MinerU 相关变量并启动后端服务:
bash
# 在 RAGFlow 仓库中
export MINERU_EXECUTABLE="$HOME/uv_tools/.venv/bin/mineru"
export MINERU_DELETE_OUTPUT=0 # 保留输出目录
export MINERU_BACKEND=pipeline # 或您喜欢的其他后端
source .venv/bin/activate
export PYTHONPATH=$(pwd)
bash docker/launch_backend_service.sh
- Docker 部署 -- 在设置
USE_MINERU=true后,重启容器以使新设置生效:
bash
# 在 RAGFlow 仓库中
docker compose -f docker/docker-compose.yml restart
重启 ragflow-server。
在 Web UI 中,导航到数据集的配置页面。在"摄取管道"部分中,单击"内置",从"内置"下拉菜单中选择一种支持 PDF 解析的分块方法,并在 PDF 解析器中选择 MinerU。
如果您使用自定义摄取管道,则在解析组件的解析方法部分选择 MinerU 之前,您还必须完成前三个步骤。
第三方视觉模型标记为实验性,因为我们尚未完全测试这些模型用于上述数据提取任务。
4 知识库配置其他功能点
4.1 配置 LLMs
RAGFlow 是一个 RAG 引擎,需要与 LLM 一起工作,以提供基于事实的、无幻觉的问答能力。RAGFlow 支持大多数主流 LLM。有关支持的模型的完整列表,请参阅支持的模型。


RAGFlow 还支持使用 Ollama、Xinference 或 LocalAI 在本地部署 LLM,但此部分不在本快速入门指南中涵盖。
要添加和配置 LLM:
-
点击页面右上角的您的 logo > 模型提供者。
-
点击所需的 LLM 并相应更新 API 密钥。
-
点击系统模型设置以选择默认模型:
- 聊天模型
- 嵌入模型
- 图像到文本模型
- 更多
一些模型,例如图像到文本模型 qwen-vl-max,依赖于特定的 LLM。您可能需要更新您的 API 密钥以访问这些模型。

4.2 设置页面排名 | RAGFlow

假设你有好几个知识库,比如:
- 知识库A:2024年的新闻
- 知识库B:2023年的新闻
你用AI助手去查这些数据集里的信息,结果两个数据集都可能返回答案。
页面排名就是告诉AI:"数据集A里的内容更重要,你优先用它的答案。"
举个例子:
- 数据集A的页面排名设置成1(有分数)
- 数据集B的页面排名设置成0(没分数)
当AI检索信息时,它会给数据集A里的内容加分,变得更"抢眼",这样就更可能先用数据集A的信息,而不是数据集B。
注意:页面排名值必须是整数。范围:[0,100]
- 0: 禁用(默认)
- 特定值: 启用
注意:如果您将页面排名值设置为非整数,例如 1.7,它将被向下舍入到最接近的整数,在这种情况下为 1。
如果您将聊天助手的相似性阈值配置为 0.2,则只有混合得分大于 0.2 x 100 = 20 的数据块将被检索并发送到聊天模型进行内容生成。此初始过滤步骤对于缩小相关信息至关重要。
如果您为数据集 A(2024 年新闻)分配了页面排名 1,为数据集 B(2023 年新闻)分配了 0,则检索到的数据块的最终混合得分将相应调整。来自数据集 A 的一个数据块,如果初始得分为 50,将获得 1 x 100 = 100 的加分,最终得分为 50 + 1 x 100 = 150。
通过这种方式,来自数据集 A 的数据块将始终优先于来自数据集 B 的数据块。
4.3 自动关键词提取、自动问题提取

使用聊天模型从数据集中的每个块生成关键词或问题。
在选择分块方法时,您还可以启用自动关键词或自动问题生成,以提高检索率。此功能使用聊天模型从每个创建的块中生成指定数量的关键词和问题,从原始内容生成"额外的信息层"。
警告
启用此功能会增加文档索引时间并使用额外的令牌,因为所有创建的块将被发送到聊天模型进行关键词或问题生成。
4.3.1 什么是 Auto-keyword?
Auto-keyword 是 RAGFlow 的自动关键词生成特性。它使用聊天模型从每个块生成一组关键词或同义词,以纠正错误并提高检索准确性。此功能在数据集的配置页面的页面排名下作为滑块实现。
值调整:
- 0: (默认)禁用。
- 介于 3 和 5 之间(含): 如果您的块大约为 1,000 个字符,建议使用。
- 30(最大值)
注意
如果您的块大小增加,您可以相应地增加值。请注意,随着值的增加,边际效益会减少。
Auto-keyword 值必须是整数。如果您将其设置为非整数,例如 1.7,它将向下舍入到最接近的整数,在这种情况下为 1。
4.3.2 什么是 Auto-question
Auto-question 是 RAGFlow 的一个功能,自动从数据块中生成问题,使用聊天模型。这些问题(例如,谁、什么和为什么)也有助于纠正错误并改善用户查询的匹配。该功能通常适用于涉及产品手册或政策文件的 FAQ 检索场景。您可以在数据集的配置页面的页面排名下找到此功能作为滑块。
值调整:
- 0: (默认)禁用。
- 1 或 2: 如果您的块大约为 1,000 个字符,建议使用。
- 10(最大值)
注意
如果您的块大小增加,您可以相应地增加值。请注意,随着值的增加,边际效益会减少。
Auto-question 值必须是整数。如果您将其设置为非整数,例如 1.7,它将向下舍入到最接近的整数,在这种情况下为 1。
4.3.3 不同场景的值设置范围
Auto-keyword 或 Auto-question 值与数据集中的分块大小密切相关。然而,如果您是新手并且不确定从哪个值开始,以下是我们从社区收集的一些值设置。虽然它们可能不准确,但至少提供了一个起点。
| 用例或典型场景 | 文档量/长度 | Auto_keyword (0--30) | Auto_question (0--10) |
|---|---|---|---|
| 内部流程指导员工手册 | 小于 10 页 | 0 | 0 |
| 客户服务 FAQ | 中等,10--100 页 | 3--7 | 1--3 |
| 技术白皮书:开发标准、协议细节 | 大型,超过 100 页 | 2--4 | 1--2 |
| 合同/法规/法律条款检索 | 大型,超过 50 页 | 2--5 | 0--1 |
| 多仓库分层新文档 + 旧档案 | 多个 | 根据需要调整 | 根据需要调整 |
| 社交媒体评论池:多语言和混合拼写 | 非常大体积的短文本 | 8--12 | 0 |
| 故障排除的操作日志 | 非常大体积的短文本 | 3--6 | 0 |
| 营销资产库:多语言产品描述 | 中等 | 6--10 | 1--2 |
| 培训课程/电子书 | 大型 | 2--5 | 1--2 |
| 维护手册:设备图示 + 步骤 | 中等 | 3--7 | 1--2 |
4.4 Excel2HTML-表格转HTML
将复杂的 Excel 电子表格转换为 HTML 表格。
当使用通用分块方法时,可以启用 Excel 转 HTML 切换,以将电子表格文件转换为 HTML 表格。如果禁用,则电子表格表格将表示为键值对。对于无法简单表示的复杂表格,必须启用此功能。
警告
此功能默认禁用。如果您的数据集中包含复杂表格的电子表格,并且未启用此功能,RAGFlow 不会抛出错误,但您的表格可能会出现乱码。
适用于无法表示为键值对的复杂表格。示例包括具有多列的电子表格表格、合并单元格的表格或一个工作表中包含多个表格。在这种情况下,请考虑将这些电子表格表格转换为 HTML 表格。
注意事项
- Excel2HTML 功能仅适用于电子表格文件(XLSX 或 XLS(Excel 97-2003))。
- 此功能与通用分块方法相关。换句话说,仅在选择通用分块方法时可用。
- 启用此功能后,超过 12 行的电子表格表格将分成每 12 行一块。
步骤:
- 在数据集的配置页面上,选择通用作为分块方法。
- Excel 转 HTML 切换将出现。
- 如果您的数据集中包含无法表示为键值对的复杂电子表格表格,请启用 Excel 转 HTML。
- 如果您的数据集中没有电子表格表格或其电子表格表格可以表示为键值对,则保持 Excel 转 HTML 禁用。
- 如果关于复杂表格的问答不尽如人意,请检查 Excel 转 HTML 是否已启用。
4.5 使用召回增强 RAPTOR 策略

RAPTOR 是一种"聪明"的文档处理方法,专门用来帮我们更好地理解和回答那些需要多步推理的问题。比如你问一个复杂的问题,答案可能藏在一大堆文字里,RAPTOR 就帮你把这些文字先整理成一棵"树",让计算机能更快更准确地找到关键内容。
先把大文章拆成很多小块
比如一篇长文章拆成很多段落。把这些小块按意思相近的放一组
不是按顺序,而是按内容相似度分组。对每一组内容做总结
把一组内容浓缩成一个小总结。把这些总结再分组总结
一层一层往上总结,形成一棵"树",树顶是整篇文章的核心总结,树底是细节。
RAPTOR 通过分层总结,帮机器"理解"文章的结构和重点,适合复杂问题。简单的使用步骤:在系统里打开"启用 RAPTOR"。
上传或者选择你的文档。
系统会自动帮你拆块、聚类、总结,生成那棵树。
之后你问问题,系统会用这棵树来帮你找答案。
RAPTOR(递归抽象处理树组织检索)是一种递归抽象方法,旨在长上下文知识检索和摘要中平衡广泛的语义理解与细节。
RAPTOR 是一种增强的文档预处理技术,在 2024 年的论文中提出。旨在解决多跳问答问题,RAPTOR 对文档块进行递归聚类和摘要,以构建层次树结构。这使得在较长文档中实现更具上下文意识的检索成为可能。RAGFlow v0.6.0 将 RAPTOR 集成到其数据预处理管道中,作为数据提取和索引之间的一部分,如下所示。
我们对这一新方法的测试表明,在需要复杂多步骤推理的问答任务中,取得了最先进的(SOTA)结果。通过将 RAPTOR 检索与我们内置的分块方法和/或其他检索增强生成(RAG)方法结合使用,可以进一步提高问答的准确性。
警告
启用 RAPTOR 需要大量内存、计算资源和令牌。
基本原则
在将原始文档分成块之后,这些块通过语义相似性而不是文本中的原始顺序进行聚类。然后,系统默认的聊天模型将这些聚类摘要成更高级别的块。这个过程是递归应用的,形成一个自下而上的树结构。如下面的图所示,初始块形成叶节点(以蓝色显示),并递归摘要为根节点(以橙色显示)。
递归聚类和摘要捕获了广泛的理解(由根节点提供)以及多跳问答所需的细节(由叶节点提供)。
场景
在涉及复杂多步骤推理的多跳问答任务中,问题与答案之间通常存在语义差距。因此,使用问题进行搜索往往无法检索到有助于正确答案的相关块。RAPTOR 通过为聊天模型提供更丰富、更具上下文意识和相关的块来解决这一挑战,从而使摘要能够实现整体理解而不失去细粒度的细节。
注意
知识图谱也可以用于多跳问答任务。有关详细信息,请参见构建知识图谱。您可以使用任一方法或两者,但请确保了解所涉及的内存、计算和令牌成本。
先决条件
系统的默认聊天模型用于摘要聚类内容。在继续之前,请确保您已正确配置聊天模型:
配置
RAPTOR 功能默认情况下是禁用的。要启用它,请手动在数据集的配置页面上切换"使用 RAPTOR 以增强检索"选项。
提示
以下提示将递归应用于聚类摘要,{cluster_content} 作为内部参数。我们建议您暂时保持原样。设计将在未来更新。
请总结以下段落... 段落如下:
{cluster_content}
以上是您需要摘要的内容。
最大令牌
每个生成的摘要块的最大令牌数。默认为 256,最大限制为 2048。
阈值
在 RAPTOR 中,块通过其语义相似性进行聚类。阈值参数设置了将块分组在一起所需的最小相似性。
默认为 0.1,最大限制为 1。较高的阈值意味着每个聚类中的块较少,而较低的阈值意味着更多。
最大聚类
要创建的最大聚类数。默认为 64,最大限制为 1024。
随机种子
随机种子。单击 + 更改种子值。
快速入门
导航到数据集的配置页面并更新:
- 提示:可选 - 我们建议您在理解机制之前保持原样。
- 最大令牌:可选
- 阈值:可选
- 最大聚类:可选
导航到数据集的文件页面,单击页面右上角的生成按钮,然后从下拉菜单中选择 RAPTOR 以启动 RAPTOR 构建过程。
在必要时,您可以单击下拉菜单中的暂停按钮以停止构建过程。
返回配置页面:
当生成 RAPTOR 层次树结构时,RAPTOR 字段将从未生成更改为在特定时间戳生成。您可以通过单击字段右侧的回收站按钮将其删除。
一旦生成 RAPTOR 层次树结构,您的聊天助手和检索代理组件将默认使用它进行检索。
4.6 知识图谱生成
生成您数据集的知识图谱。
为了增强多跳问答,RAGFlow 在数据提取和索引之间增加了知识图谱构建步骤,如下所示。此步骤从您指定的分块方法生成的现有块中创建额外的块。
从 v0.16.0 开始,RAGFlow 支持在数据集上构建知识图谱,允许您在数据集内的多个文件之间构建统一图谱。当新上传的文件开始解析时,生成的图谱将自动更新。
警告
构建知识图谱需要大量内存、计算资源和令牌。
知识图谱对于涉及嵌套逻辑的多跳问答特别有用。当您对书籍或具有复杂实体和关系的作品进行问答时,它们优于传统的提取方法。
注意
RAPTOR(递归抽象处理树组织检索)也可以用于多跳问答任务。有关详细信息,请参见启用 RAPTOR。您可以使用任一方法或两者,但请确保您了解涉及的内存、计算和令牌成本。

4.6.1 前提条件配置
系统的默认聊天模型用于生成知识图谱。在继续之前,请确保您已正确配置聊天模型:

4.6.2 实体类型(必需)
要从数据集中提取的实体类型。默认类型为:组织、个人、事件和类别。根据您的特定数据集添加或删除类型。
4.6.3 方法
构建知识图谱的方法:
- 通用General:使用 GraphRAG 提供的提示提取实体和关系。
- 轻量Light:(默认)使用 LightRAG 提供的提示提取实体和关系。此选项消耗更少的令牌、内存和计算资源。
4.6.4 实体解析/实体归一化
是否启用实体解析。您可以将其视为实体去重开关。当启用时,LLM 将组合相似实体,例如"2025"和"2025年"或"IT"和"信息技术",以构建更有效的图谱。
- (默认) 禁用实体解析。
- 启用实体解析。此选项消耗更多令牌。
4.6.5 社区报告
在知识图谱中,社区是通过关系链接的实体集群。您可以让 LLM 为每个社区生成摘要,称为社区报告。有关更多信息,请参见此处。此选项指示是否生成社区报告:
- 生成社区报告。此选项消耗更多令牌。
- (默认) 不生成社区报告。
4.6.6 快速开始
导航到数据集的配置页面并更新:

- 实体类型:必需 - 指定要生成的知识图谱中的实体类型。您不必坚持默认设置,但需要为您的文档自定义它们。
- 方法:可选
- 实体解析:可选
- 社区报告:可选
数据集的默认知识图谱配置现已设置。
导航到数据集的文件页面,单击页面右上角的生成按钮,然后从下拉菜单中选择知识图谱以启动知识图谱生成过程。
您可以在必要时单击下拉菜单中的暂停按钮以暂停构建过程。
返回配置页面:
一旦生成知识图谱,知识图谱字段将从未生成更改为在特定时间戳生成。您可以通过单击字段右侧的回收站按钮删除它。
要使用生成的知识图谱,请执行以下任一操作:
- 在聊天应用的聊天设置面板中,切换打开使用知识图谱的开关。
- 如果您正在使用代理,请单击检索代理组件以指定数据集并切换打开使用知识图谱的开关。
4.6.7 常见问题
知识图谱在我删除相关文件时会自动更新吗?
不。知识图谱不会更新,直到您为数据集重新生成知识图谱。
如何删除生成的知识图谱?
在数据集的配置页面,找到知识图谱字段并单击字段右侧的回收站按钮。
创建的知识图谱存储在哪里?
所有创建的知识图谱的块存储在 RAGFlow 的文档引擎中:Elasticsearch 或 Infinity。
如何导出创建的知识图谱?
不支持导出已创建的知识图谱。如果您仍然认为此功能至关重要,请提出一个问题,解释您的用例及其重要性。
5 知识检索测试

在您的数据集上进行检索测试,以检查是否可以检索到预期的chunk。
在上传并解析文件后,建议在继续配置聊天助手之前运行检索测试。运行检索测试绝不是不必要或多余的步骤!
就像微调精密仪器一样,RAGFlow 需要仔细调整,以提供最佳的问题回答性能。您的数据集设置、聊天助手配置以及指定的大型和小型模型都可能显著影响最终结果。运行检索测试可以验证是否可以恢复预期的块,从而让您快速识别改进的领域或确定需要解决的任何问题。例如,在问题 #5627 中,问题被发现是由于 LLM 的限制。
在检索测试期间,使用混合搜索检索根据您指定的分块方法创建的块。此搜索结合了加权关键词相似性和加权向量余弦相似性或加权重排分数,具体取决于您的设置:
- 如果未选择重排模型,则加权关键词相似性将与加权向量余弦相似性结合。
- 如果选择了重排模型,则加权关键词相似性将与加权向量重排分数结合。
相比之下,从知识图谱构建的块仅使用向量余弦相似性进行检索。
5.1 前提条件与配置
-
在运行检索测试之前,您的文件已上传并成功解析。
-
必须成功构建知识图谱才能启用使用知识图谱。
-
相似性阈值
此设置用于检索块:相似度低于阈值的块将被过滤掉。默认情况下,阈值设置为 0.2。这意味着只有混合相似度得分为 20 或更高的块才会被检索。
-
向量相似性权重
此设置用于复合相似度得分中的向量相似性权重,无论是与向量余弦相似性还是重排分数一起使用。默认情况下,它设置为 0.3,使得其他组件的权重为 0.7(1 - 0.3)。
-
重排模型
如果留空,RAGFlow 将使用加权关键词相似性和加权向量余弦相似性的组合。
如果选择了重排模型,加权关键词相似性将与加权向量重排分数结合。
重要提示使用重排模型将显著增加响应时间。
-
使用知识图谱
在知识图谱中,实体描述、关系描述或社区报告每个都作为独立块存在。此开关指示是否将这些块添加到检索中。
默认情况下,该开关是禁用的。
当启用时,RAGFlow 在检索测试期间执行以下操作:
- 使用 LLM 从您的查询中提取实体和实体类型。
- 根据提取的实体类型,从图中检索前 N 个实体,基于其 PageRank 值。
- 使用提取查询实体的嵌入从图中查找相似实体及其 N-hop 关系。
- 使用查询嵌入从图中检索相似关系。
- 通过将每个实体和关系的 PageRank 值与其与查询的相似度得分相乘来对检索到的实体和关系进行排名,返回前 n 个作为最终检索结果。
- 检索涉及最终检索中最多实体的社区的报告。
被检索的实体描述、关系描述和前 1 个社区报告被发送到 LLM 进行内容生成。
重要提示
在检索测试中使用知识图谱将显著增加响应时间。
跨语言搜索
要执行跨语言搜索,请从下拉菜单中选择一个或多个目标语言。系统的默认聊天模型将把您在测试文本字段中输入的查询翻译成所选的目标语言。这种翻译确保跨语言的准确语义匹配,使您能够检索到相关结果,而不论语言差异。
注意
选择目标语言时,请确保这些语言在数据集中存在,以保证有效的搜索。如果未选择目标语言,系统将仅在您的查询语言中进行搜索,这可能导致错过其他语言中的相关信息。
测试文本
此字段是您输入测试查询的地方。
5.2 测试
导航到您的数据集的检索测试页面,在测试文本中输入您的查询,然后单击测试以运行测试。
如果结果不令人满意,请调整配置部分列出的选项并重新运行测试。
以下是未使用知识图谱进行的检索测试的屏幕截图。它演示了结合了加权关键词相似性和加权向量余弦相似性的混合搜索。整体混合相似度得分为 28.56,计算方式为 25.17(术语相似度得分)x 0.7 + 36.49(向量相似度得分)x 0.3

以下是使用知识图谱进行的检索测试的屏幕截图。它显示仅使用向量相似性用于知识图谱生成的块:

警告
如果您调整了默认设置,例如关键词相似性权重或相似性阈值,以实现最佳结果,请注意这些更改不会自动保存。您必须将它们应用于聊天助手设置或检索代理组件设置。
常见问题
- 启用"使用知识图谱"开关时是否使用了 LLM?
是的,您的 LLM 将参与分析您的查询并从知识图谱中提取相关实体和关系。这也解释了为什么会消耗额外的令牌和时间。