Skip to content

RAG ​

RAG(检索增强生成)基于 文档空间 中的语料:上传文件 → 解析分块 → 向量化入库 → 检索召回片段 → 交给智能体组织回答。回答应依据检索到的片段,避免脱离证据编造。

原理 ​

环节说明
语料文档空间内的文件,按空间隔离权限
知识库每个空间对应 RAGFlow 数据集(knowledge_base_id)
入库上传文件后经 RAGFlow 解析(分块) 并写入向量索引
检索按用户问题取向量近邻 chunk,拼成上下文
生成智能体结合检索片段作答,可要求标注来源

站点须配置 RAGFlow 地址与 Token(RagFlowUrl / RagFlowToken);未配置时空间向量化任务无法执行。

操作 ​

1. 准备文档空间 ​

  1. 进入 空间管理(/space-management),创建或选择知识空间。
  2. 配置空间归属与配额;确认当前用户具备读写权限。
  3. 在空间内上传语料(见下方支持格式)。

2. 上传并向量化 ​

文件上传至空间后,创建 向量化任务(type=4,须带 space_id):

  1. 系统将文件送至 RAGFlow 对应数据集;
  2. 调用 上传文档 API;
  3. 再调用 解析(分块) API,完成 chunk 入库;
  4. 文件记录保存 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 — 智能引擎流程

  1. 流程中拖入 知识检索 节点(类型 11),配置 space_ids、提示词等。
  2. 下游接 智能体 节点,要求仅依据 context 检索结果回答。
  3. 无命中时可加 检索优化 节点(类型 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 服务知识问答,二者语料来源不同。

相关文档 ​

白泽 ProCode 开发者文档