第九课:RAG 的工业级进阶——重排序与多路检索

上一课我们聊了怎么“编排”流程。今天我们要聊聊,怎么让 AI 的“知识来源”更准确。因为在复杂的项目里,简单的向量检索往往会搜出一堆干扰项。

1. 核心概览 (Core Overview)

在前面我们学了 RAG。但在工业界,仅仅靠“余弦相似度”去搜向量是不够的。我们需要 “多路检索 (Hybrid Search)” 和 “重排序 (Reranking)”。

2. 分段拆解 (Breakdown)

A. 多路检索:向量 + 关键词

  • 痛点: 向量检索擅长“意思相近”,但处理“特定专有名词(比如一个特殊的类名 OrderX7_Handler)”时,效果不如传统的 Elasticsearch 关键词匹配。

  • 架构方案: 同时从 向量数据库 和 ES/数据库 检索。然后把两边的结果合并。

B. 重排序 (Rerank):精挑细选

  • 逻辑: 检索出来的 Top 20 结果里,可能有一半是杂音。

  • 做法: 使用一个专门的 Rerank 模型(如 BGE-Reranker)。它计算速度极快,不看向量,而是直接对比“问题”和“搜出来的片段”之间的相关性,重新打分。

  • 价值: 经过 Rerank 后,你可以把最相关的 3 条放在最前面。这解决了 Day 4 提到的 “中间失踪 (Lost in the Middle)” 问题。

C. 查询转换 (Query Transformation)

  • 技巧: 用户问得可能很含糊。

  • 架构做法: 先让一个便宜的 LLM 把用户的问题重写一遍(生成 3 个不同维度的搜索关键词)。这叫 Multi-Query。

3. 最终总结 (Summary)

RAG 的质量决定了 Agent 的上限。 工业级 RAG 是一套组合拳:重写问题 -> 多路检索 -> 结果合并 -> 重排序 -> 喂给 LLM。这一套流程能让你的 AI 在 1GB 代码库里找东西的准确率提升 40% 以上。


测验
分层检索: 假设你的 Java 项目代码存在 GitHub,文档存在 Confluence。你会把它们存在同一个向量数据库里吗?检索时如何分配这两者的权重?

长短权衡: 如果用户问“帮我分析一下 OrderService 的核心逻辑”,而这个类有 2000 行。你的检索系统搜到了 5 个相关的片段,但散落在类的不同位置。你认为重排序模型应该优先选择“代码定义开头”还是“具体的业务逻辑处理块”?

实时性: 程序员每分钟都在改代码。你的 RAG 系统如何保证检索到的永远是 当前 Git 分支 的最新代码,而不是一小时前的旧版本?

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容