总结一下在美业智能助手、AI 销冠陪练两个项目实践中对 RAG 的理解。
RAG 的核心目标是用外部知识降低大模型幻觉,提升回答的准确性与可追溯性。整个流程可清晰分为 离线处理 与 在线生成 两个阶段。
一、离线处理阶段:把知识变成可检索资产
加载 支持多格式(PDF、图片、音视频等),音视频可用 FFmpeg 解码。
解析 还原文档内容与结构。对 PDF 尤其关键:
- 版式结构:OCR / VLM 辅助定位,还原排版
- 内容提取:结构化读取、OCR 或 LLM 总结
清洗 过滤脏数据:零宽字符、乱码、页眉页脚、水印等。
切块 原则:语义完整性优先。过大引入噪音,过小截断语义。 优先级:语义 > 结构 > 固定重叠 / 父子块。
向量化 多模态向量化,支持相似计算。 索引选择:HNSW(低延迟)、IVF(高吞吐)、DiskANN(亿级规模)。
二、在线生成阶段:从用户问题到可靠回答
改写 缩小 Query 与答案之间的 Gap:
- 模糊 → 扩写泛化
- 歧义 → 消歧
- 语义 Gap → HyDE 假设文档
- 多意图 → 拆分子查询
召回 多路召回(BM25 + 向量检索)+ 候选去重。 关键词抓专有名词,向量抓语义相关。
重排 精选高相关、高信息增量的上下文: RRF 粗排 → Rerank 精排 → 业务加权 → MMR 多样性 → 截断 TopN。
生成 Prompt 中强制引用溯源 + 无信息拒答约束,降低幻觉。
校验(四层串行短路)
- 格式校验:检查结构与引用标记有效性
- 风险校验:安全合规拦截(词表 + 小模型)
- 事实核验:对比回答陈述与原始 Chunk,防止编造
- 语义质量校验:评估相关性、指令遵循度与逻辑通顺性
结果分级:风险 / 异常 / 正常 → 对应动作:拒答 / 重新生成 / 返回。
总结:离线阶段决定知识质量,在线阶段决定回答可靠性。切块与改写是基础,重排与校验是关键。只有把「能检索到」和「能验证对」都做好,RAG 才能真正可信。