完整题目
RAG 的检索阶段效果和性能不好,应该如何分层优化?
本文目录
先定位,不先堆组件
检索优化先固定语料、权限、查询集、相关性标注、索引和配置版本,再沿链路查错误。若原文缺失、解析错乱、权限或时间过滤错误、索引未更新,换 ANN 算法或加入重排不会解决根因。
1. 语料、切分与候选资格
检查文档版本、删除传播、OCR/表格/标题结构、切分边界和元数据。权限、租户、语言、时间与产品版本应参与服务端候选资格判断。预过滤、检索中过滤和检索后过滤对召回与延迟的影响取决于具体引擎;不能笼统说“加过滤就一定减少计算”。
2. 候选生成
以精确搜索或当前系统建立可重复基线,再比较 Flat、HNSW、IVF、SQ/PQ 等方案。HNSW、IVF 的质量、延迟和内存取决于维度、数据分布、参数、过滤、更新方式、硬件和负载。PQ 的存储由子量化器数量与每个编码位数决定,不能把“32 位降到 8 位”等同于任意 PQ 配置的固定四分之一总内存。
关键词与向量检索覆盖的错误类型不同。专有名词、编号和精确短语常能从关键词召回获益,语义改写可能从向量召回获益;是否做混合检索要按切片比较两路的独立贡献。
3. 融合与重排
融合先处理不同结果集的重复文档与稳定文档 ID。RRF 使用名次而不是原始分数,仍有 rank constant、候选深度和可选权重;分数归一化/加权则保留分数差异,但对分数尺度敏感。应在同一 judgment set 上比较,而不是认定 RRF 无需调参。
重排只处理已经召回的候选。Cross-Encoder、Late Interaction 或其他排序器的效果和速度必须实测;不存在“某类模型普遍更快但质量更低”的固定顺序。候选深度和输出数量也由质量—延迟曲线决定。