跳到主要内容

Pro版:多通道检索与治理

从这一篇开始,进入 Nexus Agent Pro

前两篇讲的是 开源版 Nexus Agent,它已经把一个企业级 AI 智能体的主干打通了。从这一篇起,后面都是 Nexus Agent Pro (升级后的 Pro 版本)的内容——Pro 版在开源版这套主干之上,把检索、文档解析、知识治理几块推到了生产级深度。先看一眼两版的差异,你就知道 Pro 到底强在哪、后面几篇要讲什么。

开源版和 Pro 版差在哪

能力维度开源版 Nexus AgentNexus Agent Pro
检索通道向量 + 关键词 双通道向量 + 关键词 + 知识图谱 + 层级摘要树 多通道
融合排序RRF 融合加权融合(RRF 骨架 + 原始分归一化 + 元数据推进 + 意图权重)
精排可选外部 RerankPython 工具 + 交叉编码器精排(BGE 多种重排)
文档解析Apache Tika 识别多种格式 OCR 智能识别 结构化解析(边界 / 表格 / bbox 坐标)
切块四种策略组合基于结构化块 的父和子切块
关系类问题知识图谱检索(实体 / 关系 / 社区 / 跨文档)
全局总结问题递归层级摘要树(聚类 + 摘要,召回后下钻原文)
表格问答表格当普通文本结构化表格问答(行列单元格 + 受控查询计划 + 单元格级高亮)
引用可靠性引用来源标注额外做 交叉编码器引用修复,引用回溯真实来源
知识库隔离知识路由知识路由 + 业务库边界
架构纯 JavaJava 主链路 + Python 工具服务 混合架构

开源版帮你把 AI 应用工程化的主干跑通,Pro 版把每个环节都做到了大厂的生产级深度。 后面几篇会一块块展开,本篇先从最核心的「多通道混合检索」讲起。

多通道混合检索总览

Nexus Agent Pro 的检索链路是多通道并行召回 + 加权融合 + 交叉编码器精排。这一篇专门把这条链路拆开讲清楚:到底有几个通道、它们怎么并行、分数量纲不同怎么融合、融合完怎么精排、证据太多或太少又怎么治理。

这块是整个系统里技术细节很高的部分,也是面试中容易聊出深度的地方。

来个小概括

用户的一个问题,会被拆成若干子问题,每个子问题在最多五个检索通道里并行召回候选,然后通过加权融合统一排序、交叉编码器精排优选、父子块聚合补全上下文,最后经过证据预算裁剪注入 Prompt。整条链路里没有证据就直接拒绝,绝不有幻觉问题。

为什么要搞这么多通道

先说说单通道的天花板在哪。

纯向量检索的问题是:它擅长语义匹配,但对精确匹配天然弱势。用户问一个订单号 20260708-XY、一个配置项 app.admin-auth.token,向量检索很可能给你返回一堆"看起来相关"但根本不含这个词的段落。

纯关键词检索反过来:精确匹配很强,但完全不懂语义。用户问"打印机墨盒怎么换",文档里写的是"墨盒更换步骤",关键词就是匹配不上。

而且还有一类问题,这两个通道都搞不定:

  • "这份文档整体讲了什么" —— 需要全局视角,不是某几个片段能回答的
  • "A 部门和 B 部门是什么关系" —— 需要沿着实体关系走,不是相似度能算出来的
  • "2025 年 Q3 华东区销量是多少" —— 答案在表格的某个单元格里,切成文本就丢了结构

所以 Nexus Agent Pro 把检索通道扩展到了五路,各自补齐一块短板。

五个检索通道

系统里一共定义了这些检索通道,实际参与召回的是前五个:

通道标识擅长什么底层引擎
向量检索vector语义相似、模糊匹配PGVector
关键词检索keyword精确匹配、专有名词、编号Elasticsearch / BM25
表格检索table表格统计、行列单元格定位结构化表格数据 + 受控查询计划
知识图谱graph-rag实体关系、跨文档关联、社区总结知识图谱(实体/关系/社区检索单元)
结构树raptor长文档全局总结、跨章节概括层级摘要树

除了这五个,还有 rerank(重排序,不是召回通道而是融合后的精排环节)和 structure(文档结构图检索,作为结构导航的软辅助)。

通道不是全都开

不是每次提问都把五个通道全跑一遍。系统会先理解问题意图,再决定重点走哪些通道、给哪些通道更高权重。比如判断是表格题,就会加大 表格检索 通道的权重;判断是全局总结题,就加大 结构树 权重。向量和关键词作为基础通道基本常驻,其余通道按开关和意图动态参与。

检索意图:先理解,再检索

多通道并行的前提,是系统得先搞清楚"这个问题该重点走哪个通道"。

它的做法是:先用一个确定性兜底(只从章节号、引号锚点这类明确结构语法里提取信号),再调用 LLM 做一次受控的查询理解,输出一个结构化的结果。这个结果里包含:

  • 查询类型:问题类型,八选一:普通文档问答、追问、结构导航、表格查询、图谱关系、全局总结、开放闲聊、能力查询
  • 多个通道:建议参与的检索通道列表
  • 实体关系:涉及的实体(知识图谱会用到)
  • 章节关系:章节锚点(结构导航会用到)
  • 表格边界:表格操作意图(表格查询会用到)
  • 置信度:打出不同信任分
查询理解只是"建议",不是"决策"

这里有个很重要的工程约束:项目只输出受控建议,不生成 SQL、不决定最终答案。而且 LLM 给的建议还要过系统的白名单校验:置信度不够时,只保留确定性的保守计划;识别出的通道、结构操作枚举不在白名单里的直接丢弃。这样既借助了大模型的理解能力,又不会让它的幻觉直接影响主链路。模型负责理解,程序负责把关,这是整个系统反复出现的设计原则。

查询类型到检索意图的映射效率很高:结构导航,表格查询,图谱关系,全局总结,普通结构。这些加一起最终会影响融合阶段各通道的权重倍率。

加权融合:把五路结果排到一起

五个通道各返回一批候选,可它们的分数根本没法直接比——向量检索给的是相似度(0~1 之间),关键词检索给的是词频分(可能大到几十),知识图谱给的又是另一套质量分。硬比大小没有意义。

加权融合要解决的就是这件事:把口径不一的几批分数,公平地排到同一个榜单上。做法是给每个候选算一个统一的"融合分"。

融合分是怎么算出来的

融合分主要看三样东西:

  • 排第几名:候选在每个通道里排的名次,越靠前加分越多。这一项只看名次、不看原始分数,所以天生能跨通道比较——它是整个融合的"骨架"。
  • 原始分数高不高:作为微调。在名次相近时,原始分数更高的候选稍微占一点优势。
  • 自带的加分项:比如这条证据属于高质量文档、命中了用户问的知识领域,会有一点额外加分(有上限,不会喧宾夺主)。

在这三样之上,每个通道还有一个信任权重:表格、知识图谱这类结构化程度高、噪声小的通道,天生给更高的权重;如果系统判断这次问题就是冲着某个通道来的(比如一看就是表格题),还会临时给这个通道再加点码。

一个候选要是同时被好几个通道命中,各通道给它的分会累加到一起——多路都认可的证据,本来就该排得更靠前。

为什么"排名"这一项不能省

你可能会问:既然要综合打分,为什么还留着"排第几名",直接按原始分数加权不行吗?不行。不同通道的原始分数分布差别很大,哪怕都是 0~1,某个通道偶尔冒出一个虚高的分,也会把整个排序带偏。而"排第几名"只看名次、不看具体分值,天生不怕这种极端值。所以最终是用名次打底保稳定,用原始分数和加分项做微调,用通道权重做倾向引导,三者配合,既稳又准。

别让高价值证据被丢弃

融合排完序,系统默认取前 40 条进入后续环节。但只按分数取前几名有个风险:一些"分数不算最高、却特别关键"的证据会被挤出去,比如知识图谱里的实体关系证据、跨文档的社区总结、从多份文档找答案时其他文档的正文。

所以在挑候选时留了个"保底"机制:如果前几名里一条合格的知识图谱关系证据都没有,就从后面补一条进来(替换掉其中最弱的一条普通证据);如果这次是自动从多份文档里找答案,也会给每份文档都留出一定的正文名额。这些"保底"靠的是证据本身的特征——有没有真实出处、来自哪个通道、质量分高不高、够不够多样,不靠猜业务关键词。

交叉编码器精排

融合给出的是一个"还不错"的粗排,但它本质上还是靠名次、分数、加分项这些统计信号排出来的,并没有真正"读懂"问题和候选到底搭不搭。所以融合之后,再接一道 交叉编码器精排

交叉编码器和向量检索的思路不一样。向量检索是把问题和文档分别编码成向量,再算它俩的距离,快但粗。交叉编码器是把"问题 + 这条候选"拼在一起整个塞进模型,让模型直接判断这条候选到底有多相关。因为模型能同时看到问题和候选、做更细的比对,所以判断更准,但也更慢——正因为慢,只在融合后筛出来的那批干净候选(默认 24 条)上跑,不在全量上跑。

精排这一步由专门的交叉编码器重排模型负责,默认使用 BGE 重排模型。

精排失败会明确展示,并保留融合排序结果

系统不会用简单的关键词排序冒充交叉编码器精排。模型、依赖、网络或返回结果出现问题时,会明确记录失败原因,也不会写入虚假的精排分和精排名次,而是按照精排前的融合榜继续挑选最终证据。精排成功时使用模型给出的新排序,失败时使用原来的融合排序,整个过程都可以在观测面板中看到。

下图从功能视角串起了完整链路:五通道同时查找、合并重复证据、计算统一融合分、补全上下文、选出前 24 条进行交叉编码器精排、在精排失败时保留融合排序,以及最终挑选回答证据。观测面板会记录各通道命中数、候选数量变化、融合分、精排分和排名前后的变化。

父子块聚合:小块检索、大块回答

这是整条链路里最精巧的一个设计。

前面切块篇讲过,文档会切成大块(父块)和小块(子块)。检索时用的是 小块——小块语义集中、话题单一,更容易被向量检索精准命中。但如果直接把命中的小块拿去当证据,上下文往往不完整,模型可能"只见树木不见森林"。

所以命中小块后,系统会自动往上找到它所属的大块,用大块作为最终喂给模型的证据。

检索用小块保命中精度,回答用大块保上下文完整性。 一句话说清了这个设计的价值。

下面这张管理端的知识产物关系图,把这条链路落到了实际产物上:原始文档先生成解析块,再向下关联父级块、检索子块、图谱证据和分层摘要。检索命中子块后,系统可以沿着这条关系链回到父块和原文;其他检索通道也复用同一套来源关系完成证据追溯。

管理端知识产物关系图:解析块、父子块与检索产物的结构链路

图:从原始文档到解析块、父子检索块及下游知识产物的可追溯链路。

结构化表格问答:表格通道怎么工作

前面把表格列成了五个通道之一,这里单独展开,因为它和其他通道的思路完全不同——走的是"结构化查询"而不是"文本检索"。

先看一个普通 RAG 一定翻车的场景:文档里有张销量表,用户问"2025 年 Q3 华东区的销量是多少"。如果把表格拍平成一段文本丢进向量库,行和列的对应关系就全丢了,模型看到一堆数字根本分不清哪个对应"华东 + Q3"。

表格通道的做法是完整保留表格的行、列、单元格结构以及每个格子在原文里的位置

  • 结构化入库:文档解析时产出的表格会保留原始的行列、单元格和它们在页面上的位置坐标,单独存成结构化表格数据,而不是拍平成一段文字
  • 受控查询计划:用户的自然语言问题不靠关键词硬猜,而是由一个"查询计划建议器"给出方案——先由固定规则给候选,再让大模型补充受控建议,两者都要过一道白名单校验(用哪张表、哪些字段、做什么运算——计数/求和/最大值/最小值/分组,加什么过滤条件——等于/包含/大于/小于等,全都得在允许范围内),校验通过了才真正去查表
  • 精确到单元格:表格证据带着完整的定位信息(命中的行号、列名、具体单元格和位置坐标),管理端可以从回答里的引用直接跳转到那张表,并高亮命中的单元格
管理端表格问答

证据治理:够不够、多不多、准不准

召回和精排解决的是"找得到、排得对",接下来还有三个问题要治理。

没有证据?直接短路

如果所有通道跑完,最终一条有效证据都没召回到,系统不会硬着头皮让模型回答,而是直接短路返回一句预设话术:

当前没有从已接入文档中检索到足够证据,暂时不能给出可靠结论。

这是防幻觉最直接、最有效的手段。宁可告诉用户"没查到",也绝不让模型凭空编。

证据太多?预算裁剪

反过来,如果证据召回得太多,会把模型能读的上下文塞满,既费钱又稀释重点。所以有一套按字数来的预算控制:

限制项默认值作用
单个子问题的证据上限2,200 字防止单个子问题证据过多
全部证据总量上限5,200 字控制喂给模型的总证据量
单个大块最大字数2,200 字防止某个大块占用太多预算
最终证据条数6 条最终喂给模型的证据数量

超出预算时,按相关性和证据的作用动态裁剪,优先保留高价值证据(同章节的正文、知识图谱里的关系原话、结构树对应的原文等)。

引用准不准?引用修复

模型生成回答时会标注引用编号 [1][2],但模型标的引用不一定准——可能引错了,也可能该引的没引。所以答案生成完之后,还有一道 引用修复

它的做法是用交叉编码器,把回答里的每一句话和候选证据逐一比对,找出真正支撑这句话的那条证据,记下这句话对应哪段引用原文、出自哪个分块、第几页、在页面的什么位置。至于什么时候触发修复、怎么过滤、怎么发给前端展示和归档,都由主链路来决定。

引用必须能回到真实来源

有一条硬原则:知识图谱、结构树、表格这些通道给出的最终引用,都必须能追溯到一段真实、可引用的原文——知识图谱要追到关系证据的原话,结构树要追到摘要背后的原文,表格要追到具体的行和单元格。绝不能让引用指向一个"只有概括、没有出处"的东西。上下文可以往外扩,但引用最终一定要落在真实原文上。

面试怎么聊这块

面试参考

Q:你们的混合检索是怎么融合多路结果的?

A:我们有五个检索通道,各自打的分根本没法直接比。融合用的是加权融合:先用"排第几名"打底(跨通道能比、又抗极端值),再叠加原始分数和构建期算好的加分项做微调,最后乘以每个通道的信任权重和检索意图倍率。这样高质量通道、以及正好命中这次问题类型的通道,能拿到更高权重。融合完还会接一道交叉编码器精排。

Q:为什么要接一道交叉编码器精排,直接按检索分排序不行吗?

A:向量检索是把问题和文档分别编码成向量再算距离,快但是太粗糙。交叉编码器是把问题和候选拼在一起整个塞进模型,让模型直接判断这条候选相不相关,更准但更慢。所以我们只在融合后筛出来的那批干净候选(24 条)上跑精排,不在全量上跑,兼顾效果和性能。

Q:怎么防止模型幻觉?

A:从架构层面做了三道防线。第一,没有有效证据时直接拒答,不让模型编。第二,证据按字数预算裁剪,避免上下文被无关内容稀释。第三,答案生成后做引用修复,用交叉编码器校验每句话到底有没有证据支撑,引用必须能回溯到真实来源。

Nexus Agent Pro 项目的申请

Nexus Agent Pro 项目是本人根据大厂的真实开发思路,花费了很多的精力和时间认真打磨出来的,也为了更好的保护已经加入星球的小伙伴的权益。所以决定 Nexus Agent Pro 不再进行开源,而是将项目放到了私有库中。

普通版本的 Nexus Agent 项目依然还是正常开源,本人也依然会继续进行优化。开源地址为: 👉 点击这里跳转到 Nexus Agent

已经加入星球的小伙伴,可以按照以下指示来申请和学习 Nexus Agent Pro:👉 点击这里学习 Nexus Agent Pro

🎁优惠