引言
今天带来一篇较新RAG的论文笔记:Pistis-RAG: A Scalable Cascading Framework Towards Content-Centric Retrieval-Augmented Generation。
在希腊神话中,Pistis象征着诚信、信任和可靠性。受到这些原则的启发,Pistis-RAG是一个可扩展的多阶段框架,旨在解决大规模检索增强生成(RAG)系统的挑战。该框架包括不同的阶段:匹配、预排名、排名、推理和聚合。每个阶段有助于缩小搜索空间,优先考虑语义相关文档,与大语言模型(LLM)的偏好一致,支持复杂的思维链路(CoT)方法,结合多个信息源。
在排名阶段引入了一个重要的创新,即认识到仅靠语义相关性可能不会提高生成质量,这是由于之前工作中提到的几次提示顺序的敏感性。这一关键方面经常被当前的RAG框架所忽视。
LLMs和外部知识排名方法之间的对齐问题与在RAG系统中占主导地位的模型中心范式紧密相关。作者提出了一种以内容为中心的方法,强调LLMs和外部信息源之间的无缝集成,以优化特定任务的内容转换。
作者提出的新型排名阶段专门为RAG系统设计,融合了信息检索原则,同时考虑了在LLM偏好和用户反馈中体现的独特业务场景。
本篇论文比较短,实验部分比较简略,代码也没有提供,后续原论文有更新,这里也会补上。
1. 总体介绍
LLM虽然在NLU和NLG任务中展现出了卓越的性能,但受限于其训练数据的范围和质量,通常无法整合实时或领域特定的知识,这些知识未出现在训练语料中。
为了减轻这些限制,RAG应运而生。但当前的RAG框架面临着重要挑战。关于两个方面:准确检索相关知识以及平衡生成质量与计算效率。传统的RAG方法也可能忽视LLM处理和优先处理信息的细微差别,导致在真实应用中性能不佳。
本文提出了Pistis-RAG,一个同时提高了效果和效率的新框架,来解决上述的挑战。Pistic-RAG利用多阶段检索流水线,包括匹配、预排名、排名和重新排名阶段。每个阶段在优化检索相关知识和将其整合到LLM生成的响应中起到了关键作用。同时优先考虑了以内容为中心的方法,确保检索到的信息与用户需求和LLM能力无缝对齐。
本篇工作的贡献点在于:
- 内容为中心的整合: 引入内容为中心的视角,强调内容传递与业务目标和用户偏好的对齐。通过专注于检索和呈现内容的相关性以及上下文和战略(strategic)价值,超越了传统的排名方法。
- 增强的用户反馈机制: 通过不断将反馈纳入排名过程,系统可以适应不断变化的用户偏好和业务目标。引入了专门的排名机制来解决LLM对提示顺序的敏感性,优化提示序列以根据LLM偏好优先考虑最相关和信息丰富的提示。
- 新颖的框架:提出了一个全面的框架,用于优化RAG系统的端到端过程。整合了先进的排名技术,涵盖匹配、预排名、排名、重新排名和多路径推理阶段。
- 实验论证: 进行了大量实验,展示了提出方法的有效性。
2. 背景知识
基本上,作者的方法为大规模在线内容生成系统(如ChatGPT)提供服务,这些系统解决了开放域问答问题。
2.1 大规模生成AI系统
大规模生成AI系统用于处理大量实时用户请求,在包括客服、聊天机器人和社交媒体平台在内的各种应用中变得日益重要。这种系统面临的关键挑战之一是确保生成的内容既相关又准确。RAG是应对这一挑战的有希望的方法。
大规模生成AI系统的另一个挑战是确保它们能扩展以处理可能收到的大量请求。
RAG在这些系统中扮演了重要角色,作为一个强大的外部记忆源,显著减少了幻觉,增强了回答的相关性和事实准确性。
2.2 开放域问答
RAG框架利用了两阶段的检索器-生成器体系结构,对于开放域问答信息检索任务尤为有效。
通过采用源自传统系统检索学科的级联系统,RAG框架可以整合高级技术,如提示工程和多步推理。在Pistis-RAG框架中利用级联建模来实现系统性能和输出质量的显著增强。
3. Pistis-RAG框架
3.1 内容中心 vs 模型中心
内容中心的观点认为这个过程是将内容从一种形式转换为另一种形式,而不是传统的以模型为中心的方法,集中于在模型内部操纵数据。
具体而言,系统通过一系列操作来运行:
- 内容获取: 首先从外部知识库中检索信息。检索过程由用户的意图驱动,确保检索的内容与用户的期望保持一致。
- 内容转换和整合: 系统然后利用检索到的内容以及在预训练期间学到的知识。该合并的知识库有助于生成新的内容。这个新内容可能是指令、摘要、创意文本格式或与用户意图相关的任何其他输出。
- 内容传递: 最后,将生成的内容返回给用户。
内容中心的观点强调这个过程中外部信息的作用,来自长期记忆的内容称为系统的主要输入,推动整个内容转换流程。
作者认为LLMs与RAG任务中使用的外部知识排名方法之间缺乏强烈的对齐是与Langchain类框架中对模型中心范式的依赖相关的。内容中心的方法将优先考虑LLM与外部信息源之间的无缝整合,优化每个特定任务的内容转换过程。
3.2 以内容为中心重新思考RAG
采用以内容为中心的视角来重新审视RAG任务。这种视角使我们能够在RAG和传统信息检索系统之间进行有意义的比较。
以内容为中心的研究,如图2所示,突出一个关键问题:当前的RAG重排名器(reranker)很容易导致误解。其功能更符合预排名阶段。
此外,可以看到排名阶段(Ranking)的缺失,排名阶段旨在与反映用户最终需求和偏好的反馈相一致。虽然在线RAG系统中可以获取类似的信号,但并没有得到广泛利用。
Pistis-RAG的级联架构分为五个关键阶段,每个阶段独特地为处理流水线作为贡献。
- 阶段1: 匹配(过滤) 。在该最初阶段中,采用强大的检索算法浏览大量文档,选择与用户查询最相关的文档。该阶段利用混合检索策略,确保过滤高效且有效。
- 阶段2: 预排名(语义细化)。 在匹配阶段后,该节点通过根据检索片段获得的完整文档进行细化,增强了评分过程。通过使用Cross-Encoder方法根据文档与用户查询的语义相关性对文档进行评分,以实现更高的准确性。
- 阶段3: 排名(LLM对齐)。 此时,该过程通过与LLM的偏好对齐来完善文档排名。确保了最相关信息位于提示模板内的有利位置,优化了LLM的性能。
- 阶段4: 重排(领域特定要求)。 重新排名阶段,虽然是可自行决定的,但在像关键决策场景等领域特定要求中发挥了重要作用。
- 阶段5: 推理(多路径CoT策略)。 如果文档在语义内容上缺乏独特性,此阶段通过生成多个响应序列进行干预。LLM同时根据多样化的检索输出生成答案,增强内容的多样性和在聚合阶段的决策制定。
- 阶段6: 聚合(一致性检查)。 最后一个阶段采用复杂的投票方法来综合推理阶段的输出。确保了最终用户响应的一致性和稳定性,减轻了由于LLM对输入序列的敏感性而可能引起的潜在变化。
3.3 架构
Pistis-RAG系统架构包含四个核心组件:匹配、排名、推理和聚合服务。
匹配服务 匹配服务是用户交互过程的基石,负责理解用户意图并迅速检索最相关的信息。匹配服务采用了一种复杂的信息检索技术组合,专注于优化在线大规模检索的延迟。
匹配服务利用各种数据结构来优化基于特定技术的信息检索:
- 向量存储: 对于像ANN这样的基于嵌入的检索方法至关重要。可以将文档表示为高维空间中的向量,能够快速识别与用户查询在语义上相似的文档。
- 倒排索引: 关键词检索的基本数据结构。可以快速识别包含用户查询中特定关键词的文档。例如当用户搜索特定术语时,倒排索引能够有效地找到包含该术语的文档。
内存中的键值缓存(类似redis中的键值对缓存)在有状态服务中也扮演着关键角色。可以用于:
- 用户会话维持: 存储用户正在进行的对话上下文,可以提供更连贯和个性化的用户体验。使用键值缓存来记住用户之前的查询和交互,从而提供更加定制的响应。
- 用户提示词-回答对缓存:存储先前访问过的常见问题或用户提示词的响应可以显著提高响应时间。此外,还可以作为RAG的有效少样本示例。比如,当用户提出一个经常出现的问题时,匹配服务可以将相应的答案保存在键值缓存中,可以避免每次重新搜索。
- 用户相关的会话历史: 通过存储与用户过去互动相关的高质量内容,匹配服务可以优先检索这些内容以供未来查询使用。比如:如果用户之前对特定主题表现出兴趣,匹配服务在回答未来查询时可以有限考虑与该主题相关的内容。
在大规模工业环境中,匹配服务还可以与外部搜索引擎集成,但会带来延迟的增加。
检索技术和数据结构的选择取决于应用程序的具体要求。如果需要更高的准确性,可以同时使用ANN或倒排索引、BM25和TF-IDF方法。重要的是要仔细考虑速度和准确性之间的权衡。
但需要认识到的是,匹配服务存在局限性。比如难以处理模糊或复杂查询。
排名服务 排名服务通过优先考虑与用户意图相关的项目来优化信息检索过程。接收匹配服务给出的一组相关项 I \mathcal I I,输出一个优先排序列表 O \mathcal O O。这种排序同时考虑了检索到的项和用户意图表示。
排名服务采用多种技术来实现这一目标:
(1) 阶段1: 预排名(Pre-Ranking)
作为一个初始的过滤机制,目标是简化后续的排名过程。采用一个简单排名机制,用函数 f p r e f_{pre} fpre表示,该函数评估集合 I \mathcal I I中每项的初步相关性分数。这些分数的计算为:
P = { ( I j , P j ) ∣ I j ∈ I , P j = f p r e ( I j , u ) } P=\{(I_j,P_j)|I_j \in \mathcal I,P_j = f_{pre}(I_j,u)\} P={(Ij,Pj)∣Ij∈I,Pj=fpre(Ij,u)}
这里 P P P表示对的集合;对中的 I j I_j Ij是来自 I \mathcal I I的项; P j P_j Pj对应的初步相关性分数。
(2) 阶段2: 排名(Ranking)
排名阶段专注于通过为预排名子集 S p r e S_{pre} Spre中的每个项打分来完善相关性评估古城。应用排名函数(表示为 f r a n k f_{rank} frank),该函数考虑了每项的特征和用户意图表示 u u u。相关性分数计算如下:
R = { ( S p r e j , R j ) ∣ S p r e j ∈ S p r e , R j = f r a n k ( S p j , u ) } R= \{(S_{pre_j}, R_j) | S_{pre_j} \in S_{pre}, R_j = f_{rank}(S_{p_j}, u)\} R={(Sprej,Rj)∣Sprej∈Spre,Rj=frank(Spj,u)}
这里 R R R也表示对的集合;其中 S p r e j S_{pre_j} Sprej是预排名子集 S p r e S_{pre} Spre中的一项; R j R_j Rj表示对应的相关性分数。
(3) 阶段3: 重新排名(Re-Ranking)
重新排名阶段,虽然是可自主选择的,但在某些情况下可发挥重要作用。比如关键决策情景。该步骤涉及从先前排名的集合 S r a n k S_{rank} Srank中独立出一个子集 S r e S_{re} Sre,并应用重新排名函数( f r e f_{re} fre)。重新排名过程根据每项相关的可信度分数 s k s_k sk调整 S r e S_{re} Sre中的相关性分数。最终输出 O O O基于重新排名子集的相关性分数降序获得。
O = { ( S r e k , O k ) ∣ S r e k ∈ S r e , O k = f r e ( S r e k , s k ) } O = \{(S_{re_k},O_k) | S_{re_k} \in S_{re}, O_k = f_{re}(S_{re_k}, s_k)\} O={(Srek,Ok)∣Srek∈Sre,Ok=fre(Srek,sk)}
O O O是对的集合; S r e k S_{re_k} Srek是重新排名子集 S r e S_{re} Sre中的一项; O k O_k Ok表示经过重新排名后的相关性分数。
排名服务的核心是以高准确性和相关性提供信息。先进的相关性评估算法,比如bge-reranker-base/large,可用于识别与用户查询语义对齐的项目。此外,排名过程中还会仔细考虑事实准确性、全面性和新颖性等因素。
通过优先考虑准确性和相关性,排名服务增强了信息检索过程的清晰度、全面性和效果,从而为用户提供了更有价值和可信赖的体验。
推理服务 推理服务通过并行推理和专家路由来增强推理。利用先进的思维链在大模型之间直线并行推理,生成多样化的结果以供后续聚合。该服务将提示词和检索到的信息作为输入,生成一系列推理输出。通过利用LLM得出结论,并根据所提供的数据回答问题。输出是一组全面的推理响应,全面地解决用户意图。
并发的多步推理喂给聚合阶段,实现一致性检查,像自一致性。还可以应用特定的解码策略,如推测解码(speculative decoding),用于进一步提炼(refinement)。这样可以将推理过程定制到特定领域,提升生成响应的相关性和准确性。
该服务根据问题性质将问题传递给最合适的专家模型。通过同时调用具有不同专家的多个LLM,利用它们的多样性提升问答效果。
聚合服务 将推理输出转换为清晰、以用户为中心的响应。接收一组推理结果,针对用户初始查询指定结构化的回复。
合并推理结果:该服务结合来自并行推理过程的结果,确保连贯性和一致性。采用自一致性检查和类似技术来验证和协调聚合结果。
行业特定优化:为了增强在行业环境中的聚合过程,聚合服务融入几个关键元素:
- 引用和透明度: 通过在行业背景中引用可信任的来源来增强可信度。提供原来数据来源的透明度。此外,推理过程,如思维链和决策步骤,可以展示以提供更深入的见解。
- 定制格式: 通过应用行和标准的格式化技术,如Markdown,来提高可读性。
- 内容安全集成:在安全关键环境中,包含内容安全检查以过滤潜在有害或不当内容。
通过整合这些组件,聚合服务不仅仅是整合推理结果。它提升了最终用户响应的质量、可信度和安全性。
4 排名细节
本节概述了排名过程,和RAG中的Reranker区分开来。
图5:多阶段级联检索和Pistis-RAG框架旨在优化LLMs的信息检索和响应生成。它包括五个阶段:匹配、预排序、排序、推理和聚合。在匹配阶段,检索算法从存储库中选择相关文档。在预排序阶段的语义分析根据查询相关性细化文档分数。排序将文档排序与LLM对连贯响应的偏好对齐。推理增强响应多样性,探索多个序列。聚合阶段合成响应以确保连贯性。Pistis-RAG采用高级技术,如交叉编码器方法和并发思维链生成,以提高性能和响应质量。它是复杂查询和上下文相关响应的综合解决方案。
4.1 RAG的Re-Ranker在预排名阶段
虽然像bge-reranker这样的术语常用于RAG系统中。但像搜索引擎这样的信息检索系统在后续阶段使用重新排名模型来根据特定业务需求对结果进行改进。
而在RAG中,这些模型在预排名阶段起到缩小候选文档的范围。对于这项功能,更准确的术语应该是预排名器(pre-ranker)。
对LLM提示顺序敏感的排名
LLM的表现可能会受到提示显示顺序的严重影响。在RAG系统中,排序起到至关重要的作用。如果不仔细考虑提示示例的顺序,LLM可能生成缺乏连贯性或偏离用户意图的响应。
现有的基于规则的研究,比如那些专注于提示词放置位置的研究,表明将提示示例放在开头或结尾可能更有效。然而,作者认为这种偏好不能单靠规则来确定;相反,它需要一个统计学习模型来准确捕捉这种偏好分布。
RAG系统通过采用排名机制确保最相关和最具信息量的提示示例首先呈现给LLM。排名和提示的理想顺序之间的对齐导致以下结果:
- 提高连贯性: 通过优先考虑相关信息,LLM更有可能生成与用户意图一致的连贯的输出。
- 提升用户体验: 当LLM生成符合用户期望的回应时,整体用户体验得到显著提升。
可以通过解决提示顺序敏感性问题,确保LLM充分发挥其生成信息丰富、连贯且用户中心的输出的潜力。
4.3 排名问题定义
在线系统中的排名问题涉及根据除了相关性之外的各种因素改进呈现给用户的项目顺序。这可以通过利用用户反馈来理解他们对内容的偏好来实现。
用户反馈可以通过诸如复制内容(表明强烈偏好)、重新生成(表明对备选内容有轻微偏好)或不喜欢内容(明确不喜欢)等操作获得。通过分析这些反馈标签,旨在学习一个优化列表项顺序以更好地匹配用户偏好的排名模型。
形式上,将我们的数据集表示为 D \mathcal D D,其中包含一组样本 ( p i , x i , y i , f i ) {(p_i,x_i,y_i,f_i)} (pi,xi,yi,fi),其中:
-
p i p_i pi代表用户的意图。
-
x i x_i xi代表有序的少样本列表。
-
y i y_i yi代表端到端生成的输出。
-
f i f_i fi代表与第i对相关的具体反馈标签(复制、重新生成、不喜欢)。
RAG排名阶段的目标是开发一个利用这些反馈信号优化大型语言模型生成的排名序列的排名模型,最终增强用户对系统的体验和满意度。
4.4 列表级标签
这部分深入探讨了从隐式用户反馈中学习的复杂性,特别是在列表级学习排名( Listwide Learning to Rank,LTR)方法中。我们关注的是在列表中所有项目缺乏明确相关性标签的情况。
主要关注使用源自用户反馈的间接信号,这些信号反映了内容排名对LLM生成结果的影响。这些间接信号被称为列表级标签。
使用列表级标签训练排名模型面临着重大挑战。一个关键问题是可能会忽视对整体排名质量的关键见解。因此,开发有效的策略来利用列表级标签对于提升排名模型性能至关重要。
4.5 排名模型对齐
为了解决在线系统中的排名问题,使用列表级Transformer将列表级LTR目标与列表级目标相结合,其中明确建模了列表的整体质量。
为了有效利用列表级标签,首先收集用户反馈数据,包括复制、再生成、不喜欢等操作,作为评估大型语言模型的内容生成效果的基本事实。
核心排名过程采用先进算法来精确评估每个项目的质量和相关性。这些算法以待排名项目集 I I I作为输入,并基于排名函数 f f f︰
O = f ( I ) O = f(I) O=f(I)
基于列表级信号的学习排序问题生成一个有序集合 O O O。这涉及使用监督学习技术训练排名模型来学习一个排序函数,将大型语言模型生成的内容按照期望的顺序排序。模型包括一系列特征,包括:
- 生成内容与用户意图的语义相似度 sim ( c , intent ) \text{sim}(c,\text{intent}) sim(c,intent)。
- 生成内容与提示的相关性 rel ( c , prompt ) \text{rel}(c,\text{prompt}) rel(c,prompt)。
- 生成内容的新颖性 nov ( c ) \text{nov}(c) nov(c)。
- 用户参与度指标 eng ( c ) \text{eng}(c) eng(c)。
此外,整合了管理用户反馈动态和随时间演变的用户偏好的技术,确保排名模型能够适应并响应用户行为变化。
旨在优化由LLMs生成的内容的排名,与用户偏好和业务目标保持一致,从而增强整体用户体验和实用性。
5. 实验
深入探讨了重要的公共数据集MMLU。主要重点在于从更丰富且反映现实情景的反馈标签中学习。因此,需要模拟反馈标签,以反映各行业观察到的真实用户行为。
5.1 模拟反馈
在线平台,如ChatGPT,通过用户反馈机制(如复制、再生成和不喜欢回复)持续增强其性能。模拟过程旨在使我们的系统与这种普遍情景保持一致。
5.1.1 收集少量样本。在统架构中,将备受好评的用户反馈无缝集成到用于RAG的上下文学习示例数据库中。具体而言,将从公共数据集中获取的精确问答对作为补充ICL示例 D D D进行收录。为了确保公正评估,在检索过程中会过滤掉与问题相同的答案。这种细致的方法建立了一个从外部知识库学习的模拟示例,通过增强的检索数据提升系统的性能。
5.1.2 模拟用户行为。从开源数据集中完善用户行为数据,并通过以下步骤模拟用户反馈:
(1) 利用检索增强生成:系统采用RAG在生成答案之前从庞大数据集 D D D中检索相关信息,以增强响应生成。这个过程,标记为 R A G ( D ) RAG(D) RAG(D),旨在建立检索增强生成的排名方法和生成的响应之间的相关性。
(2) 使用正则表达式提取信息:在生成阶段之后,使用正则表达式从生成的文本 Y Y Y中提取特定信息 X X X。这个操作表示为 P ( Y ) = X P(Y)=X P(Y)=X,其中 P P P表示正则表达式解析函数。
(3) 根据正确性分配标签:最后一步涉及根据生成的输出与期望答案的准确性为生成的输出分配标签。定义了标签函数 L ( y ) L(y) L(y)用于将生成的输出 y y y相对于预期答案进行比较。
这种反馈循环对于持续增强模型的准确性并将其与用户喜好对齐至关重要。以下是标签的说明:
-
正确 ( L ( y ) = Positive L(y) = \text{Positive} L(y)=Positive): 表明生成的输出 y y y 与正确答案集合 Y c o r r e c t Y_{correct} Ycorrect 匹配。
-
不正确( L ( y ) = Even L(y) = \text{Even} L(y)=Even): 表示生成的输出 y y y属于不正确答案集合 Y i n c o r r e c t Y_{incorrect} Yincorrect。
-
无答案( L ( y ) = Negative L(y) = \text{Negative} L(y)=Negative): 代表缺乏答案的输出,并属于非响应集合 Y n o _ a n s w e r Y_{no\_answer} Yno_answer。
这形式化描述了一个连续学习系统,其中来自真实用户互动的反馈精炼和增强了模型,使其输出更紧密地与用户期望和现实应用匹配。具体而言,正确答案 Y c o r r e c t Y_{correct} Ycorrect类似文本复制,不正确答案 Y i n c o r r e c t Y_{incorrect} Yincorrect 类似再生成,而缺乏答案 Y n o _ a n s w e r Y_{no\_answer} Yno_answer 对应于负面用户反馈。
5.2 数据集
在评估Pistis-RAG框架的有效性时,利用提供全面评估其功能的多样数据集至关重要。MMLU为不同领域中框架的适应性和性能提供了洞察。
5.3 实验设定
在MMLU数据集上进行了实验。首先构建了MMLU训练集的索引,然后使用BEG-M3基于Milvus检索出前10个候选few-shot。接着,使用BEG-reranker-larger对候选few-shot进行预排序,得到前五个候选few-shot。最后,使用这五个候选few-shot生成5-shot结果作为基准线。
匹配:使用BEG-M3基于Milvus检索出前10个候选few-shot。
预排序:使用BEG-reranker-larger对候选few-shot进行预排序。BEG-reranker-larger能够改进候选few-shot的排名。
生成:使用前五个候选few-shot生成5-shot结果。使用Llama-2-13B-chat作为生成模型,从few-shot提示中生成文本。
5.3.1 评估过程 使用MMLU测试集来评估模型的性能。计算多个指标来评估模型生成准确回应的有效性:
- Precision: 模型所做的真正例(positive)预测占所有正例预测总数的比率:
P = T P T P + F P P=\frac{TP}{TP + FP} P=TP+FPTP
- Recall: 将真正例预测数量与数据集中实际正例的总数相除:
R = T P T P + F N R= \frac{TP}{TP + FN} R=TP+FNTP
- F1-score Precision和Recal的调和平均值,提供了模型性能的平衡度量:
F 1 = 2 ⋅ P ⋅ R P + R F_1 = 2 \cdot \frac{P \cdot R}{ P +R} F1=2⋅P+RP⋅R
这些指标提供了对模型生成准确和有效端到端结果能力的全面评估。通过精心设计的实验设置,旨在全面评估我们的Pistis-RAG框架在处理多样化的语言理解和生成任务时的有效性和稳健性。
5.3.2 实验结果。我们通过消融研究评估了Pistis-RAG框架内不同组件的有效性。该方法系统地移除或修改关键组件,以评估它们对性能指标的影响,重点放在MMLU数据集上。
5.3.3 分析与讨论。总结在表2中的消融研究结果:
- 反馈标签整合的重要性:排除反馈标签导致显著的F1分数下降,强调了用户反馈在模型改进中的关键作用。
- 多路径推理影响:删除多路径推理导致较低的F1分数,展示了其在增强模型分析能力方面的重要性。
总之,消融研究证实了这些组件在Pistis-RAG框架性能中发挥着关键作用。
5. 结论
本篇工作强调级联建模和优化作为强大的大规模在线人工智能生成内容系统的关键领域。通过以内容为中心的视角重新审视了检索增强生成问题,揭示了大规模部署中潜在的缺陷。
总结
⭐ 作者提出了一个新颖的框架,以内容为中心。该框架包括不同的阶段:匹配、预排名、排名、多路径推理和聚合。其中包含了很多工程细节,值得参考。但没有看到总体耗时相关的描述以及整体代码,可能耗时会相对较长。