03Bread RAG · 第 5 章
总进度 20 / 33

Hybrid 检索 + LLM Rerank

向量检索能处理一些不同说法,但遇到精确编号时,字面匹配仍可能更有帮助。先用下面几类问题比较两种方式:

2026-09-28约 60 分钟380 行代码难度 ★★★★

如果想获取全套课程资料,请关注微信公众号 「AI面包君」,回复 「课程资料」 即可领取。

1. 编号和同义表达,适合怎样查?

向量检索能处理一些不同说法,但遇到精确编号时,字面匹配仍可能更有帮助。先用下面几类问题比较两种方式:

查询向量检索需要观察什么字面检索需要观察什么
BW-20260301-0042 的订单能否保留精确编号的差异编号是否被完整识别和匹配
vegan 选项能否关联“植物基”没有共同字词时是否遗漏
员工面包福利是否找到同一业务主题是否同时命中关键字词

两种检索各有可能遗漏的内容。本章尝试把它们的候选合并,这种做法叫 hybrid,也就是混合检索。

                     用户查询
                        │
            ┌───────────┴────────────┐
            ▼                        ▼
     +-------------+          +-------------+
     | 向量检索     │          │ BM25 检索    │
     | top-10      │          │ top-10      │
     +-------------+          +-------------+
            │                        │
            └───────────┬────────────┘
                        ▼
                  +----------+
                  | RRF 融合  │       ← 用 Reciprocal Rank Fusion
                  +----------+         合并两个排名列表,跳过分数尺度问题
                        │
                        ▼
                  +-----------+
                  | LLM 重排   │       ← 给 LLM 看 top-K 候选
                  +-----------+         让它选最相关的 final_k 个
                        │
                        ▼
              拼进 prompt 让 LLM 回答

本章把这套完整做出来。

<!-- bread-visual:start -->

两条检索路线,汇合后再精选

图解: 编号更适合字面匹配;同义表达更依赖语义。 RRF 融合的是排名,不是直接相加两种检索的原始分数。

<!-- bread-visual:end -->

2. 跑起来

cd ch04_hybrid
python main.py

预期输出(截取问题 1 的展示):

======================================================================
问题 1: BW-20260301-0042 这个订单退款时要注意什么?
======================================================================
  [向量检索 top-5]
    #1 [bread_workshop.md] (chunk 5) ## 五、订单编号规则
    #2 [bread_workshop.md] (chunk 4) ## 四、退换货政策
    ...
  [BM25 检索 top-5]
    #1 [bread_workshop.md] (chunk 5) ## 五、订单编号规则
    #2 [bread_workshop.md] (chunk 4) ## 四、退换货政策
    ...
  [Hybrid (RRF) top-5]
    #1 [bread_workshop.md] (chunk 5) score=0.033
    ...
  [LLM 重排 final top-3]
    #1 [bread_workshop.md] (chunk 4) ## 四、退换货政策
    #2 [bread_workshop.md] (chunk 5) ## 五、订单编号规则

AI: 根据订单编号 BW-20260301-0042 退款时,必须提供完整的订单编号...

试读到这里 · 后续内容已封存

关注公众号,继续把这章学完

在「AI面包君」发送关键词「学习AI」拿到口令。验证一次,这个浏览器就能继续阅读全部课程。