总结一下在美业智能助手、AI 销冠陪练两个项目实践中对 RAG 的理解。

RAG 的核心目标是用外部知识降低大模型幻觉,提升回答的准确性与可追溯性。整个流程可清晰分为 离线处理 与 在线生成 两个阶段。

一、离线处理阶段:把知识变成可检索资产

  1. 加载 支持多格式(PDF、图片、音视频等),音视频可用 FFmpeg 解码。

  2. 解析 还原文档内容与结构。对 PDF 尤其关键:

    • 版式结构:OCR / VLM 辅助定位,还原排版
    • 内容提取:结构化读取、OCR 或 LLM 总结
  3. 清洗 过滤脏数据:零宽字符、乱码、页眉页脚、水印等。

  4. 切块 原则:语义完整性优先。过大引入噪音,过小截断语义。 优先级:语义 > 结构 > 固定重叠 / 父子块。

  5. 向量化 多模态向量化,支持相似计算。 索引选择:HNSW(低延迟)、IVF(高吞吐)、DiskANN(亿级规模)。

二、在线生成阶段:从用户问题到可靠回答

  1. 改写 缩小 Query 与答案之间的 Gap:

    • 模糊 → 扩写泛化
    • 歧义 → 消歧
    • 语义 Gap → HyDE 假设文档
    • 多意图 → 拆分子查询
  2. 召回 多路召回(BM25 + 向量检索)+ 候选去重。 关键词抓专有名词,向量抓语义相关。

  3. 重排 精选高相关、高信息增量的上下文: RRF 粗排 → Rerank 精排 → 业务加权 → MMR 多样性 → 截断 TopN。

  4. 生成 Prompt 中强制引用溯源 + 无信息拒答约束,降低幻觉。

  5. 校验(四层串行短路)

    • 格式校验:检查结构与引用标记有效性
    • 风险校验:安全合规拦截(词表 + 小模型)
    • 事实核验:对比回答陈述与原始 Chunk,防止编造
    • 语义质量校验:评估相关性、指令遵循度与逻辑通顺性

    结果分级:风险 / 异常 / 正常 → 对应动作:拒答 / 重新生成 / 返回。


总结:离线阶段决定知识质量,在线阶段决定回答可靠性。切块与改写是基础,重排与校验是关键。只有把「能检索到」和「能验证对」都做好,RAG 才能真正可信。