自学大语言模型系列目录概览

《带你自学大语言模型》系列提供了一份详尽的学习指南,旨在帮助读者从基础到进阶,全面掌握大语言模型的相关知识。以下是该系列的目录概览,以及对每个部分的简要介绍。

第一部分:走进大语言模型(科普向)

  • 第一章 走进大语言模型:介绍了大语言模型的基本概念,探讨了人工智能的发展历程,以及自然语言处理(NLP)的前世今生。

1.1 人工智能的发展历程

从图灵机到GPT,概述了人工智能领域的重大突破和技术演进。

1.2 自然语言处理的演进详细回顾了如何让机器理解并使用人类语言的过程,涵盖了NLP的关键技术和里程碑。

第二部分:构建大语言模型(技术向)

  • 第二章 基础知识:深入讲解了大语言模型的构建过程,包括训练、算法基础、硬件基础等。

2.1 大语言模型的训练过程介绍了大模型训练的各个阶段,包括预训练、微调和对齐等。

2.2 算法基础:Transformer详细解读了Transformer模型,这是当前大语言模型的核心技术之一。

2.3 硬件基础:AI芯片探讨了AI芯片在大模型训练和推理中的作用,以及如何优化硬件以适应大模型的需求。

2.4 数据基础:预训练阶段数据详解分析了预训练阶段使用的数据类型、处理步骤和数据集的构建方法。

第三部分:大语言模型应用

  • 第六章 检索增强生成(RAG):介绍了RAG技术,这是一种结合检索和生成的先进方法,用于提升大模型的性能和应用范围。

6.1.1 AI搜索的现状与展望讨论了AI搜索市场的现状,以及RAG在AI搜索中的应用和潜力。

6.1.2 RAG技术概述解释了RAG的基本概念、必要性以及面临的挑战。

6.1.3 RAG分类对RAG的不同类型进行了分类,包括Naive RAG、Advanced RAG和Modular RAG。

6.1.4 检索阶段深入讨论了检索阶段的策略,包括检索源选择、索引优化和查询优化。

6.1.5 生成阶段探讨了生成阶段的技巧,如文档块的重新排序和文本选择与压缩。

6.1.6 RAG能力增强介绍了如何通过迭代检索、递归检索和自适应检索来增强RAG的能力。

参考文献

提供了系列中引用的所有文献和资源链接,方便读者进一步学习和研究。 通过这个系列,读者将能够获得从理论到实践的全面知识,为深入研究和应用大语言模型打下坚实的基础。
图片

6.1.2.2 RAG的必要性及其未来趋势

RAG的存在理由RAG(Retrieval-Augmented Generation)是为了解决大型预训练模型的三个主要问题而设计的:

  1. 信息实时性:大模型基于预训练数据进行推理,但训练数据存在截止日期,导致对最新事件的了解有限。
  2. 幻觉问题:大模型作为概率模型,可能产生不准确的输出,这是模型运行机理所固有的。
  3. 信息隐私问题:训练或微调数据可能被模型输出,存在隐私泄露风险。

RAG与微调的比较

  • RAG:适合快速更新知识、实时性要求不高、需要高度可解释性或准确性的场景,如问答系统、文档生成。
  • 微调:适合数据量小但质量高、对模型效果有高要求的场景,如金融领域的细分应用。

RAG与长文本的结合随着大模型上下文长度的扩展,长文本与RAG结合可能是未来趋势,以解决更复杂的问题和需要阅读大量材料的整合摘要问题。

RAG的未来发展方向

  • 结合长文本处理能力,提高处理复杂问题的能力。
  • 优化检索和推理过程,使其更加高效和透明。

6.1.2.3 RAG技术面临的挑战

RAG的“七重罪”根据Scott Barnett等人的研究,RAG系统面临的七个主要问题:

  1. 内容缺失:无法从现有文档中找到答案时,系统可能给出错误答案。
  2. 检索文档缺失:答案存在于文档中,但检索得分不足,无法返回给用户。
  3. 未在上下文中:检索到的多个文档需要合并,但融合策略限制了答案的准确性。
  4. 未提取到:答案存在于上下文中,但LLM未能正确提取。
  5. 错误的格式:LLM未能遵循特定格式要求提取信息。
  6. 不正确的特异性:答案不够具体或过于具体,无法满足用户需求。
  7. 不完整:生成的答案遗漏了上下文中的信息。

RAG的分类与优化Yunfan Gao等人的研究提出了RAG的三种分类,每种都是为了解决前一种的缺陷。这些分类不是并列关系,而是递进关系,展示了RAG技术的发展和优化方向。

结论RAG技术虽然面临挑战,但通过不断的优化和发展,有望解决现有问题,更好地服务于知识问答和文档生成等场景。

图片

6.1.3.1 Naive RAG

Naive RAG 就是传统的RAG,包括索引、检索和生成阶段。

索引阶段

首先对不同格式数据进行处理(如 PDF、HTML、Word 和 Markdown),将其转换成统一的纯文本格式。随后对文本进行分割,这主要是为了适应语言模型的上下文限制。然后,这些文本块被编码成向量并存储在向量数据库中。索引阶段对于在随后的检索阶段中启用高效的相似性搜索至关重要。

检索阶段

收到用户查询后,系统会使用与索引阶段相同的模型将用户的query转换成向量,然后计算查询向量与索引语料库中块向量的相似度得分。从而优先检索与查询最相似的前K个块。这K个块就是后面被用来扩展上下文所使用的。

生成阶段

这阶段主要是将用户的query向量和选定的文档块向量转换成一个连续的提示词,传给大模型。

这个阶段看起来非常简单,搭建这样一个系统也是十分简单,但是在实践过程中,却遇到了下面这几个关键的问题。

1、在检索阶段,这个阶段的挑战主要在精确度和召回率方面,会导致选择到与query不匹配或者不相关的文档块,错过关键信息。

2、在生成阶段,由于模型存在的幻觉问题,会产生与检索回的上下文无关,甚至是错误的内容。这对输出的质量和可靠性的影响是巨大的。

3、面对复杂问题时,基于原始查询的单一检索可能不足以获取足够的上下文信息。当从多个来源检索到类似信息时,可能会遇到冗余,导致重复的响应。确定各个段落的重要性和相关性,并确保风格和语调的一致性,增加了进一步的复杂性。

6.1.3.2 Advanced RAG

Advanced RAG 是为了解决 Naive RAG 的一些限制,引入了一些改进方法。主要是通过使用前检索和后检索策略来提高检索质量。为了解决索引问题,Advanced RAG通过使用滑动窗口方法、细粒度分割和整合元数据来改进其索引技术。此外,它还采用了几种优化方法来简化检索过程。

前检索过程

在这个阶段,主要关注点是优化索引结构和原始查询。优化索引的目标是提高被索引内容的质量。这涉及策略:增强数据粒度、优化索引结构、添加元数据、对齐优化和混合检索。而查询优化的目标是使用户原始问题更清晰,更适合检索任务。常见的方法包括查询重写、查询转换、查询扩展等技术,相关的详细内容在“6.1.4.3 查询优化”进行说明。

后检索过程

在检索到相关上下文后,最重要的是要有效地将检索到的内容与查询集成。后检索过程中的主要方法包括重新排列块和上下文压缩。

重新排列就是将检索到的最相关的内容排到最前面,这个在许多框架中都已经进行了集成,比如 LlamaIndex[3]、LangChain[4]和HayStack[5]  等。

上下文压缩:将所有相关文档直接输入LLMs可能会导致信息过载,用不相关内容稀释对关键细节的关注。为了缓解这一点,后检索工作集中在选择关键信息,强调重要部分,并缩短要处理的上下文。

6.1.3.3 Modular RAG

Modular RAG 是基于传统Naive RAG和Advanced RAG技术的进一步发展,旨在通过引入更多功能模块来增强信息检索和生成能力。这种范式允许用户根据具体需求灵活配置和替换各个模块,从而提供更大的灵活性和适应性。

在 Modular RAG 中,系统被划分为多个独立的模块,每个模块负责不同的任务。例如,可以包括查询搜索引擎、融合多个回答、相似性检索等模块。这些模块可以根据特定问题上下文动态地组织和重新配置,以实现最佳的效果。

主要包括的模块如下:

(1)搜索模块:适应特定场景,使用LLM生成的代码和查询语言,能够在各种数据源(如搜索引擎、数据库和知识图谱)上直接搜索。

(2)融合模块:通过采用多查询策略来解决传统搜索限制,将用户查询扩展到不同视角,利用并行向量搜索和智能重新排列,揭示显式和转型知识。

(3)记忆模块:利用LLM的记忆引导检索,创建一个无界记忆池,通过迭代自我增强使文本更紧密地与数据分布对齐。

(4)路由模块:在RAG系统中进行路由,导航通过不同的数据源,为查询选择最佳路径,无论是涉及摘要、特定数据库搜索还是合并不同的信息流。

(5)预测模块:旨在通过直接通过LLM生成上下文来减少冗余和噪声,确保相关性和准确性[13]。最后,任务适配器模块使RAG适应各种下游任务,自动化提示检索用于零样本输入,并通过少样本查询生成创建任务特定的检索器。

Modular RAG 可以看做是一个多功能的工具箱,支持根据需要更换或调整工具来应对不同的问题。相比于 Native RAG 要灵活得多。通过添加新工具或改变现有工具的配合方式,进一步增强了它的适应能力,让它在处理各种任务时更加得心应手。

6.1.4 检索阶段

因为RAG依赖外部知识来增强LLMs的能力,所以数据源会严重影响最终生成的结果。在数据源的检索上,主要需要关注的内容包括:检索源、检索粒度、检索前处理以及相应嵌入模型的选择。

6.1.4.1 检索源

检索源主要要关注数据结构和检索的粒度。检索源最开始多是文本,目前已经逐渐扩展到其他半结构化数据和结构化数据。

检索源的数据结构

数据结构主要包括非结构化数据、半结构化数据、结构化数据。最初,文本是主流的检索来源。随后,检索源扩展到包括半结构化数据(如PDF)和结构化数据(如知识图谱、KG)以增强检索。

另外,除了从原始外部源检索外,还有越来越多的研究倾向于使用由LLMs自身生成的内容进行检索和增强。

【1】非结构化数据

非结构化数据比如文本,是最常用的检索来源,主要从语料库中收集。对于开放域问答任务,主要的检索来源是维基百科。除了百科全书式的数据外,常见的未结构化数据还包括跨语言文本和特定领域的数据。

【2】半结构化数据

通常指包含文本和表格信息的组合,如PDF。处理半结构化数据是相对困难的,主要包括文本分割带来的数据损坏;引入表格数据带来的搜索复杂化。

处理半结构化数据目前主要有两种方法:第一种方法是利用大模型的编码能力,在数据库执行Text-2-SQL查询,例如TableGPT [6]。第二种方法是基于文本的方法将表格转换为文本格式进行进一步分析 [7]。目前这两种方法都不是最优解决方案,这个方向还存在大量的研究机会。

【3】结构化数据

结构化的数据可以提供更精准的信息,比如知识图谱(KGs)[8]

例如, KnowledGPT [9]生成“KB”搜索查询并将知识存储在个性化的数据库中,增强了RAG模型的知识丰富性。G-Retriever [10]集成了图神经网络(GNNs)、LLMs和RAG,通过软提示LLM增强了图理解力和问答能力,并使用奖赏收集斯坦纳树(PCST)优化问题进行有针对性的图检索,这主要是为了应对LLMs在理解和回答有关文本图的问题方面的限制。

构建结构化数据库的确在结果质量上有很大的优势,但是,构建和维护结构化数据库也需要耗费更多的成本。

检索粒度

检索粒度针对不同类型的数据,也有不同的粒度。粒度的粗细对结果的影响也是不同的,粗粒度可以提供更多相关信息,但同时也带来了更多冗余信息。细粒度会增加检索负担,同时不能保证能够保证语义完整性需要的全部知识。

在文本中,检索粒度从细到粗,包括Token、Phrase、Sentence、Proposition、Chunks、Document。

在知识图谱(KG)上,检索粒度包括Entity、Triplet和sub-Graph。检索的粒度也可以适应下游任务,例如在推荐任务中检索Item IDs和Sentence pairs。

6.1.4.2 索引优化

索引阶段的主要工作是:将文档处理分割,并转换为向量,存储在向量数据库中。索引构建的质量决定了检索阶段能否获得正确的上下文。常见的索引优化策略主要包括:

分块策略

最常用的方法是根据固定数量的token将文档分割成块。但块的大小对效果

较大的块可以捕获更多上下文,但它们也会产生更多噪声,需要更长的处理时间和更高的成本。而较小的块可能无法完全传达所需的上下文,但它们的噪声较少。

针对块会把句子截断这个问题,目前的方法是递归分割和滑动窗口方法,通过多层检索合并全局相关信息[11]。但这个方法无法无法在语义完整性和上下文长度之间找到平衡。因此,提出了Small2Big等方法,其中句子(小)用作检索单元,前面的和后面的句子作为(大)上下文提供给LLMs[12]

元数据附加

可以再每个文档块增加一些元数据,比如页码、文件名、作者、类别、时间戳等。这样,检索可以根据此元数据进行过滤,限制检索范围。

比如,为时间戳分配不同的权重,就可以对知识的新鲜度进行控制,从而避免过时的信息。

元数据信息除了从文档中提取,还可以人为构建。例如,添加段落摘要,以及引入假设问题。这种方法也称为Reverse HyDE。具体来说,使用LLM生成可以由文档回答的问题,然后在检索期间计算原始问题和假设问题之间的相似度,以减少问题和答案之间的语义差距。

结构化索引

通过对文档建立分层结构,来增强信息检索的效果。

分层索引结构

让文件通过父子关系进行排列,通过块链接来找到他们。每个节点中都存储数据的摘要,这有助于快速遍历数据,从而让系统可以确定要提取哪些文档块。同时,这种方法还能够减少因为提取问题产生的幻觉。

知识图谱索引

更进一步,还可以利用知识图谱构建文档的分层结构,这种方式更有助于保持一致性。知识图谱中描绘了不同概念和实体之间的联系,能够降低幻觉。这种方式的另一个优势在于,可以将信息检索过程转换为LLM可以理解的指令,从而进一步提高检索的准确性。

KGP[13]提出了一种使用KG在多个文档之间构建索引的方法,可以更好的捕捉文档和结构之间的逻辑关系。具体来说,KG由节点(代表文档中的段落或结构,如页面和表格)和边(表示段落之间或文档结构内的语义/词汇相似性)组成,有效地解决了多文档环境中的知识检索和推理问题。

6.1.4.3 查询优化

Naive RAG 面临的一个主要挑战是它直接依赖用户原始查询作为检索的基础。制定一个精确而清晰的问题很困难,轻率的问题导致检索效果不佳。有时问题本身很复杂,语言组织得不好。另一个困难在于语言的复杂性和歧义性。语言模型通常难以处理专业词汇或具有多种含义的模糊缩写。例如,它们可能无法辨别“LLM”是指大型语言模型还是法律背景下的法学硕士。

查询扩展

查询扩展就是将单个查询扩展为多个查询,这样主要能够保证生成的答案的最优相关性。具体实现上,包括多查询、子查询、连锁验证(CoVe)。

1. 多查询。通过使用提示工程通过LLMs扩展查询,然后可以并行执行这些查询。查询的扩展不是随机的,而是经过精心设计的。

2. 子查询。子问题计划的过程代表了生成必要的子问题以在组合时对原始问题进行上下文化和完全回答的过程。这种添加相关上下文的过程,在原则上与查询扩展类似。具体来说,可以使用最少到最多的提示方法[92]将复杂问题分解为一系列更简单的子问题。

3. 连锁验证(CoVe)。扩展的查询经过LLM的验证,以实现减少幻觉的效果。经过验证的扩展查询通常表现出更高的可靠性。

查询转换

查询转换是说,根据转换后的查询而不是用户的原始查询检索块。主要包括查询重写和查询路由两个方面

查询重写:现实世界中用户的查询输入不一定是最优的,所以,对查询进行重写有助于提升结果质量。最简单的方式是通过LLM对查询进行重写。也可以用专门的小模型对查询进行重写,比如RRR(Rewrite-retrieve-read)[14]

以下还有一些查询重写的实现方式:

淘宝的BEQUE[15]实施了查询重写方法,显著提高了长尾查询的召回效果,从而提高了GMV。另一种查询转换方法是使用提示工程让LLM根据原始查询生成查询,以供后续检索使用。

HyDE[17]构建假设文档(假定是对原始查询的答案)。它侧重于答案与答案之间的嵌入相似性,而不是寻找问题或查询的嵌入相似性。

使用Step-back Prompting方[16],将原始查询抽象为生成高层次概念问题(回溯问题)。在RAG系统中,回溯问题和原始查询都用于检索,并且两个结果都用作语言模型生成答案的基础。

查询路由

根据不同的查询,路由到不同的RAG管道,这适合于为适应多样化场景而设计的多功能RAG系统。目前有以下几种方式:

元数据路由器/过滤器:第一步涉及从查询中提取关键词(实体),然后根据关键词和块中的元数据进行过滤,以缩小搜索范围。

语义路由器是另一种路由方法,它利用查询的语义信息。特定方法见语义路由器。

也可以采用混合路由方法,结合语义和基于元数据的方法来增强查询路由。

6.1.5 生成阶段

在检索之后,直接将所有检索到的信息输入到LLM进行问题回答并不是一个好的做法。如果输入给大模型过多的冗余信息,会干扰大模型最终的生成效果。因此,在RAG系统中,我们通常需要对检索到的内容进行进一步处理。主要包括对文档块的重排序和文本压缩。

6.1.5.1 对文档块重新排序

把最相关的结果突出出来,这样的设计既作为增强器又作为过滤器,可以为模型提供更精准的输入[18]。重新排序目前主要有两种方法,基于规则或基于模型。基于规则一般采用预定义的指标,主要考虑多样性、相关性和MRR。基于模型可以采用专门用于排序的模型(比如Cohere rerank或bge-raranker-large)或者通用大语言模型。

6.1.5.2 文本选择和压缩

在RAG过程中,不一定文本越长越好,多长的上下文反倒会引入更多噪声,降低大模型对关键信息的感知。

LLMLingua使用小型语言模型如GPT-2 Small或LLaMA-7B,检测并移除不重要的标记,将其转换为一种对人类来说难以理解但对LLMs却很好地理解的形式。这种方法无需对LLMs进行额外训练,同时平衡了语言完整性和压缩比。PRCA通过训练一个信息提取器来解决这个问题。同样,RECOMP采用相似的方法,通过对比学习训练一个信息压缩器。每个训练数据点包括一个正面样本和五个负面样本,编码器在这个过程中使用对比损失进行训练。除了压缩上下文外,减少文档的数量也有助于提高模型答案的准确性。

Ma等人论[19]中,提出了一种“过滤器-重新排序器”范式,这种模式结合了大模型和小模型各自的优势,小模型作为过滤器,大模型用于重新排序。研究表明,指示LLMs重新排列SLMs识别出的具有挑战性的样本,可以在各种信息提取(IE)任务中取得显著改进。

还有一种方法可以用于提升最终生成的内容的质量:先通过LLM来评估检索到的内容,然后再生成最终答案。

6.1.6 RAG 能力增强

在有些情况下,只进行一次检索-生成,对于复杂问题是不够的,所以,目前很多研究在尝试用多次检索的方式来优化最终效果

6.1.6.1 迭代检索

迭代检索是基于初始查询和多次查询的所有文本,重复搜索知识库,为大语言模型提供更全面的知识输入。

迭代检索其核心思想是在生成答案的过程中,通过多次重复进行检索和生成的过程,逐步提高生成内容的质量和准确性。

具体来说,迭代检索涉及以下几个步骤:

()初始查询:首先,基于用户的原始问题或输入,系统会进行一次初步的检索操作,从知识库中获取相关信息。

生成回答:利用从知识库中检索到的信息,结合大语言模型(LLM)的能力,生成一个初步的回答。

反馈与改进:生成的回答会被用来改进后续的查询。例如,如果生成的回答存在不足之处,可以利用这些不足来构建更精确的查询,以便在下一轮检索中获得更有针对性的信息。

重复循环:上述过程不断重复,每次迭代都会根据当前生成的内容来优化下一次的检索查询,并利用新检索到的信息来改进生成的内容,直到满足预设的标准或条件为止。

这种迭代方式的优势在于能够逐步丰富和细化生成内容的上下文信息,从而提高生成结果的鲁棒性和准确性。例如,在需要多步推理的复杂任务中,通过多次迭代可以更好地整合分散在不同文档中的信息,避免因单次检索而遗漏重要细节。

此外,迭代检索还可以帮助缓解大模型在生成过程中可能出现的“幻觉”问题,即生成不准确或无关的信息。通过不断更新和优化检索查询,可以确保生成内容更加符合实际情况和用户需求

6.1.6.2 递归检索

递归检索通过多次迭代和逐步细化的方式,目的是提升文档检索的准确性和生成答案的质量。

它从原始文档节点开始,逐步扩展出更多粒度更小的文档节点,从而在最终生成答案时能够更加精确地捕捉到相关信息。

具体来说,递归检索分为两个主要步骤:初始检索和后续扩展。在初始阶段,系统会从大规模的知识库中检索出与查询内容相关的初步文档块。这些文档块可能包含关键语义信息,但不一定完全符合需求。随后,在后续阶段,系统会对这些初步结果进行重写和扩展,捕获更多的上下文信息,并提供给语言模型以生成更丰富的回答。

这种两步检索方法不仅提高了检索的准确性,还平衡了效率和丰富度之间的关系。例如,LlamaIndex库就展示了如何利用递归检索来实现高效的文档检索和生成。

6.1.6.3 自适应检索

在传统的RAG系统中,通常会先从大量数据源中检索相关信息,然后将这些信息作为上下文输入到大语言模型(LLM)中进行生成。然而,这种方法并不总是最优的,因为过度依赖外部信息可能会导致生成结果的质量下降,尤其是在模型本身已经具备足够参数化知识的情况下。

自适应检索的核心思想是根据问题的复杂性和查询的具体需求动态调整检索策略,以达到最佳的生成效果和计算效率。

自适应检索通过动态选择最合适的检索时机和内容来解决这一问题。例如,对于简单的问题,可以直接由模型自身回答;而对于复杂的问题,则需要依赖RAG进行更深入的信息检索和筛选。此外,自适应检索还可以根据问题的频率和复杂度进行优化,允许模型直接回答高频率问题,并对低频率问题引入RAG。

自适应检索的一个关键优势在于它能够平衡计算效率与答复质量。与传统的单步或多步检索方法相比,自适应检索能够在简单和复杂查询之间实现有效的平衡,从而提高整体系统的性能。例如,Adaptive-RAG可以根据查询复杂度动态调整策略,真正贴合实际应用需求。

总之,自适应检索通过灵活调整检索策略,不仅提升了生成效果,还提高了系统的效率和实用性。

写在最后

本节是RAG系列的一个开篇,篇幅原因,里面涉及的技术点还没有详细展开,后续会再单独对其中的关键技术点深入写。

参考文献

[1] Lewis P, Perez E, Piktus A, et al. Retrieval-augmented generation for knowledge-intensive nlp tasks[J]. Advances in Neural Information Processing Systems, 2020, 33: 9459-9474.

[2] Gao Y, Xiong Y, Gao X, et al. Retrieval-augmented generation for large language models: A survey[J]. arXiv preprint arXiv:2312.10997, 2023.

[3] https://www.llamaindex.ai

[4] https://www.langchain.com/

[5] V. Blagojevi, “Enhancing rag pipelines in haystack: Introducing diversityranker and lostinthemiddleranker,” https://towardsdatascience.com/enhancing-rag-pipelines-in-haystack-45f14e2bc9f5, 2023.

[6] L. Zha, J. Zhou, L. Li, R. Wang, Q. Huang, S. Yang, J. Yuan, C. Su, X. Li, A. Su et al., “Tablegpt: Towards unifying tables, nature language and commands into one gpt,” arXiv preprint arXiv:2307.08674, 2023.

[7] Z. Luo, C. Xu, P. Zhao, X. Geng, C. Tao, J. Ma, Q. Lin, and D. Jiang, “Augmented large language models with parametric knowledge guiding,”  arXiv:2305.04757, 2023.

[8] M. Gaur, K. Gunaratna, V. Srinivasan, and H. Jin, “Iseeq: Information seeking question generation using dynamic meta-information retrieval and knowledge graphs,” in Proceedings of the AAAI Conference on Artificial Intelligence, vol. 36, no. 10, 2022, pp. 10 672–10 680.

[9] X. Wang, Q. Yang, Y. Qiu, J. Liang, Q. He, Z. Gu, Y. Xiao, and W. Wang, “Knowledgpt: Enhancing large language models with retrieval and storage access on knowledge bases,” arXiv preprint arXiv:2308.11761, 2023.

[10] X. He, Y. Tian, Y. Sun, N. V. Chawla, T. Laurent, Y. LeCun, X. Bresson, and B. Hooi, “G-retriever: Retrieval-augmented generation for textual graph understanding and question answering,” arXiv preprint arXiv:2402.07630, 2024.

[11] Langchain, “Recursively split by character,” https://python.langchain.com/v0.1/docs/modules/data_connection/document_transformers/recursive_text_splitter/    2023.

[12] S. Yang, “Advanced rag 01: Small-tobig retrieval,” https://towardsdatascience.com/advanced-rag-01-small-to-big-retrieval-172181b396d4   2023.

[14] X. Ma, Y. Gong, P. He, H. Zhao, and N. Duan, “Query rewriting for retrieval-augmented large language models,” arXiv preprint arXiv:2305.14283, 2023.

[15] W. Peng, G. Li, Y. Jiang, Z. Wang, D. Ou, X. Zeng, E. Chen et al., “Large language model based long-tail query rewriting in taobao search,” arXiv preprint arXiv:2311.03758, 2023.

[16] H. S. Zheng, S. Mishra, X. Chen, H.-T. Cheng, E. H. Chi, Q. V. Le, and D. Zhou, “Take a step back: Evoking reasoning via abstraction in large language models,” arXiv preprint arXiv:2310.06117, 2023.

[17] L. Gao, X. Ma, J. Lin, and J. Callan, “Precise zero-shot dense retrieval without relevance labels,” arXiv preprint arXiv:2212.10496, 2022.

[18] S. Zhuang, B. Liu, B. Koopman, and G. Zuccon, “Open-source large language models are strong zero-shot query likelihood models for document ranking,” arXiv preprint arXiv:2310.13243, 2023.

[19] Y. Ma, Y. Cao, Y. Hong, and A. Sun, “Large language model is not a good few-shot information extractor, but a good reranker for hard samples!” ArXiv, vol. abs/2303.08559, 2023. [Online]. Available: https://api.semanticscholar.org/CorpusID:257532405

[20] Scott Barnett, Stefanus Kurniawan, Srikanth Thudumu, Zach Brannelly, Mohamed Abdelrazek, “Seven Failure Points When Engineering a Retrieval Augmented Generation System,” arXiv preprint arXiv:2401.05856, 2024.

惯例放一棵树

图片