论文 | Retrieval-Augmented Generation for Large Language Models: A Survey面向大语言模型的检索增强生成技术:综述(下)

构建高质量检索器的三个关键问题

1)如何获得准确的语义表示?2) 如何匹配查询和文档的语义空间?3) 如何让检索器的输出与大语言模型(LLM)的偏好相协调?

如何获得准确的语义表示?

在 RAG 中,语义空间指的是查询和文档被映射的多维空间。进行检索时,我们是在这个语义空间内进行评估的。如果语义表达不准确,对 RAG 的影响将是灾难性的。

两种构建准确语义空间的方法:①块优化:处理文档首先要做的事情就是分块,块太大或者太小都可能无法取得最佳效果,所以要选择合适的分块策略。当前的 RAG 研究采用了多种块优化方法,以提高检索的效率和准确性。其中,技术如滑动窗口技术通过多次检索,聚合全局相关信息,实现分层检索。②微调嵌入模型:在确定块的大小后,需要一个合适的嵌入模型将块和查询嵌入到语义空间中。为了确保模型能够理解用户查询与内容的相关性,对嵌入模型进行任务特定的微调至关重要,否则未经微调的模型可能无法满足特定任务的需求。微调又可以分为领域知识微调和对下游任务的微调。

如何协调查询和文档的语义空间

在 RAG 应用中,有些检索器用同一个嵌入模型来处理查询和文档,而有些则使用两个不同的模型。此外,用户的原始查询可能表达不清晰或缺少必要的语义信息。两项关键技术实现协调用户的查询与文档的语义空间:①查询重写:对查询进行重写。相关技术就是想办对查询进行调整。②嵌入变换:对于嵌入变换,除了像查询重写这样的宏观方法,还有一些更微观的技术。在 Liu 于 2023 年提出的 LlamaIndex 中,研究者们通过在查询编码器后加入一个特殊的适配器,并对其进行微调,从而优化查询的嵌入表示,使之更适合特定的任务。

如何让检索器的输出与大语言模型(LLM)的偏好相协调?

在 RAG(Retrieval-Augmented Generation)流程中,即便我们采用各种技术提升检索效果,最终对 RAG 的整体性能可能仍无明显提升。原因在于检索到的文档可能并不符合大语言模型(LLM)的需求。

①LLM监督下的训练:众多研究通过从大语言模型获取的反馈信号来调整嵌入模型。在这些研究中,无论是语言模型还是检索器,它们都以提示输入对作为输入。这些模型使用大语言模型 (Large Language Model) 提供的分数来指导检索器的训练,这相当于用大语言模型来对数据集进行标注。

②插入适配器:然而,微调嵌入模型可能会遇到一些挑战,例如使用 API 实现嵌入功能或本地计算资源不足。因此,一些研究选择外接适配器来进行模型对齐。


生成组件

在 RAG 系统中,生成组件是核心部分之一,它的职责是将检索到的信息转化为自然流畅的文本。RAG中的生成组件不同于传统的语言模型,它的生成组件通过利用检索到的信息来提高文本的准确性和相关性。

通过后处理提升检索结果:①信息压缩:即便检索器能从庞大的语料库中检索出相关文档,但是当下研究还是面临处理大量检索文档的挑战。在这种情况下,进行信息浓缩变得必要。总体来说,信息浓缩的重要性主要体现在减少信息噪音、解决上下文长度限制和提升生成效果等方面。②文档重排:在文档重排过程中,重排模型的主要作用是优化由检索器检索出的文档集合。重排序的核心在于对文档记录进行重新组织,优先安排最相关的内容位于前列,同时将文档总量控制在一定数量之内。重排序过程中引入的上下文压缩功能,目的是基于特定查询上下文直接筛选出相关信息。这一策略的独特之处在于,通过减少每个文档的内容量和筛选掉不相关的文档,它能更加集中地展示检索结果中的关键信息。

优化生成器以应对输入数据:①通用优化过程,通用优化过程涉及训练数据中的输入输出对,目的是让模型学会根据输入 x 生成输出 y;②运用对比学习,在训练数据准备阶段,通常会生成输入和输出之间的交互对,以此进行对比学习。


RAG 技术的增强手段

RAG在各个增强阶段的应用:

①预训练阶段:在预训练阶段,研究人员努力通过检索方法来提升预训练语言模型在开放领域问答中的表现。相较于传统的预训练模型,这种方法通过减少参数的使用,提高了效率。它特别擅长处理需要大量知识的任务,并可以通过在特定领域的语料库上训练来构建专门的模型。但这种方法也有其不足之处,如需要大量预训练数据、更多的训练资源,以及更新速度较慢。特别是当模型尺寸增大时,基于检索的训练成本会相对增高。

②微调阶段:在下游微调阶段,研究人员采用了多种方法来提高检索器和生成器在开放域问答任务中的信息检索能力。总的来说,微调阶段的增强方法有几个显著特征。首先,对大语言模型(LLM)和检索器进行微调可以更好地适应特定任务,这提供了同时或单独微调任一者的灵活性。其次,微调有助于模型适应多样化的下游任务。此外,微调还使模型能更好地处理不同数据结构的多种语料库,尤其是在处理图结构语料库方面有明显优势。然而,微调阶段也存在局限性,比如需要特别为 RAG 微调准备的数据集,以及与推理阶段相比需要更多的计算资源。

③推理阶段:Naive RAG 就是在推理阶段融入检索内容的一个研究模式。为了弥补 Naive RAG 的不足,研究者在推理阶段的 RAG 中引入了更多上下文。总结来说,推理阶段的增强技术因其轻量、高效、无需额外训练以及能够有效利用已有的强大预训练模型而备受推崇。其最大的特点是在模型微调时保持大语言模型(LLM)的参数不变,重点在于根据不同需求提供更加贴切的上下文信息,同时具有快速和成本低的优势。然而,这种方法也存在一些局限,比如需要额外的数据处理和流程优化,以及受限于基础模型的性能。

数据来源增强

数据来源对 RAG (Retrieval-Augmented Generation) 的效果至关重要。不同的数据来源提供不同粒度和维度的知识,因此需要采取不同的处理方式。

①非结构化数据:在非结构化数据方面,这类数据主要是文本型的,通常源自纯文本的语料库。在处理文本的粒度上,除了常见的句子块之外,检索的单元还可以是 Token、短语、以及文档段落。

②结构化数据:在结构化数据的增强方面,像知识图谱(Knowledge Graph, KG)这类数据源正逐步融入到 RAG 的框架中。

③LLM生成的内容:这种方法通过利用 LLM 自身生成的内容来进行检索,目的是提高下游任务的性能。

增强过程

在大部分 RAG(检索与生成)研究中,通常仅执行单次检索和生成操作。然而,单次检索可能携带重复的信息,影响生成质量。此外,单次检索所获取的信息在需要多步骤推理的问题上表现有限。目前优化检索过程的主要方法包括迭代检索和自适应检索。

①迭代检索:递归检索首先通过结构化索引处理数据,再逐层进行检索。多跳检索则常用于深入挖掘图结构数据源中的信息。还有一些方法结合了检索和生成步骤的迭代。

②适应性检索:传统的 RAG 方法在检索信息时采取被动方式,而目前的新方法则让大语言模型 (LLM) 能主动决定何时以及检索什么内容,从而提高信息检索的效率和准确性。


评估RAG

评估方法:①独立评估:涉及到对检索模块和生成模块的评估。评估 RAG 检索模块的性能通常使用一系列指标,这些指标用于衡量系统(如搜索引擎、推荐系统或信息检索系统)在根据查询或任务排名项目的有效性。这些指标包括命中率 (Hit Rate)、平均排名倒数 (MRR)、归一化折扣累积增益 (NDCG)、精确度 (Precision) 等。生成模块的评估主要关注上下文相关性,即检索到的文档与查询问题的关联度。②端到端评估:端到端评估是对 RAG 模型对特定输入生成的最终响应进行评估,涉及模型生成的答案与输入查询的相关性和一致性。从内容生成的目标来看,评估可分为无标签和有标签的内容评估。无标签内容的评估指标包括答案的准确性、相关性和无害性,而有标签内容的评估指标则包括准确率 (Accuracy) 和精确匹配 (EM)。此外,根据评估方法的不同,端到端评估可分为人工评估和使用大语言模型 (LLM) 的自动评估。

关键评估指标:①答案准确性:这个指标着重保证模型生成的答案与给定上下文的真实性一致,确保答案不会与上下文信息发生冲突或偏离。②答案相关性:此指标强调生成的答案需要紧密联系问题本身。③上下文相关性:此指标要求提取的上下文信息必须尽可能精确和具有针对性,以避免无关内容。

关键能力:①抗噪声能力: 这项能力评估模型处理与问题相关但无效信息的噪声文档的效率。②拒绝无效回答能力: 当模型检索到的文档缺乏解决问题所需的信息时,模型应正确地拒绝回答。③信息综合能力: 这项能力评价模型是否能整合多个文档中的信息,以回答更复杂的问题。④反事实鲁棒性测试: 此项测试旨在评估模型在被告知检索信息可能存在风险时,是否能识别并纠正文档中的错误信息。

评估框架:①RAGAS:这个框架关注于检索系统挑选关键上下文段落的能力、大语言模型准确利用这些段落的能力以及生成内容的整体质量。RAGAS 是一个基于简单手写提示的评估框架,通过这些提示全自动地衡量答案的准确性、相关性和上下文相关性。②ARES:ARES 的目标是自动化评价 RAG 系统在上下文相关性、答案忠实度和答案相关性三个方面的性能。这些评价指标与 RAGAS 中的相似。但是,RAGAS 作为一个基于简单手写提示的较新评估框架,在适应新 RAG 评估场景方面有一定局限性,这正是 ARES 项目的显著意义。此外,ARES 在评估中的表现明显不如 RAGAS。ARES 减少了评估成本,通过使用少量的手动标注数据和合成数据,并应用预测驱动推理 (PDR) 提供统计置信区间,提高了评估的准确性。

### Retrieval-Augmented Generation in Knowledge-Intensive NLP Tasks Implementation and Best Practices The method of retrieval-augmented generation (RAG) for knowledge-intensive natural language processing tasks aims to combine the strengths of dense vector representations with sparse exact match methods, thereby improving model performance on tasks that require access to external information not present during training[^1]. This approach ensures models can retrieve relevant documents or passages from a large corpus at inference time and generate responses conditioned on this retrieved context. #### Key Components of RAG Framework A typical implementation involves two main components: 1. **Retriever**: A component responsible for fetching potentially useful pieces of text based on input queries. 2. **Generator**: An encoder-decoder architecture like BART or T5 which generates outputs given both the query and retrieved contexts as inputs. This dual-stage process allows systems to leverage vast amounts of unstructured data without needing explicit retraining when new facts become available. #### Practical Steps for Implementing RAG Models To effectively implement such an architecture, one should consider several factors including but not limited to choosing appropriate pre-trained retrievers and generators fine-tuned specifically towards question answering or similar objectives where factual accuracy is paramount. Additionally, integrating these modules into existing pipelines requires careful consideration regarding latency constraints versus quality trade-offs especially under real-time applications scenarios. For instance, here's how you might set up a simple pipeline using Hugging Face Transformers library: ```python from transformers import RagTokenizer, RagTokenForGeneration tokenizer = RagTokenizer.from_pretrained("facebook/rag-token-nq") model = RagTokenForGeneration.from_pretrained("facebook/rag-token-nq") def rag_pipeline(question): inputs = tokenizer([question], return_tensors="pt", truncation=True) generated_ids = model.generate(input_ids=inputs["input_ids"]) output = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0] return output ``` In practice, tuning hyperparameters associated with each stage separately could lead to better overall results compared to treating them monolithically due to their distinct roles within the system design. #### Best Practices When Working With RAG Systems When deploying RAG-based solutions, adhering to certain guidelines helps maximize effectiveness while minimizing potential pitfalls: - Ensure high-quality indexing over document collections used by the retriever part since poor recall directly impacts downstream generations negatively. - Regularly update underlying corpora so they remain current; stale resources may propagate outdated information through synthetic texts produced thereafter. - Monitor closely any changes made either upstream (e.g., modifications affecting source material accessibility) or inside your own infrastructure because alterations elsewhere often necessitate corresponding adjustments locally too. By following these recommendations alongside leveraging state-of-the-art techniques provided via frameworks like those mentioned earlier, developers stand well positioned to build robust conversational agents capable of delivering accurate answers across diverse domains requiring specialized domain expertise beyond what general-purpose pretrained models alone offer today. --related questions-- 1. How does multi-task learning compare against single-task approaches concerning adaptability? 2. What are some challenges faced when implementing keyword-based point cloud completion algorithms? 3. Can prompt engineering significantly influence outcomes in few-shot learning settings? 4. Are there specific industries benefiting most prominently from advancements in knowledge-intensive NLP technologies?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值