学术交流 | 大模型检索增强生成综述

文摘   2024-11-12 17:30   广东  


大语言模型(Large Language Models, LLMs)拥有很强的基础综合能力,但也面临着诸如幻觉、知识过时以及推理过程不透明和不可追溯等挑战。检索增强生成(Retrieval-Augmented Generation, RAG)通过整合外部数据库中的知识,可以提高生成内容的准确性和可信度,适用于知识密集型任务,并允许持续更新知识和整合领域特定的信息。



一、RAG发展历程

在大模型时代,RAG的发展轨迹展示了几个明显的阶段特征。最初,RAG的诞生与Transformer架构的兴起同步,旨在通过向预训练模型(Pre-Training Models,PTM)引入额外知识来增强语言模型,这个早期阶段的特点是旨在改进预训练技术。随后,ChatGPT的出现标志着一个关键时刻——LLM展示了强大的上下文学习(in-context learning,ICL)能力,RAG研究从此转向在推理阶段为LLMs提供更好的信息源,以回答更复杂和知识密集型的任务。随着研究的进展,RAG的增强不再仅限于推理阶段,而是开始更多地结合LLM的微调技术。


二、RAG与其他方法的对比

在LLMs优化推理结果的方法中,RAG经常被用来与微调(finetune)和提示工程(prompt engineering)进行比较。如上图所示,每种方法都有其独特的特点。


在考虑具体使用哪种方法时,应首先确定其外部知识需求和模型适应需求的相对量级。prompt engineering利用模型的固有能力,对外部知识和模型适应的需求最小。RAG可以比作为信息检索提供一个量身定制的教科书,非常适合精确的信息检索任务。Finetune类似于学生随时间内化知识,适用于需要特定结构、风格或格式的场景。


RAG在动态环境中表现出色,可实时更新知识和有效利用外部知识源,具有高解释性。然而,它带来了更高的延迟和关于数据检索的难点。另一方面,finetune更为静态,需要重新训练以进行更新,能够深度定制模型的行为和风格。它需要大量的计算资源来准备数据集和训练,虽然可以减少幻觉,但可能在面对不熟悉的数据时遇到挑战。在对不同主题的各种知识密集型任务进行多次性能评估中,无论是在训练期间遇到的现有知识还是完全新的知识,[1]显示虽然无监督微调显示出一些改进,但RAG始终表现更好。此外,LLMs通过无监督微调学习新的事实信息存在困难。在应用环境中,选择RAG还是finetune取决于对数据动态性、定制化和计算能力的具体需求。RAG和finetune并不是相互排斥的,它们可以相辅相成,提升模型在不同层面的能力。在某些情况下,它们的联合使用才可能导致最佳性能。涉及RAG和finetune的优化过程可能需要多次迭代才能达到令人满意的结果。


三、RAG的发展

RAG总览


上图是一个典型的RAG案例。在这个例子中,用户向ChatGPT提出一个近期的新闻问题。由于ChatGPT缺乏对应的预训练数据,它无法提供关于这个问题的有效回答。RAG通过从外部数据库中获取和整合知识来弥补这一信息差距。在这种情况下,它收集了与用户query相关的新闻文章。这些文章与原始问题结合,形成一个综合的prompt,使LLMs能够生成一个信息丰富的答案。


RAG研究范式不断演变,可将其分为3个阶段:Naive RAG、Advanced RAG和Modular RAG,如下图所示。



Naive RAG

Naive RAG研究范式代表了RAG最早的方法论,Naive RAG遵循传统的流程,包括索引(indexing)、检索(retrieval)和生成(generation),这也被称为“检索-阅读(Retrieve-Read)”框架。


Indexing:此阶段从清理和提取各种格式的原始数据开始(如PDF、HTML、Word和Markdown),然后将其转换为统一的纯文本格式。为了适应语言模型的上下文限制,文本被分割成较小的、易于处理的块(chunks)。这些块通过embedding model编码为向量表示,并存储在向量数据库(vector database)中。这一步对于在后续的retrieve阶段实现高效的相似性搜索至关重要。

Retrieval:在收到用户的query后,RAG系统使用与indexing阶段相同的embedding model将query转换为向量表示。然后计算query向量与索引语料库中块的向量之间的相似度分数。系统优先选择并retrieve与query最相似的前K个块,这些块用作prompt中的扩展上下文。

Generation:提出的query和选定的文档被合并成为一个连贯的prompt,大语言模型负责生成响应。模型的回答方法可能因任务特定标准而异,允许它或是依赖其内在的参数知识,或是将其回答限制在提供的文档信息内。在进行对话时,任何现有的对话历史都可以整合到提示中,使模型能够有效地进行多轮对话互动。


然而,Naive RAG也有一些难点。


Retrieval Challenges:此阶段常常在精度(precision)和召回率(recall)上挣扎,导致选择了不匹配或不相关的块,并可能遗漏关键信息。

Generation Difficulties:在生成响应时,模型可能会面临幻觉问题,即生成的内容不受检索上下文支持。这个阶段还可能出现不相关、含有偏见的输出,影响生成的质量和可靠性。

Augmentation Hurdles:将检索到的信息整合可能具有挑战性,有时会导致输出不连贯或不一致。当从多个来源检索到相似信息时,可能还会遇到冗余问题,导致生成的回复中出现重复的内容。确定各种段落的重要性和相关性并确保风格和语调的一致性进一步增加了RAG的复杂性。面对复杂问题,基于原始query的单次检索可能不足以获取足够的上下文信息。此外,还存在生成模型可能过度依赖增强信息的担忧,导致输出仅仅重复检索到的内容,而没有增加有见地或综合的信息。


Advanced RAG

Advanced RAG引入了特定的改进,以克服Naive RAG的局限性。通过采用Pre-retrieval和Post-retrieval策略,重点提升检索质量。为了解决indexing问题,Advanced RAG通过使用滑动窗口方法(sliding window approach)、细粒度分割(fine-grained segmentation)和元数据的整合(incorporation of metadata)来优化其indexing技术。此外,它还结合了多种优化方法以简化retrieval过程。


Pre-retrieval:在这个阶段,主要关注优化indexing structure和original query。优化indexing的目标是提高被indexed内容的质量。往往涉及以下策略:增强数据粒度、优化索引结构、添加元数据、对齐优化和混合检索。而query优化的目标是使用户的原始query更清晰、更适合retrieval任务。常见的方法包括query重写、query转换、query扩展等技术。具体的内容可在本文的第四部分做阅读。

Post-retrieval:一旦retrieval到相关的上下文,关键是如何有效地将其与query整合。Post-retrieval中的主要方法包括重新排序块(rerank chunks)和上下文压缩(context compressing)。重新排序retrieval到的信息,将最相关的内容重新定位到提示的边缘。这一概念已在LlamaIndex2、LangChain3和HayStack等框架中实现。直接将所有相关文档输入LLMs可能导致信息过载,关键细节会被不相关的内容稀释。为了解决这个问题,Post-retrieval聚焦于选择必要的信息、强调关键部分和缩短需要处理的上下文。


通过这些改进,Advanced RAG在检索和生成阶段都显著提升了性能,减少了幻觉和不相关内容的生成,提高了响应的质量和可靠性。


Modular RAG

Modular RAG架构超越了前两种RAG范式,提供了更强的可适应性和多功能性。它通过添加搜索模块进行相似性搜索和通过微调优化retriever等多种策略来改进其组件。且为了解决特定挑战,引入了重构的RAG模块和重新排列的RAG流程。


New Modules

  • Search module:适应特定场景,允许通过LLM生成的代码和query直接搜索各种数据源,如搜索引擎、数据库和知识图谱。

  • RAG-Fusion:通过采用multi-queries策略扩展用户query,利用并行向量搜索和智能重新排序来发现知识,解决传统搜索的局限性。

  • Memory module:利用LLM的记忆来指导retrieval,通过迭代自我增强创建一个与数据分布更紧密对齐的无限记忆池。

  • Routing module:在RAG系统中导航不同的数据源,为query选择最佳路径,无论是涉及摘要、特定数据库搜索还是合并不同的信息流。

  • Predict module:直接通过LLM生成上下文来减少冗余和噪音,确保相关性和准确性。

  • Task Adapter module:根据各种下游任务定制RAG,自动实现零样本输入的prompt retrieval,并通过少样本query生成创建任务特定的retriever。

这些综合方法不仅简化了retrieve过程,还显著提高了retrieve信息的质量和相关性,能够以更高的精度和灵活性满足各种任务和query的需求。


New Patterns

Modular RAG允许替换或者重新配置module,比Naive RAG和Advanced RAG的固定结构更加灵活。此外,Modular RAG通过集成新模块或调整现有模块之间的交互流程,还可进一步提高其灵活性,增强其在不同任务中的可适用性。

  • Rewrite-Retrieve-Read model:利用LLM的能力,通过Rewrite module和LM-feedback机制来优化retrieval queries,提高任务性能。

  • Generate-Read:用LLM生成的内容替代传统检索。

  • Recite-Read:强调从模型权重中retrieval,增强模型处理知识密集型任务的能力。

  • Hybrid retrieval strategies:集成keyword, semantic, vector searches,以满足多样化的query需求。

  • sub-queries和hypothetical document embeddings(HyDE):通过关注生成答案和真实文档之间的embedding相似性来提高retrieval相关性。

  • Adjustments in module arrangement and interaction:如Demonstrate-Search-Predict(DSP)框架和ITERRETGEN的iterative Retrieve-Read-Retrieve-Read流程,展示了模块输出的动态使用可以增强另一个模块的功能。

  • The flexible orchestration of Modular RAG Flow:例如FLARE和Self-RAG等技术实现自适应检索,这种方法超越了固定的RAG检索过程,通过评估不同场景下的检索必要性来优化流程。灵活架构的另一个好处是RAG系统可以更容易地与其他技术(如微调或强化学习)集成。例如微调retriever以获得更好的检索结果,微调generator以获得更个性化的输出,或进行协作微调。


四、Retrieval

在RAG(检索增强生成)上下文中,高效地从数据源中检索相关文档至关重要。涉及的几个关键问题包括:检索源、检索粒度、检索的预处理以及相应嵌入模型的选择。


Retrieval source

检索数据的粒度:理论上,粗粒度的检索单元可以为问题提供更多相关信息,但它们也可能包含冗余内容,这可能会在下游任务中分散retriever和语言模型的注意力。细粒度的检索单元增加了检索的负担,并且不能保证语义完整性和满足所需知识。在推理过程中选择适当的检索粒度,可以作为一种简单而有效的策略来提高retriever的检索和下游任务性能。

在文本中,检索粒度从细到粗包括:Token(词元)、Phrase(短语)、Sentence(句子)、Proposition(命题)、Chunks(块)、Document(文档)。


DenseX提出了使用命题作为检索单元的概念。命题被定义为文本中的原子表达式,每个命题封装了一个独特的事实片段,并以简洁、自成一体的自然语言格式呈现。这种方法旨在提高检索的精确性和相关性。


在知识图谱(KG)中,检索粒度包括:Entity(实体)、Triplet(三元组)和sub-Graph(子图)。检索粒度也可以适应下游任务,例如在推荐任务中检索Item IDs(项目ID)和Sentence pairs(句子对)。


Indexing Optimization

在indexing阶段,文档将被处理、分割并转换为嵌入向量,存储在向量数据库中。indexing构建的质量决定了在检索阶段是否能获得正确的上下文。


  • Chunking Strategy:最常见的方法是将文档按固定数量的词元(如100、256、512)分割成块。较大的块可以捕捉更多的上下文,但也会产生更多的噪音,需要更长的处理时间和更高的成本。而较小的块可能无法完全传达必要的上下文,但噪音较少。同时分块会导致句子内的截断,因此需采用递归分割和滑动窗口方法,通过合并多个检索过程中的全局相关信息实现分层检索。然而,这些方法仍然无法在语义完整性和上下文长度之间取得平衡。因此,提出了如Small2Big[2]的方法,其中句子(小)被用作检索单元,并将前后句子作为(大)上下文提供给LLM。

  • Metadata Attachments:块可以通过添加元数据信息(如页码、文件名、作者、类别时间戳)丰富其信息量。随后,可以基于这些元数据进行检索过滤,限制检索范围。在检索过程中为文档时间戳分配不同的权重,可以实现时间感知的RAG,确保知识的新鲜度,避免过时信息。除了从原始文档中提取元数据外,还可以人工构建元数据。例如可以添加段落摘要以及引入假设问题。这种方法也被称为Reverse HyDE。具体来说,使用LLM生成文档可以回答的问题,然后在检索过程中计算原始问题与假设问题之间的相似性,以减少问题与答案之间的语义差距。

  • Structural Index:增强信息检索的一个有效方法是为文档建立层次结构。通过构建层次结构,RAG系统可以加快相关数据的检索和处理。

  • Hierarchical index structure:文件按父子关系排列,块与之关联。每个节点存储数据摘要,帮助快速遍历数据,并协助RAG系统确定要提取的块。这种方法还可以减轻块提取问题引起的错觉。

  • Knowledge Graph index:利用KG构建文档的层次结构有助于保持一致性。它通过描绘不同概念和实体之间的连接,显著减少幻觉的可能性。而其另一个优势是可以将信息检索过程转化为LLM可以理解的指令,从而提高知识检索的准确性,使LLM能够生成上下文连贯的响应,从而提高RAG系统的整体效率。为了捕捉文档内容和结构之间的逻辑关系,KGP提出了一种使用KG在多个文档之间建立索引的方法。这个KG由节点(代表文档中的段落或结构,如页面和表格)和边(表示段落之间的语义/词汇相似性或文档结构内的关系)组成,有效解决了多文档环境中的知识检索和推理问题。


Query Optimization

Naive RAG的主要挑战之一是直接依赖用户的原始query作为检索的基础。提出一个精确且清晰的问题是困难的,不准确的query会导致检索效果不佳。有时,问题本身就很复杂,语言组织也不够清晰。另一个困难在于语言复杂性和歧义。语言模型在处理专业词汇或具有多重含义的模糊缩写时常常会遇到困难。例如,它们可能无法辨别“LLM”是指大型语言模型还是在法律背景下的法学硕士。



Query Expansion

将单一query扩展为多个queries可以丰富query的内容,提供更多的上下文以解决缺乏特定细微差别的难题,从而确保生成答案的最佳相关性。


  • Multi-Query:通过使用提示工程来通过LLM扩展query,这些query可以并行执行。query的扩展不是随机的,而是经过精心设计的。

  • Sub-Query:子问题规划过程则为生成必要的子问题,在于原始问题结合时有助于提供上下文并且让LLMs更全面地回答。这个添加相关上下文的过程在原则上类似于Query Expansion。具体来说,可以使用从简单到复杂的提示方法将复杂问题分解为一系列更简单的子问题。

  • Chain-of-Verification (CoVe):Expanded queries通过LLM进行验证,以达到减少幻觉的效果。经过验证的expanded queries通常表现出更高的可靠性。


Query Transformation

核心概念是基于转换后的query而不是用户的原始query来检索块。

  • Query Rewrite:原始query并不总是适合LLM检索,尤其是在现实场景中。因此,我们可以提示LLM重写query。除了使用LLM进行Query Rewrite外,还可以使用专门的小型语言模型,如RRR(Rewrite-retrieve-read)。在淘宝中实施的Query Rewrite方法,称为BEQUE,显著提高了长尾query的召回效果,导致GMV(商品交易总额)上升。另一种query transformation方法是使用提示工程让LLM基于原始query生成一个query以进行后续检索。HyDE构建假设文档(假设为原始query的答案)。它关注的是从答案到答案的嵌入相似性,而不是为问题或query寻找嵌入相似性。使用Step-back Prompting方法,原始query被抽象为一个高层次的概念问题(step-back question)。在RAG系统中,step-back question和原始query都用于检索,并且两者的结果都作为语言模型生成答案的基础。


Query Routing

基于不同的query,路由到不同的RAG流程,适用于多种场景的多功能RAG系统。


  • Metadata Router/ Filter:第一步是从query中提取关键词(entity),然后根据关键词和块内的元数据进行过滤,以缩小搜索范围。

  • Semantic Router:另一种路由方法是利用query的语义信息[3]。当然,也可以采用混合路由方法,结合语义和基于元数据的方法以增强query routing。


Embedding

在RAG中,检索是通过计算问题和文档块的嵌入之间的相似性(例如余弦相似性)来实现的,其中嵌入模型的语义表示能力起着关键作用。这主要包括稀疏编码器(例如BM25)和密集retriever(例如基于BERT架构的预训练语言模型)。最近的研究引入了诸如AngIE、Voyage、BGE等嵌入模型,这些模型受益于多任务指令调优。Hugging Face的MTEB排行榜[4]评估了嵌入模型在多语言多任务中的表现。对于“使用哪个嵌入模型”并没有一个放之四海而皆准的答案。


  • Mix/hybrid Retrieval:稀疏和密集嵌入方法捕捉不同的相关性特征,并可以通过利用互补的相关信息而相互受益。例如,稀疏检索模型可以用于为训练密集检索模型提供初步搜索结果。此外,稀疏检索模型可以增强密集检索模型的零样本检索能力,并帮助密集retriever处理包含稀少实体的query,从而提高鲁棒性。

  • Fine-tuning Embedding Model:在上下文显著偏离预训练语料库的情况下,特别是在医疗、法律实践等充满专有术语的高度专业化领域,微调嵌入模型以适应自己的领域数据集变得至关重要。除了补充领域知识,微调的另一个目的是对齐retriever和generator,例如,使用LLM的结果作为微调的监督信号,称为LSR(LM-supervised Retriever)。

    PROMPTAGATOR利用LLM作为少样本query generator来创建特定任务的retriever,解决了数据稀缺的领域中监督微调的挑战。

另一种方法LLM-Embedder,利用LLM在多个下游任务中生成奖励信号。retriever通过两种类型的监督信号进行微调:数据集的硬标签和来自LLM的软奖励。这种双信号方法促进了更有效的微调过程,使嵌入模型适应多样化的下游应用。


REPLUG利用retriever和LLM计算检索文档的概率分布,然后通过计算KL散度进行监督训练。这种简单而有效的训练方法通过使用LM作为监督信号来增强检索模型的性能,消除了对特定交叉注意机制的需求。

此外,受RLHF(Reinforcement Learning from Human Feedback)的启发,利用基于LM的反馈通过强化学习来强化retriever。


Adapter

为了优化LLM的多任务能力,UPRISE训练了一个轻量级的提示retriever,可以自动从预构建的prompt池中检索适合给定零样本任务输入的prompt。


AAR(Augmentation-Adapted Retriever)通过引入一个通用adapter适应多个下游任务。


PRCA则添加了一个可插拔的奖励驱动上下文adapter,以增强特定任务的性能。


BGM保持retriever和LLM固定,并在两者之间训练一个桥接Seq2Seq模型。此桥接模型旨在将检索到的信息转换为LLM可以有效处理的格式,使其不仅可以重新排序,还可以为每个query动态选择段落,并可能采用更高级的策略,如重复。


PKG引入了一种通过指令微调将知识集成到白盒模型中的创新方法。在这种方法中,检索模块被直接替换,以根据query生成相关文档。这种方法有助于解决微调过程中遇到的困难,并提高模型性能。


五、Generation


在检索之后,直接将所有检索到的信息输入LLM来回答问题并不一定是一个好做法。以下将从两个角度介绍调整方法:调整检索内容和调整LLM。


context curation

冗余信息会干扰LLM的最终生成,过长的上下文也会导致LLM出现“lost in middle”问题。像人类一样,LLM倾向于只关注长文本的开头和结尾,而忘记中间部分。因此,在RAG系统中,我们通常需要进一步处理检索到的内容。


Reranking:重新排序从根本上重新排列文档块,以突出最相关的结果,有效减少整体文档池,起到信息检索中既作为增强器又作为过滤器的双重作用,提供精炼的输入以便更精确的语言模型处理。重新排序可以使用基于规则的方法,这些方法依赖于预定义的指标,如多样性、相关性和MRR,或者使用基于模型的方法,如BERT系列的编码器-解码器模型(例如SpanBERT)、专门的重新排序模型如Cohere rerank或bge-raranker-large,以及通用的大型语言模型如GPT。


Context Selection/Compression:在RAG过程中,一个常见的误解是认为检索尽可能多的相关文档并将它们连接起来形成一个长的检索提示是有益的。然而,过多的上下文会引入更多噪音,降低LLM对关键信息的感知。


LLMLingua利用小型语言模型(SLMs),如GPT-2 Small或LLaMA-7B,来检测和删除不重要的标记,将其转化为一种人类难以理解但LLM能够很好理解的形式。这种方法提供了一种直接且实用的提示压缩方法,消除了对LLM进行额外训练的需求,同时平衡了语言完整性和压缩比。


PRCA通过训练一个信息提取器来解决这个问题。


类似地,RECOMP采用了类似的方法,通过对比学习训练一个信息压缩器。每个训练数据点包括一个正样本和五个负样本,编码器在整个过程中使用对比损失进行训练。


除了压缩上下文,减少文档数量也有助于提高模型答案的准确性。Ma等人提出了“Filter-Reranker”范式,结合了LLMs和SLMs的优势。在这种范式中,SLMs作为过滤器,而LLMs则主要负责重新排序。此研究表明,LLMs重新排列由SLMs识别的具有挑战性的样本这一步骤可以显著改善各种信息提取(IE)任务的表现。

另一种简单且有效的方法是让LLM在生成最终答案之前评估检索到的内容。这使得LLM能够通过自我批评过滤掉相关性较差的文档。例如,在Chatlaw中,LLM被提示对引用的法律条款进行自我建议,以评估其相关性。

LLM Fine-tuning


基于场景和数据特征对LLM进行有针对性的微调可以产生更好的效果。这也是使用本地部署LLM的最大优势之一。微调的另一个好处是能够调整模型的输入和输出。例如,它可以使LLM适应特定的数据格式,并按照指示生成特定风格的响应。


对于处理结构化数据的检索任务,SANTA框架通过三部分训练方案有效地捕捉结构和语义细微差别。初始阶段侧重于retriever,利用对比学习来优化查询和文档嵌入。


通过强化学习将LLM的输出与人类或retriever的偏好对齐也是一种方法。例如,手动注释最终生成的答案,然后通过强化学习提供反馈。除了与人类偏好对齐外,还可以与微调后的模型和retriever的偏好对齐。

LLM的微调也可以与retriever的微调协同进行,以对齐偏好。一个典型的方法,如RA-DIT,通过KL散度对齐retriever和generator之间的评分函数。


六、Augmentation

在RAG领域,标准做法通常包括一次性检索步骤,然后进行生成。这种方法可能导致效率低下,并且其提供的信息对于需要多步骤推理的复杂问题通常是不足的。许多研究针对这一问题优化了检索过程,如下图所示。



Iterative Retrieval

Iterative retrieval是一种基于初始query和迄今为止生成的文本反复搜索知识库的过程,为LLM提供更全面的知识库。这种方法通过多次检索迭代提供额外的上下文参考,已被证明可以增强后续答案生成的鲁棒性。然而,它可能受到语义不连续性和无关信息积累的影响。ITERRETGEN采用了一种协同方法,将“retrieval-enhanced generation”和“generation-enhanced retrieval”结合起来,用于需要再现特定信息的任务。该方法利用解决输入任务所需的内容作为检索相关知识的上下文基础,从而在后续迭代中促进生成答案质量的提升。


Recursive Retrieval

Recursive retrieval常用于信息检索和自然语言处理,以提高搜索结果的深度和相关性。该过程涉及基于先前搜索结果反复优化搜索查询。递归检索旨在通过反馈循环逐步收敛到最相关的信息,从而增强搜索体验。


IRCoT使用链式思维(chain-of-thought)来指导检索过程,并通过获得的检索结果优化链式思维。


ToC创建了一个clarification tree,系统地优化查询中的模糊部分。这在用户需求从一开始就不完全明确或所需信息高度专业化或细微的复杂搜索场景中特别有用。递归过程的性质允许对用户需求进行持续学习和适应,通常会导致对搜索结果的满意度提高。


为了解决特定数据场景,递归检索和多跳检索技术(multi-hop retrieval)一起使用。递归检索涉及使用结构化索引以分层方式处理和检索数据,这可能包括在执行基于摘要的检索之前总结文档或长PDF的部分内容。随后,在文档内进行二次检索以优化搜索,体现了递归过程的性质。多跳检索则旨在深入挖掘图结构数据源,提取相互关联的信息。


Adaptive Retrieval

Adaptive retrieval,例如Flare和Self-RAG,通过使LLM能够自主确定检索的最佳时机和内容。


Graph-Toolformer将其检索过程分为不同步骤,LLM主动使用retriever,应用Self-Ask技术,并使用少样本提示来启动搜索查询。这种主动姿态使LLM能够决定何时搜索必要的信息,类似于agent使用工具的方式。


WebGPT集成了一个强化学习框架,以训练GPT-3模型在文本生成过程中自主使用搜索引擎。它通过使用特殊标记来导航这一过程,这些标记促进了搜索引擎查询、浏览结果和引用参考文献等操作,从而通过使用外部搜索引擎扩展了GPT-3的能力。


Flare通过监控生成过程的置信度(由生成词的概率指示)来自动化检索时机。当概率低于某个阈值时,激活检索系统以收集相关信息,从而优化检索周期。


Self-RAG引入了“反思标记”,允许模型反思其输出。这些标记有两种类型:“retrieve”和“critic”。模型自主决定何时激活检索,或者预定义的阈值可能触发这一过程。在检索过程中,generator在多个段落中进行片段级别的束搜索,以得出最连贯的序列。批评分数用于更新细分分数,并在推理过程中灵活调整这些权重,从而定制模型的行为。Self-RAG的设计消除了对额外分类器或自然语言推理(NLI)模型的需求,简化了启动检索机制的决策过程,并提高了模型在生成准确响应方面的自主判断能力。


七、参考文献


[1]O. Ovadia, M. Brief, M. Mishaeli, and O. Elisha, “Fine-tuning or retrieval? comparing knowledge injection in llms,” arXiv preprint arXiv:2312.05934, 2023.

[2]Advanced RAG 01: Small-to-Big Retrieval | by Sophia Yang, Ph.D. | Towards Data Science

[3] https://github.com/aurelio-labs/semantic-router

[4]MTEB Leaderboard - a Hugging Face Space by mteb


关于LitGate

大家好,我是LitGate,一个专注于AI创作的游戏社区。我们的新版官网已经上线✨你可以在里面找到各种AI创作的实操案例,以及已经沉淀的AI游戏创意demo,相信一定能让你大开眼界!


我们还有一个讨论群📣,如果你对AI创作感兴趣,或者有什么问题想要咨询,欢迎加入我们的讨论群,和大家一起交流学习!(PS:目前群内人数较多,为了有一个优质的讨论环境,请各位添加社区管理员企业微信账号邀请入群


更多精彩活动和功能筹备上线中,敬请期待~


关注我们,一起探索AI创作的无限可能吧!


新版官网地址:www.litgate.ai


LitGate
AI赋能游戏开发,一站式创作者社区 http://www.litgate.ai
 最新文章