ARTICLE / 2 MIN READ

RAG 检索增强生成的数据管道怎么做

从文档切分、权限过滤、混合检索到引用评估,搭建可持续更新的 RAG 知识库。

RAG 项目效果不好,很多时候不是模型不够大,而是文档切分、权限、版本和检索评估没有建立起来。知识库首先是一条数据管道,其次才是一个问答界面。

先定义文档生命周期

原始文件进入对象存储后,记录 source_id、版本、租户、权限、语言、更新时间和内容哈希。解析、切分、向量化和索引都带上同一个文档版本,更新时只替换受影响的块。

文件 -> 解析/OCR -> 清洗 -> 结构化切分
     -> 权限标签 -> 向量化 -> 倒排+向量索引
     -> 检索 -> 重排 -> 带引用生成

切分不是按固定字数

标题、段落、表格和代码块应该保留结构。切分块带上父文档、章节路径和相邻块关系,回答时可以扩展上下文。块太大增加噪声,太小则丢失语义,应该用评估集调参。

权限过滤必须在检索前

用户只能检索自己有权访问的文档。权限条件进入索引过滤或查询条件,不能先召回全部内容再在提示词里要求模型“不要泄露”。

混合检索与重排

关键词检索适合专有名词、编号和精确短语,向量检索适合语义相似。先用两路召回,再用重排模型按相关性和权限打分,最后限制上下文总 token。

评估至少包含 Recall@K、MRR、引用准确率、拒答正确率和端到端回答质量。把“没有答案”样本单独评估,避免系统用幻觉填空。

增量更新与回滚

文档版本发布后生成新的索引批次,校验块数量、向量维度、权限覆盖和抽样召回,成功后原子切换别名。旧索引保留一段时间,出现错误可快速回滚。

RAG 的护城河不是把一堆文件塞进向量库,而是让每个答案都能追溯到正确版本、正确权限和可复现的检索过程。

参考资料:pgvector 向量检索与混合搜索

GITHUB DISCUSSION

评论与回复

评论保存在 GitHub Discussions,登录 GitHub 后即可参与,发布和回复都在本页完成。

评论区进入视口后自动加载。