Zhengbao Jiang1∗ Frank F. Xu1∗ Luyu Gao1∗ Zhiqing Sun1∗ Qian Liu2
Jane Dwivedi-Yu3 Yiming Yang1 Jamie Callan1 Graham Neubig1
卡内基梅隆大学语言技术研究所;海洋人工智能研究室;FAIR, Meta
EMNLP 2023 main (Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing)
论文地址:Active Retrieval Augmented Generation - ACL Anthology
摘要
尽管大型语言模型(LMs)在理解和生成语言方面具有非凡的能力,但它们往往会产生幻觉,并产生与事实不准确的输出。通过从外部知识资源中检索信息来扩展LMs是一个很有前途的解决方案。大多数现有的检索增强LMs采用检索-生成设置,仅根据输入检索一次信息。然而,在涉及生成长文本的更一般的场景中,这是有限的,在生成过程中不断收集信息是必不可少的。在这项工作中,我们提供了主动检索增强生成的广义视图,这些方法在生成过程中主动决定何时检索和检索什么。我们提出前瞻性主动检索增强生成(FLARE),这是一种通用方法,它迭代地使用对即将到来的句子的预测来预测未来的内容,然后将其用作检索相关文档的查询,以便在句子包含低置信度令牌时重新生成句子。我们在4个长篇知识密集型生成任务/数据集上全面测试了FLARE和基线。FLARE在所有任务上都取得了卓越或有竞争力的表现,证明了我们方法的有效性。
1 引言
生成语言模型(lm) (Brown et al .,2020;欧阳等,2022;OpenAI, 2023;Chowdhery等人,2022;Zhang等,2022;Touvron等,2023;Zhao et al ., 2023)以其卓越的能力成为自然语言处理(NLP)系统的基础组成部分。尽管LMs在训练过程中记忆了一些世界知识(Petroni et al,2019;Roberts et al, 2020;Jiang et al ., 2020),他们仍然倾向于产生幻觉并创造想象的内容(Maynez et al, 2020;Zhou et al, 2021)。使用从外部知识资源中查找相关信息的检索组件来增强LMs是解决幻觉的一个有希望的方向(Khandelwal等人,2020;Izacard et al, 2022)。
检索增强LMs通常使用检索-生成设置,其中它们根据用户的输入检索文档,然后在检索的文档上生成完整的答案条件(Chen等人,2017;Guu et al ., 2020;Lewis et al, 2020;伊扎卡德和格雷夫,2021;Sachan等,2021;Lee et al, 2021;Jiang等,2022;Izacard等人,2022;Nakano et al ., 2021;Qian等,2023;Lazaridou等,2022;Shi et al ., 2023)。这些单次检索增强LMs优于纯参数LMs,特别是对于短格式知识密集型生成任务,如factoid question answer (QA) (Kwiatkowski等人,2019;Joshi等人,2017),其中信息需求在用户的输入中是明确的,并且仅根据输入检索一次相关知识就足够了。
越来越强大的大型LMs也展示了在更复杂的任务中产生长格式输出的能力,比如长格式QA (Fan等人,2019;Stelmakh等人,2022),开放域总结(Cohen等人,2021;Hayashi等,2021;Giorgi et al, 2022)和(思维链;CoT)推理(Wei et al, 2022;Ho et al, 2020;Geva等,2021;Hendrycks et al, 2020)。与短格式生成相比,长格式生成呈现出复杂的信息需求,这些需求并不一定能在单独的输入中显现出来。与人类在创建论文、论文或书籍等内容时逐渐收集信息的方式类似,使用LMs进行长格式生成需要在整个生成过程中收集多个知识片段。例如,要生成关于特定主题的摘要,则根据主题名称进行初始检索(例如,乔·拜登)可能不会涵盖所有方面和细节。在生成过程中根据需要检索额外的信息是至关重要的,例如在生成某个方面(例如,乔·拜登的教育历史)或特定细节(例如,乔·拜登的总统竞选公告日期)时。
在整个生成中多次尝试检索。这些尝试包括被动地使用过去上下文以固定间隔检索额外信息的方法(Khandelwal等人,2020;Borgeaud et al, 2022;Ram等,2023;Trivedi et al, 2022),这可能无法准确反映lm打算在未来生成的内容或在不适当的点检索。多跳QA中的一些工作将完整问题分解为子问题,每个子问题用于检索额外的信息(Press et al, 2022;Yao等,2022;Khot等,2022;Khattab et al, 2022)。
我们提出了以下问题:我们能否创建一个简单而通用的检索增强LM,在整个生成过程中主动决定何时检索和检索什么,并适用于各种长格式的生成任务?我们提供了一种广义的主动检索增广生成的观点。我们关于何时检索的假设是,LMs应该只在缺乏所需知识时检索信息,以避免被动检索增强LMs中出现不必要或不适当的检索(Khandelwal等,2020;Borgeaud et al, 2022;Ram等,2023;Trivedi et al, 2022)。
鉴于观察到大型lm往往是经过良好校准的,低概率/置信度通常表明缺乏知识(Kadavath等人,2022),我们采用了一种主动检索策略,仅在lm生成低概率令牌时进行检索。在决定检索什么时,重要的是要考虑lm将来打算生成什么,因为主动检索的目标是使后代受益。因此,我们建议通过生成一个临时的下一个句子来预测未来,将其用作检索相关文档的查询,然后在检索到的文档上重新生成下一个句子条件。
结合这两个方面,我们提出了前瞻性主动检索增强生成(FLARE),如图1所示。FLARE迭代地生成一个临时的下一个句子,如果它包含低概率令牌,则将其用作检索相关文档的查询,并重新生成下一个句子,直到到达末尾。
图1:前瞻性主动检索增强生成(FLARE)的示意图。从用户输入x和初始检索结果Dx开始,FLARE迭代地生成一个临时的下一个句子(用灰色斜体显示),并检查它是否包含低概率标记(用下划线表示)。如果是(步骤2和3),系统检索相关文档并重新生成句子。
FLARE适用于任何现有的LMs在推理时间,无需额外的培训。考虑到GPT-3.5在各种任务上取得的令人印象深刻的表现(Ouyang等人,2022),我们检查了我们的方法在text-davinci-003上的有效性。我们在4个不同的任务/数据集上评估FLARE,这些任务/数据集涉及生成长输出,包括多跳QA (2WikiMultihopQA)、常识推理(StrategyQA)、长格式QA (ASQA)和开放域摘要(WikiAsp) (Ho等人,2020;Geva等,2021;Stelmakh et al ., 2022;Hayashi et al, 2021)。在所有任务中,与单次和多次检索基线相比,FLARE的性能优于或具有竞争力,证明了我们方法的有效性和可泛化性。
2 检索增强生成
正式定义了单次检索增强生成,提出了主动检索增强生成的框架。
2.1 符号和定义
给定用户输入x和文档语料库(例如所有维基百科文章),检索增强LMs的目标是生成答案y = [, ,…,] = [, ,…,]包含m个句子或n个令牌,利用从语料库检索到的信息。
在检索增强的LM中,LM通常与检索器配对,检索器可以为查询q检索文档列表;用户输入x和检索文档上的LM条件,以生成答案。由于我们专注于检查确定何时检索和检索内容的各种方法,因此我们遵循现有方法(Ram等人,2023;Trivedi等人,2022)在用户输入之前添加检索到的文档,以帮助将来生成基线和我们的公平比较方法:y = LM([, x]),其中[·,·]是按照指定顺序进行串联。
2.2 单次检索增强生成
最常见的选择是直接使用用户输入作为检索的查询,并立即生成完整的答案y = LM([, x])。
2.3 主动检索增强生成
为了帮助长格式生成与检索,我们提出了主动检索增强生成。它是一个通用框架,在生成过程中主动决定检索的时间和内容,导致检索和生成的交错。形式上,在步骤t( t ≥ 1 ),检索查询qt是基于用户输入x和之前生成的输出 = [, … , ]:
其中,qry(·)为查询公式函数。在开始时(t = 1),上一次生成为空(=∅),将用户输入作为初始查询( = x),给定检索到的文档, LMs不断生成答案,直到触发下一次检索或到达终点:
其中,表示当前步骤 t 生成的令牌,LMs的输入是检索到的文档、用户输入x和前一代文档的连接。我们丢弃先前检索到的文档,只使用从当前步骤检索到的文档来约束下一次生成,以防止达到LMs的输入长度限制。
3 FLARE:前瞻性主动检索增强生成
我们的想法是:(1)LMs应该只在没有必要的知识时检索信息,以避免不必要或不适当的检索;(2)检索查询应该反映后面生成内容的意图。提出了两种前瞻性主动检索增强生成(FLARE)方法来实现主动检索增强生成框架。第一种方法提示LM在必要时生成检索查询,同时使用检索鼓励指令(表示为)生成答案。第二种方法直接使用LM的生成作为搜索查询,标记为,它迭代地生成下一个句子以深入了解未来的主题,如果存在不确定的令牌,则检索相关文档以重新生成下一个句子。
3.1 有检索指令的FLARE
受Toolformer (Schick et al ., 2023)的启发,当需要额外的信息时(Schick et al ., 2023),一种直接表达信息检索需求的方式是生成“[Search(query)]”,例如,“加纳国旗上的颜色有以下含义。”红色代表[search(加纳国旗红色的意思)]烈士的鲜血……”在使用GPT-3.5模型时只提供API访问,我们通过几次提示来引发这种行为(Brown et al, 2020)。
具体地说,对于下游任务,我们将与搜索相关的指令和范例作为技能1放在开头,然后将下游任务的指令和范例作为技能2放在后面。给定一个测试用例,我们要求LMs在执行任务时结合技能1和2来生成搜索查询。提示符的结构见提示符3.1,详细信息见提示符D.3。
如图2所示,当LM生成“[Search(query)]”(以灰色斜体显示)时,我们停止生成并使用查询条件来检索相关文档,这些文档在用户输入之前添加,以帮助将来生成,直到生成下一个搜索查询或到达结束。附加的实现细节包含在附录A中。
图2:具有检索指令的前瞻性主动检索增强生成(flaredirective)的示例。它迭代地生成搜索查询(以灰色斜体显示)来检索相关信息,以帮助下一次生成。
3.2 直接的FLARE
由于我们无法对黑盒lm进行微调,因此我们发现通过检索指令生成的查询可能不可靠。因此,我们提出了一种更直接的前瞻性主动检索方法,即使用下一个句子来决定检索的时间和内容。
3.2.1 基于置信度的主动检索(Confidence-based Active Retrieval)
如图1所示,在步骤t中,我们首先生成一个临时的下一个句子 = LM([x, ]),而不依赖于检索到的文档。然后我们决定是否触发检索,并基于制定查询。如果LM对s t有信心,我们接受它而不检索额外的信息;如果没有,我们使用来制定搜索查询qt来检索相关文档,然后重新生成下一个句子。我们使用句子作为迭代基础的原因是由于它们作为语义单位的重要性,不像短语和段落那样太短也不太长。然而,我们的方法也可以使用短语或段落作为基础。
由于LMs往往是经过良好校准的,低概率/置信度往往表明缺乏知识(Jiang等,2021;Kadavath等人,2022;Varshney et al ., 2022),如果的任何标记的概率低于阈值θ∈[0,1],我们将主动触发检索。θ = 0表示不触发检索,而θ = 1则每句触发检索。
其中,查询是基于而制定的。
3.2.2 基于置信度的查询公式
执行检索的一种方法是直接使用下一个句子作为查询。这与使用从LMs中生成的假设标题或段落作为检索查询或证据的方法具有类似的想法(Gao等,2022;Sun等,2022;Yu et al ., 2022;Mao et al ., 2021)。我们将这种技术推广到长格式生成,其中主动信息访问是必不可少的。
我们发现,使用下一个句子进行检索比使用前一个上下文取得了明显更好的结果,如后面6.2小节所示。然而,它有使其中包含的错误永久化的风险。例如,如果LM生成的句子是“Joe Biden出席了University of Pennsylvania,而不是他出席了University of Delaware,那么使用这个错误的句子作为查询可能会检索到错误的信息。我们提出两种简单的方法来克服这个问题,如图3所示。
图3:隐式和显式查询公式。概率低的标记用下划线标记。
隐藏语句作为隐式查询。第一种方法屏蔽掉中概率低于阈值β∈[0,1]的低置信度令牌,其中较高的β导致更积极的屏蔽。这消除了句子中潜在的干扰,提高了检索的准确性。
作为显式查询生成问题。另一种方法是生成针对中的低置信区间的显式问题。例如,如果LM不确定“宾夕法尼亚大学”,那么像“乔·拜登上的是哪所大学?”可以帮助检索相关信息。Self-ask (Press et al, 2022)通过手动将后续问题插入下游任务示例实现了这一点,如稍后提示D.2所示,这需要特定于任务的注释工作。相反,我们开发了一种通用方法,可以在没有额外注释的情况下为低置信度范围生成问题。具体地说,我们首先从中提取概率低于β的所有spanz。对于每个提取的span z,我们提示gpt-3.5-turbo生成一个问题,这个问题可以用span来回答:
我们使用每个生成的问题进行检索,并将返回的文档穿插到单个排名列表中,以帮助下一次的生成。综上所述,基于的查询公式如下:
3.3 实现细节
基础语言模型。我们通过迭代查询最先进的语言模型之一GPT-3.5 text-davinci-003的API来验证我们的方法。
文档语料库和检索器。由于我们关注检索和生成的集成,因此我们使用现成的检索器,它将查询作为输入并返回相关文档的列表。对于主要依赖于维基百科知识的数据集,我们使用Karpukhin等人(2020)的维基百科转储,并使用BM25 (Robertson and Zaragoza, 2009)作为检索器。对于依赖于开放网络知识的数据集,我们使用必应搜索引擎作为检索器。
检索的文档格式。多个检索到的文档根据它们的排名被线性化,然后使用提示符D.1将它们添加到用户输入的开头。其他实现细节,如句子标记化和效率,包含在附录A中。
4 多次检索基线
现有的被动多次检索增强LMs也可以使用我们的框架(第2.3节)来制定。在本节中,我们将根据检索的时间和内容正式介绍三个基线类别。这些基线不是相应论文的精确复制,因为许多设计选择不同,这使得直接比较是不可能的。我们使用相同的设置实现它们,唯一的变化是何时检索和检索什么。
上一个窗口。每个令牌触发一次检索,其中表示窗口大小。从上一个窗口生成的令牌被用作查询:
这一类现有的方法有RETRO (Borgeaud et al ., 2022)、IC-RALM (Ram et al ., 2023)、检索每几个令牌,以及检索每个令牌的KNNLM (Khandelwal等人,2020)我们遵循Ram等人(2023)使用 = 16的窗口大小。
上一个句子。触发检索每句话,并使用前一句作为查询,IRCoT (Trivedi et al, 2022)属于这一类:
问题分解。在生成输出的同时,使用手动注释的任务特定示例来指导LMs生成分解的子问题。例如,self-ask(Press et al, 2022)是这一类的一种方法,它使用Prompt D.2在示例中手动插入子问题。对于测试用例,只要模型生成子问题,就会动态触发检索。
上述方法可以在生成时检索其他信息。然而,它们有明显的缺点:(1)使用以前生成的令牌作为查询可能无法反映LMs将来打算生成的内容。(2)以固定间隔检索信息可能会出现在不合适的点上,因此效率不高。(3)问题分解方法需要特定于任务的提示工程,这限制了它们在新任务中的泛化性。
5 实验装置
我们使用小样本上下文学习评估了FLARE在4种不同知识密集型任务上的有效性(Radford等人,2019;Brown et al, 2020;Liu et al, 2023)。我们遵循之前的工作(Trivedi等人,2022),由于运行实验的成本,从每个数据集中最多抽样500个样本。数据集、指标和设置在附录b的表7中进行了总结。FLARE的超参数是根据开发集选择的,列在表9中。如果没有特别说明,FLARE指的是。
多跳问答。多跳质量保证的目标是通过信息检索和推理来回答复杂的问题。我们使用了包含2跳复合物的2WikiMultihopQA (Ho et al, 2020)来自维基百科文章的问题,需要组合、比较或推理,例如,“为什么Versus的创始人会死?”我们遵循Wang等人(2022)的思路和最终答案。实验设置细节见附录B。
我们使用正则表达式从输出中提取最终答案,并使用精确匹配(EM)、标记级F1、精度和召回率将其与参考答案进行比较。
常识推理。常识推理需要世界和常识知识来生成答案。我们使用的是StrategyQA (Geva等人,2021年),这是一个众包yes/no问题的集合,例如,“梨子会沉在水里吗?”我们遵循Wei等人(2022)来生成思维链和最终的是/否答案。详情见附录B。我们提取最终答案,并使用精确匹配将其与黄金答案进行匹配。
长文本问答。长篇QA旨在为寻求复杂信息的问题生成全面的答案(Fan et al, 2019;Stelmakh et al ., 2022)。我们使用ASQA (Stelmakh等人,2022)作为我们的测试平台,其中输入是具有多种解释的模糊问题,输出应该涵盖所有这些问题。例如,“费城老鹰队在哪里打主场比赛?”,可以询问城市、体育中心或体育场的情况。
我们发现,在许多情况下,甚至对人类来说,确定问题的哪个方面是模糊的也是一项挑战。因此,我们创建了另一个设置(ASQA-hint),在其中我们提供了一个简短的提示,以指导LMs在生成答案时保持正确。上述情况的提示是“这个问题在提及具体地点或地点方面是模棱两可的。”实验设置细节见附录B。
我们使用了Stelmakh等人(2022)的指标,包括EM、基于roberta的QA评分(DisambigF1)、ROUGE (Lin, 2004),以及DisambigF1和ROUGE (DR)的综合评分。
开放域摘要。开放域摘要的目标是通过从开放网络收集信息来生成关于主题的综合摘要(Giorgi et al, 2022)。我们使用WikiAsp (Hayashi等人,2021),它旨在生成关于维基百科中20个领域的实体的基于方面的摘要,例如,“生成关于Echo School (Oregon)的摘要,包括以下几个方面:学术、历史。”实验设置细节见附录B。
度量指标包括ROUGE,称为基于实体的F1,以及UniEval (Zhong et al, 2022),用于测量事实一致性。
6 实验结果
我们首先报告4个任务/数据集的总体结果,并将FLARE的性能与第4节中介绍的所有基线进行比较。然后,我们进行了消融实验,以研究我们的方法的不同设计选择的有效性。
6.1 与基线对比
总体的结果。图4报告了FLARE的总体性能和所有任务/数据集的基线。FLARE在所有任务/数据集上的表现都优于所有基线,这表明FLARE是一种通用方法,可以在整个生成过程中有效地检索额外信息。
在各种任务中,多跳QA表现出最显著的改进。这主要是由于任务的明确定义和通过两跳推理过程生成最终答案的具体目标,这使得LMs更容易生成与主题相关的输出。相比之下,ASQA和WikiAsp更加开放,这增加了生成和评估的难度。ASQA-hint的改进比ASQA更大,因为在许多情况下,即使对人类来说,识别模棱两可的方面也是具有挑战性的,而提供通用提示有助于LMs保持主题。
图4:在所有任务/数据集上FLARE和基线之间的比较。我们报告了每个数据集的主要度量:EM用于2WikiMultihopQA, StrategyQA和ASQA, UniEval用于WikiAsp。
与基线进行全面比较。表1报告了2wikimmultihopqa上所有基线的性能。FLARE的性能大大优于所有基线,这证实了前瞻性主动检索是非常有效的。大多数多时间检索增强方法都优于单时间检索方法,但存在一些差异。使用前一句检索的改进相对较小,我们假设这主要是因为在2WikiMultihopQA中,前一句经常描述与下一句不同的实体或关系。而前一窗口方法可能会使用句子的前半部分来检索可能有助于生成后半部分的信息。
在所有基线中,问题分解方法(Press et al, 2022)的性能最好。这并不奇怪,因为在上下文范例中手工标注了分解的子问题(提示D.2),引导LMs生成与后代主题/意图一致的子问题。FLARE优于这个基线,这表明对于有效的未来感知检索来说,手动范例注释是不必要的。flaredirective和问题分解之间的差距很大,这表明教LMs使用任务通用检索指令和示例生成搜索查询是具有挑战性的。
表1:2WikiMultihopQA上的FLARE和基线。为了进行公平的比较,重新实施了前一个窗口(Borgeud等人,2022;Ram等人,2023)、前一句(Trivedi等人,2022)和问题分解(Press等人,2022,Yao et al,2022)方法。
我们在表2中报告了其他数据集的所有指标。FLARE在所有指标方面都优于基线。基于前一个窗口检索在ADQA上的表现优于单次检索我们假设这是因为之前的窗口不能准确反映未来的意图。由于我们专注于评估事实性,因此强调事实内容的指标(如EM、Disambig-F1、UniEval)比针对所有代币计算的指标(ROUGE-L)更可靠。
6.2 消融实验
前瞻性检索的重要性。我们首先验证了前瞻性检索比过去基于上下文的检索更有效。我们在2WikiMultihopQA和ASQA提示上进行消融实验,比较使用前一句和下一句的检索。具体来说,这两种方法都检索每一句话,并直接使用完整的前一句/下一句作为查询。如表3所示,使用下一个句子进行检索显然比使用前一个句子要好,这证实了我们的假设。
表3:使用前一句和下一句进行检索之间的端对端比较
我们还使用不同数量的过去令牌作为查询来运行以前的窗口方法。如表4所示,在过去使用太多令牌(>32)会降低性能,进一步证实了我们的假设,即先前的背景可能与后面的生成的意图无关。
主动检索的重要性。接下来,我们研究主动检索阈值θ如何影响性能。为了将我们的方法从不检索改为检索每一句话,我们将确定何时触发检索的置信阈值θ从0调整为1。然后,我们计算激活检索的步骤/句子的比例,并在此基础上呈现性能。如图5所示,在2WikiMultihopQA上,当检索百分比超过60%时,性能会趋于平稳,这表明当LMs确信时的检索是不必要的。在StrategyQA上,当检索百分比超过50%时,性能会下降,这表明不必要的检索会引入噪声并阻碍原始生成过程。我们发现,触发40%-80%的句子检索通常会在任务/数据集中获得良好的性能。
不同查询公式化方法的有效性我们研究了通过掩蔽的隐式查询形成和通过问题生成的显式查询公式化。在表5中,我们比较了具有不同屏蔽的FLARE的性能阈值β。直接用完整的句子(β=0)检索比用低概率屏蔽标记更糟糕,这证实了我们的假设,即低置信度的错误标记会分散检索者的注意力。我们在表6中比较了隐式和显式查询公式化方法。两种方法的性能相似,表明两种方法都能有效地反映信息需求。
7 相关工作
我们参考了第2.2小节和第4节,对单次和多次检索增强的LMs进行了广泛的讨论,这是本文最相关的领域。
迭代和自适应检索迭代检索和精化已在文本和代码生成任务中进行了研究(Peng et al,2023;张等人,2023年;Zemlyanskiy等人,2022;Yu等人,2024)。FLARE与这些方法的不同之处在于生成和检索策略的粒度。自适应检索已经在基于问题流行度或生成概率的单次检索场景中进行了研究(Mallen等人,2022;李等人,2023),而我们专注于需要主动信息访问的长形式生成。
浏览器增强的LMs WebGPT(Nakano等人,2021)和WebCPM(Qin等人,2023)训练LMs与浏览器交互,以使用强化学习或监督训练来增强真实性,其中可以在生成之前触发多个查询。FLARE构建在基于文本的检索器上,但可以与浏览器相结合,从而潜在地提高检索质量。
8 结论
为了通过检索增强来帮助长表单生成,我们提出了一个主动检索增强生成框架,该框架决定在生成过程中何时检索以及检索什么。我们通过前瞻性主动检索实现了这个框架,如果即将到来的句子包含低置信度标记并重新生成下一个句子,则该框架会迭代使用即将到来的语句来检索相关信息。在4个任务/数据集上的实验结果证明了我们的方法的有效性。未来的方向包括更好的主动检索策略和开发有效的主动信息集成LM架构。
9 局限
我们还对Wizard of Wikipedia(Dinan et al,2019)和ELI5(Fan et al.,2019)进行了实验,发现FLARE并没有提供显著的收益。维基百科向导是一个知识密集型对话生成数据集,其输出相对较短(平均约20个标记),因此可能不需要检索多条不同的信息。ELI5(Fan等人,2019)是一个长格式的QA数据集,需要对开放式问题进行深入回答。由于Krishna等人(2021)中提到的问题,如检索和评估中的接地生成困难,单次检索和FLARE都没有比不使用检索带来显著的收益。
从工程的角度来看,使用简单的实现来交错生成和检索会增加开销和生成成本。LM需要被激活多次(每次检索一次),并且无缓存实现还需要在每次检索后重新计算之前的激活。通过独立地对检索到的文档和输入/生成(x/)进行编码的特殊架构设计,可以潜在地缓解这个问题。