Hybrid 检索遇上 Hybrid Agent
人工智能约 6 分钟阅读

Hybrid 检索遇上 Hybrid Agent

Qwen3.8-Max 谈 Hybrid Agent,RAG 默认 Hybrid Search。两边同一课:多通道、可融合、输出必须能验收。

cover

八月上旬 Qwen 团队放了 Qwen3.8-Max:2.4T 总参、约 95B 激活,云上先用,并放话会开源同级权重。博客里反复强调的不是又刷一条榜,而是 Hybrid Agent——代码改仓库和 GUI 操作电脑两条通路绑在一起,长任务要能交出「可验收的交付物」。

同一时期,RAG 圈的主流说法几乎收敛成一句:纯向量检索不够用,Hybrid(向量 + BM25/关键词)+ 融合(常见是 RRF) 才是默认。两件事看起来一个在模型、一个在检索,其实卡在同一个工程问题上:系统什么时候该「算」,什么时候该「查」,查完又怎么合并。

模型变强,不会自动修好检索

我见过太多这样的升级路径:换更大模型 → 提示词加长 → 幻觉换了一种文风继续出现。根因经常是上下文里根本没有那条 SKU、那条法规编号、那个内部函数名。语义近邻找得到「类似退货政策」,找不到 POL-17-B 这种必须精确命中的符号。

BM25 / 关键词通道就是干这个的。向量负责「意思靠近」,词法通道负责「字符串就该在」。2026 年还把「只 embed 切一刀」当生产默认,属于主动给自己挖坑。

RRF:懒而稳的融合

Reciprocal Rank Fusion 不碰原始分值,只看各通道里的名次:

[
\mathrm{RRF}(d)=\sum_{r\in R}\frac{1}{k+\mathrm{rank}_r(d)}
]

k 一般取 60 左右。好处是向量和 BM25 的分数量纲可以完全不同,你不用先做一场玄学标定。坏处也明显:它不理解业务权重。若合规场景「标题命中法条」必须压过「语义很像的旧解读」,你要在 RRF 之前加过滤,或在之后用业务规则重排,别指望一个公式通吃。

text
query
  ├─ dense retriever  → top 50
  ├─ bm25 / keyword   → top 50
  └─ (可选) 元数据过滤:租户 / 时间 / ACL
        ↓
     RRF merge → top 20
        ↓
     cross-encoder / 小模型 rerank → top 6
        ↓
     拼进 prompt(带引用锚点)

Qdrant、OpenSearch、各类自建方案都在把这条链路当模板。重点不是选哪个 logo,而是两路召回是否真的在线、融合是否可观测。

Hybrid Agent 和 Hybrid Search 是同一类分层

Qwen3.8-Max 讲的 Hybrid Agent,是 coding channel 和 GUI channel 互补:该改文件就改文件,该点界面就点界面。工程上我会把它映射成和检索一样的门禁:

层 检索侧 Agent 侧
路由 要不要检索、检索哪些库 用代码工具还是电脑操作
并行召回 dense + lexical 多工具同时试探
融合 RRF / 加权 以可验证结果为准,不看谁先说话
重排 rerank、引用 测试、截图、diff、人工门禁
降级 检索失败就拒答或追问 工具失败就停,不编造「已完成」

模型参数再大,也不该拥有「跳过证据」的特权。Agent 写完代码如果没有测试输出或 GUI 前后对比,那只是散文,不是交付。

我会怎么改现有 RAG

1. 召回日志先于 prompt 调优。 每次回答留下:两路 topK、RRF 后列表、最终进上下文的 chunk id。用户说「答错了」时,先看是没召回还是召回了但模型没用。

2. 符号字段单独建词法索引。 订单号、错误码、类名、配置键,别只靠 embedding。必要的话查询前做一次正则/词典抽出,强制走 keyword 通道。

3. chunk 策略按文档类型分。 API 文档按 endpoint 切;政策按条款切;代码按符号+调用邻域切。统一 512 tokens 一切,是最省事也最容易在关键处切断的办法。

4. 引用是产品,不是装饰。 前端把 doc_id + 锚点 点得开。模型被要求「无引用则说不知道」,比「请尽量准确」有用。

图:两路召回合并后再重排,比单路把 topK 开到 100 更可控

inline

和「开源同级权重」一起想的运维问题

Qwen 放话开源 Max 级权重,会让更多团队把强模型抱回私有集群。那时候贵的不是卡,是错误的自动化:

  • 夜间 Agent 改配置,没有 diff 审查
  • RAG 索引日更,没有查询回归集
  • GUI 操作跑在真实工单系统上,没有 shadow 环境

我的最低配法:固定 50~100 条「必须答对 / 必须拒答」的题;每次改 embedding、改融合参数、换模型,先跑这套。Agent 写权限和检索写权限一样,默认只读,显式提升。

一个最小可上线的 Hybrid 骨架

不必一上来上图数据库。很多业务先这样跑就够:

  1. 文档入湖时同时写:向量索引 + 全文索引(同一 doc_id)
  2. 查询时两路各取 30~50,RRF 合成 15,再重排到 4~8 段
  3. Prompt 里强制:依据 [n] …;若依据不足则说明缺什么
  4. 在线打点:hit_dense / hit_bm25 / used_citations / user_feedback

跑两周你会看到一类刺眼的数据:dense 命中很高、bm25 命中很低,但差评集中在「编号/型号说错」。那不是模型笨,是词法通道权重或分词器有问题。另一类相反:bm25 很猛,回答像关键词堆砌——该加语义通道或重排模型了。

Hybrid Agent 同理。只给 coding 工具时,它会用脚本硬刚本该点的后台按钮;只给 GUI 时,它会在页面上慢慢点本该一行 API 解决的事。路由层要根据「是否有稳定 API / 是否有测试钩子」做偏向,而不是让模型自由发挥酷炫操作。

小结

Qwen3.8-Max 把 Hybrid Agent 推到台前,RAG 实践把 Hybrid Search 写成默认。两边都在说:单一通道不可信,合并规则要显式,输出要能验收。

如果你这周只能做一件事,别先追新模型。把现有向量检索旁边加一条 BM25,用 RRF 融一下,把召回列表打进日志。模型和 Agent 再怎么 Hybrid,也得踩在还能被你看见的证据上。

相关文章