跳转至

RAG Chunk Embedding Rerank Pipeline

📊 Level ⭐⭐⭐⭐ | 13.8KB

RAG 分块·向量化·召回·重排流水线

深度分析

入库质量是 RAG 效果的天花板,而不是模型。 原文明确指出"知识库效果的上限,往往不是由模型决定的,而是由入库质量决定的"。这一洞察揭示了 RAG 项目中最反直觉的现实:团队遇到效果不佳时,第一反应往往是换 Embedding 模型、调 TopK 或 Score 阈值,但真实原因大概率是文档从一开始就处理不当。入库质量具有不可逆性——如果分块策略和索引模式在入库时选错,后续的检索调优无法弥补。这解释了为什么"80% 的时间在搞数据"不是夸张,而是工程现实。

分块是定义知识检索最小返回单位的艺术,核心矛盾是"太大不精准,太小不完整"。 原文揭示了分块的本质悖论:chunk 越大语义越模糊(同时包含退货规则、换货规则、运费规则),chunk 越小上下文越不完整("超过 7 天后"单独成块毫无意义)。父子分块通过"检索用小块、生成用大块"的思路同时解决了这一矛盾,是复杂文档场景的利器。但更深层的启示是:分块没有通用最优解,效果只能通过持续测试来验证,这也是 RAG 项目"一周出 Demo,半年还在 60 分"的根本原因之一。

Skill 与 RAG 的分工本质是"流程复制"与"知识调用"的互补。 原文清晰定义了 AI 同事的三层能力:Workflow 层(知道怎么做)、Knowledge 层(知道参考什么资料)、Judgement 层(知道如何权衡)。Skill 主要覆盖第一层,RAG 主要覆盖第二层,第三层依赖模型能力和业务边界。这一框架解释了为什么大多数"同事 .skill"只是蒸馏了外显动作而非真实能力——因为隐性知识无法全部写入 prompt,必须依赖 RAG 来补足认知缺口。

索引模式是源头决策,具有不可补偿性。 原文特别强调"索引模式是源头决策,不是后面调 TopK、调 Score 阈值就能补回来的"。经济模式(关键词索引)从一开始就没有把知识放进语义空间,无法通过后期的检索调优来弥补语义召回的缺失。这一原则可以推广到整个调优顺序:文档质量 → 分块策略 → 索引模式 → 检索方式 → 重排 → TopK/Score 阈值 → Prompt 约束,前序环节的错误无法通过后续环节弥补。

召回追求"快且不漏",重排是"复试"——两阶段设计映射了信息检索的经典范式。 召回是海选,追求广度(向量检索擅长语义相近、全文检索擅长精确词匹配、混合检索兼容两者);重排是复试,追求精度(Rerank 模型深入看问题与文本的匹配关系)。这一两阶段架构的本质是用更低成本先快速排除明显无关内容,再用更高成本细排候选片段。它还揭示了一个深层规律:检索链路越往后越"贵",因此前段应倾向于多召回而非漏召回。

实践启示

  1. 在讨论 RAG 调优之前,优先评估文档格式和清洗质量。 适合知识库的格式优先级为 Markdown > 纯文本 > Word > PDF > Excel > PPT > 图片/扫描件。扫描件依赖 OCR,错误率高。入库前应去除连续空格、多余换行符、URL、邮箱、水印、版权声明等噪音。业务噪音(过期条款、错误版本、内部备注)需要人工处理,系统自带清洗无法覆盖。

  2. 从 Dify 的三个分块参数出发,结合业务文档结构定制分块策略。 分段标识符决定"在哪里切"(按段落、标题、"第 X 条"、FAQ 的"Q:"等业务语义边界);分段最大长度建议按文档类型参考经验值(FAQ 200-500 tokens、客服话术 300-700 tokens、技术文档 500-1200 tokens);分段重叠长度设为最大长度的 10%-25%。对于长文档、制度文档、产品手册,优先考虑父子分块能力。

  3. 在大多数企业知识库场景中,混合检索是默认最优选择。 向量检索擅长语义相似但对 SKU、订单号、错误码等精确信息不敏感;全文检索相反。客服、售后、技术支持等场景的用户问题通常是两者混合,因此"无脑选混合检索"是合理的起点。对于准确性要求高的场景(客服、法务、医疗、金融、技术支持),建议开启 Rerank。

  4. TopK 和 Score 阈值需要结合 chunk 大小和场景类型动态调整。 chunk 大则 TopK 小;chunk 小则 TopK 可适当大;用父子分块返回父块时 TopK 不能太大否则上下文会爆。Score 阈值从 0.5-0.7 开始调,高风险场景宁可保守转人工,也不要让模型在缺乏依据时强行回答。

  5. 建立 RAG 可观测性飞轮,从用户真实日志中迭代优化。 调优顺序应该从真实问题日志出发:分析是漏召回多还是噪音多。RAG 项目需要回答的五个问题是——文档本身干净吗?chunk 切得合理吗?索引模式选对了吗?召回方式适合业务问题吗?是否需要 Rerank? 建议逐步建立:回答是否有依据可追溯、Bad Case 是否能定位到具体环节、TopK/Score 调整是否有数据支撑。

相关实体

→ 原文存档

RAG(Retrieval-Augmented Generation)流水线是 RAG 知识库从文档入库到答案生成的全链路工程实践,涵盖离线阶段(文档解析→清洗→分块→向量化→建索引)和在线阶段(查询改写→知识库路由→召回→重排→TopK/Score过滤→上下文拼接→大模型生成)。

核心定位:Skill 与 RAG 的分工

Skill 负责流程复制(第一步做什么、第二步做什么),RAG 负责知识调用(做这件事需要参考哪些资料、历史经验、信息从哪里来)。两者组合才接近真正"蒸馏同事"的能力。

真正的 AI 同事需要三层能力: 1. Workflow 层:知道这件事该怎么做 2. Knowledge 层:知道做这件事要参考什么资料 3. Judgement 层:知道在复杂情况下如何权衡

离线阶段:数据入库

文档解析与清洗

知识库效果的上限往往不是由模型决定的,而是由入库质量决定的。文档从一开始没处理好,后续再好的 Embedding 模型、Rerank 模型、向量数据库都只是把垃圾更快地找出来。

适合知识库的文档格式优先级:Markdown > 纯文本 > Word > PDF > Excel > PPT > 图片/扫描件。扫描件依赖 OCR,错误率较高。

清洗阶段需去除:连续空格、多余换行符、URL、邮箱、水印、版权声明等噪音。系统自带清洗能力有限,业务噪音(过期条款、重复政策、错误版本、内部备注、表格结构错乱)需在上载前人工处理。

分块策略

分块的本质是定义知识检索的最小返回单位。分块面临经典两难:太大不精准,太小不完整。

分块策略 适用场景 优点 缺点
固定长度分块 快速验证 实现简单、速度快 可能切断句子和表格
语义边界分块(按段落/句号/换行) 通用场景 语义相对完整 长段落无法处理
递归分块 长文档 先大边界再小边界,尽量保留语义 仍可能破坏复杂结构
结构感知分块(按标题、代码块、表格、FAQ 问答对) Markdown、技术文档、制度文档 符合文档原生结构 依赖文档格式规范
智能语义分块(Embedding 相似度 / LLM 判断边界) 高价值知识库 语义最精准 成本高、复杂

Dify 三个核心分块参数:分段标识符(在哪里切)、分段最大长度(每块多大,默认 1024 token)、分段重叠长度(相邻片段共享内容,防止边界切断,默认 50 token,建议 10%-25%)。

父子分块

父子分块解决 RAG 核心矛盾:检索需要小块,生成需要大块。入库时同时切成大块和小块,检索时用小块匹配,命中后返回对应大块给模型。用小块提高召回精度,用大块保证回答完整性。

向量化与索引

高质量模式使用 Embedding 模型将每个知识片段转换成向量,语义相近的文本向量距离更近。经济模式使用 关键词索引(如 Jieba 分词),成本低但只能做字面匹配。

关键工程原则:文档和查询必须使用同一个 Embedding 模型,否则检索结果会非常不稳定。

索引模式是源头决策,后续调 Top K、调 Score 阈值无法补回。向量数据库常用索引算法包括 HNSW、IVF、PQ、FAISS,本质解决如何在大量向量里又快又准地找到相似内容。

在线阶段:检索生成

用户提问进入链路:查询改写/知识库选择 → 召回 → 重排 → TopK 过滤 → 拼接上下文 → 大模型生成回答。

查询改写

将用户口语化、模糊化的问题改写成更适合检索的表达。所有改写应往知识库靠,只做澄清和标准化,不替用户脑补。

知识库路由

多知识库场景下两种策略:先让模型判断问题属于哪个知识库再检索(结果干净但判断错误则漏掉答案),或多知识库一起检索后合并结果(不易漏但召回更杂)。

召回

召回追求快且不漏关键数据。三种检索方式:

  • 向量检索:擅长语义相似,语义接近即使字面不同也能匹配
  • 全文检索:依赖关键词匹配,对 SKU、订单号、合同编号、错误码等精确信息更稳定
  • 混合检索:同时走两路再合并,适合大多数企业知识库场景

重排

召回是海选,重排是复试。重排将候选片段按与用户问题的真实相关性重新排序。Rerank 模型比单纯向量相似度更细,深入看问题和文本之间的匹配关系,代价是成本和效率。对准确性要求高的场景(客服、法务、医疗、金融、技术支持)建议开启。

TopK 与 Score 过滤

  • TopK:决定最多给模型几个片段。chunk 大则 TopK 小;chunk 小则 TopK 可适当大;用父子分块返回父块时,TopK 不能太大,否则上下文会爆。
  • Score 阈值:数量控制(TopK)+ 质量控制(Score),防止系统硬凑答案。知识库里没有依据时,不要强行回答,宁可保守转人工。

调优顺序与配置映射

合理的调优顺序:文档质量 → 分块策略 → 索引模式 → 检索方式 → 重排 → TopK/Score 阈值 → Prompt 约束。

Dify 配置项 对应环节 本质作用
索引模式 向量化/建索引 决定语义检索还是关键词检索
分块方式 文档分块 决定知识片段颗粒度
分段最大长度 文档分块 控制 chunk 大小
分段重叠长度 文档分块 防止边界信息丢失
检索方式 召回 语义找、关键词找,还是两者都用
Rerank 重排 候选片段怎么重新排序
Top K 上下文过滤 决定最多给模型多少片段
Score 阈值 上下文过滤 决定低相关内容是否丢弃

可观测性

RAG 项目需要可观测性和飞轮系统:回答需要有依据、可追溯、可控制。

→ 原文存档