Appearance
RAG
RAG(检索增强生成)基于 文档空间 中的语料:上传文件 → 解析分块 → 向量化入库 → 检索召回片段 → 交给智能体组织回答。回答应依据检索到的片段,避免脱离证据编造。
原理
| 环节 | 说明 |
|---|---|
| 语料 | 文档空间内的文件,按空间隔离权限 |
| 知识库 | 每个空间对应 RAGFlow 数据集(knowledge_base_id) |
| 入库 | 上传文件后经 RAGFlow 解析(分块) 并写入向量索引 |
| 检索 | 按用户问题取向量近邻 chunk,拼成上下文 |
| 生成 | 智能体结合检索片段作答,可要求标注来源 |
站点须配置 RAGFlow 地址与 Token(RagFlowUrl / RagFlowToken);未配置时空间向量化任务无法执行。
操作
1. 准备文档空间
- 进入 空间管理(
/space-management),创建或选择知识空间。 - 配置空间归属与配额;确认当前用户具备读写权限。
- 在空间内上传语料(见下方支持格式)。
2. 上传并向量化
文件上传至空间后,创建 向量化任务(type=4,须带 space_id):
- 系统将文件送至 RAGFlow 对应数据集;
- 调用 上传文档 API;
- 再调用 解析(分块) API,完成 chunk 入库;
- 文件记录保存
knowledge_id(RAGFlow 文档 id),供后续更新/删除。
删除空间内 RAG 语料时使用 type=0 任务,按 knowledge_id 删除 RAGFlow 文档。
RAGFlow 可直接解析的常见格式(以引擎为准):PDF、TXT/MD、Word/Excel/PPT(doc/docx/xls/xlsx/ppt/pptx)、HTML、JSON、CSV,以及常见图片格式等。部分格式需先完成 PDF/Markdown 转换后再向量化。
3. 检索与问答
方式 A — 智能引擎流程
- 流程中拖入 知识检索 节点(类型
11),配置space_ids、提示词等。 - 下游接 智能体 节点,要求仅依据
context检索结果回答。 - 无命中时可加 检索优化 节点(类型
26)或调整空间与问法。
方式 B — 智能体 + MCP
在智能体上挂 RAG 检索相关 MCP(如 RagFlowRetrieval),由助手对话触发检索后再生成。
4. 维护
- 文件更新:重新上传并向量化,或先删后传。
- 空间与数据集:首次向量化时自动创建 RAGFlow dataset 并回写
knowledge_base_id。
分块
分块质量直接影响召回与回答准确度。平台侧分两层理解:
RAGFlow 解析分块(入库)
向量化任务在 RAGFlow 侧执行 ParseDocuments(分块):把整篇文档切成可检索的 chunk 并建立向量索引。具体切分策略由 RAGFlow 按文件类型处理;ProCode 负责上传、触发解析与状态回写。
语义感知分块(平台能力)
引擎内 SemanticAwareChunker 用于 Markdown 等文本的语义分块,原则如下:
| 规则 | 说明 |
|---|---|
| 语义单元 | 以段落、标题、代码块、表格行为最小单元,尽量不拆断完整语义 |
| 标题 / 空行 | 标题单独成段;空行作为段落边界 |
| 表格 / 代码 | 表格整块保留;代码块不从中切断 |
| 超长单元 | 先按句子边界切,再按行回退 |
| Token 上限 | 默认单 chunk 约 2000 token(可配置 MaxTokensPerChunk) |
| 重叠 | 可选 chunk 间重叠 token(OverlapTokens),按语义单元回带 |
上传前若已转为 Markdown,会更有利于保持结构化的分块效果。
常见问题
- 无命中:空间未选对、文件未向量化完成、或问题与语料表述偏差。
- 答非所问:限制智能体只依据检索片段;检查
space_ids是否包含目标空间。 - 向量化失败:检查 RAGFlow 配置、文件格式是否支持、是否需等待 PDF/MD 转换完成。
- 与参考数据混淆:参考数据 服务 Text2SQL;RAG 服务知识问答,二者语料来源不同。
