【Agent智能体】31智库结果融合与答案生成

发布时间:2026/7/9 16:30:51
【Agent智能体】31智库结果融合与答案生成 章节三十一智库——结果融合与答案生成一、RRF结果融合为什么需要融合在检索阶段我们并行执行了多路检索向量搜索、HyDE搜索等每一路都返回自己的排名结果。但不同检索方式的打分标准不一样没法直接比较。RRF算法就是用来解决这个问题——它不看具体分数只看排名把多路结果合并成一个统一的排序。RRF算法原理RRFReciprocal Rank Fusion倒数排名融合的核心公式RRF_score(文档d) sum( weight_i / (k rank_i) )rank_i(d)文档d在第i路检索中的排名第1名就是1第2名就是2weight_i第i路检索的权重不同检索路径可靠性不同可以加权k平滑常数通常取60k60的作用就像缓冲垫让不同排名之间的分数差距不要太大。没有k的话第1名得分1.0第2名直接腰斩到0.5差距太悬殊。有了k60第1名和第2名只差不到2%多路结果能公平竞争。RRF的优势无需标准化只看排名不看原始分数不同检索方式的结果可以直接合并抗噪声平滑常数k防止某个排名第一的文档过度主导鼓励共识在多个榜单都靠前的文档总分更高惩罚离散只在少数路出现的文档得分较低实现流程第一步获取多路检索结果。从状态中取出向量搜索、HyDE搜索等各路检索返回的文档列表。第二步统一格式处理。将不同来源的文档统一为相同的数据结构并为每路设置权重。第三步执行RRF计算。按公式对每个文档计算综合得分去重后按得分降序排列取Top 10。二、Rerank精排为什么需要RerankRRF融合虽然合并了多路结果但它只看排名不看内容。不同来源的文档质量参差不齐可能混入不相关的内容。Rerank就是用专门的相关性模型对结果进行二次精细打分。项目中使用的是BGE Reranker模型Cross-Encoder交叉编码器。它的工作方式和向量检索不同——不是分别计算向量再比对而是直接把问题和文档拼在一起扔给模型像做阅读理解一样深入分析两者的语义匹配度。精度极高但速度较慢所以只用于少量文档的精排。动态TopK截断传统做法是固定取前N个结果但这不够灵活有时候前3篇高度相关后面的都是噪声不该取有时候前7篇都相关固定截断会丢失有价值内容所以采用了断崖检测算法寻找得分断崖式下跌的位置在那里截断。比如得分是 [0.95, 0.92, 0.88, 0.12, 0.08]在0.88和0.12之间有一个巨大的落差就在这里截断只取前3篇。断崖检测使用两个阈值绝对差值阈值默认0.5相邻两个文档的得分差超过这个值就认为断崖相对比例阈值默认0.25差值占前一个文档得分的比例超过这个值也算断崖两个条件满足其一就触发截断同时保证最少保留3篇、最多保留10篇。实现流程第一步合并文档池。把RRF融合后的本地检索结果和网络搜索结果合并到一个池子里。第二步Rerank打分。调用BGE Reranker模型对每个文档与用户问题的相关性进行精细打分。第三步断崖检测截断。根据打分结果找到断崖点动态截取高质量文档避免低分结果混入。第四步更新状态。将精排后的文档列表存入状态供答案生成使用。三、答案生成与流式输出答案生成节点是检索流程的最后一公里负责把前面所有步骤的成果转化为最终回答交给用户。核心流程第一步检查前置答案。如果之前步骤已经生成了追问或拒绝回答比如产品确认阶段让用户确认产品就直接输出不需要再调大模型省时间。第二步构建Prompt。把用户问题、历史对话、商品名、以及Rerank后精排的文档片段全部打包成一个提示词。这里有个细节文档按相关性排序后逐个添加同时累加长度超过上限比如12000字就停止防止超出大模型的处理能力。每个文档片段还会贴上标签第几条、来源、相关性得分、标题方便大模型引用时说明出处。第三步生成答案。调用大模型根据提示词生成最终回答。如果是流式模式就一个字一个字推送给前端实现打字机效果用户体验更好。非流式模式就等全部生成完再返回。第四步提取图片。不光靠大模型在回答里提图片代码还会从源文档中用正则表达式提取图片链接包括Markdown图片语法和网络URL。这是双保险——大模型可能编造图片地址而从源文档直接提取的最可靠。第五步写入历史。把最终答案、图片链接、关联商品等信息存入MongoDB历史记录。第六步发送结束事件。向前端发送一个FINAL信号附带完整信息答案图片告诉前端回答完毕。名词解释RRF倒数排名融合算法不看分数只看排名把多路搜索结果合并成统一排序。Rerank重排序对初筛结果用模型精细打分选出最相关的内容。精排对召回的候选结果精细打分排序把最相关的放前面。断崖检测找到得分突然大幅下降的位置来截断比固定取前N个更智能。Cross-Encoder交叉编码器把问题和文档拼在一起让模型分析匹配度精度高但速度慢。Prompt给大模型的指令/提示词告诉它要回答什么、参考什么资料。流式输出大模型每写出一个字就立刻推给用户看不用等全部写完。SSE服务端单向推送技术实现流式输出的基础。