导图社区 基于LLM大模型的RAG应用
这是一篇关于RGA的思维导图,主要内容包括:第三部分 实战,第二部分 原理,第一部分 基础。生成式AI是一种能够生成各类内容的技术,包括文本、图像、音频和合成数据。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
RGA
第一部分 基础
第1章 RAG与大模型应用
1.1 大模型应用的方向:RAG
1.1.1 什么是RAG
1.生成式AI
生成式AI是一种能够生成各类内容的技术,包括文本、图像、音频和合成数据。
大语言模型(Large Language Model, LLM)经过海量文本数据的训练后,能将这些文本数据以一种黑盒形式压缩在模型参数中。预训练完成后,模型便掌握了大量的人类世界知识。研究者发现,当模型的规模足够大且经过指令微调对齐后,便可通过提示模板,运用零样本(zero-shot)或少样本(few-shot)的提示词来完成许多自然语言理解和自然语言生成任务。
对于一个大模型来说,更新基础模型知识库是非常困难的一件事情。首先,需要保证预训练数据的质量;其次,更新知识库后的模型通常都需要重新训练,至少要将新数据与旧数据按照一定的比例进行混合训练,而不能仅仅使用新数据,否则会出现灾难性遗忘的问题。总之,大模型的知识更新问题将成为模型的一个重要痛点,并且是一个值得研究的课题。
2 RAG
2020年,Facebook(后更名为Meta)在“Retrieval-Augmented Generation forKnowledge-Intensive NLP Tasks”一文中首先提出了一种称为检索增强生成(RAG)的框架。该框架可以使模型访问超出其训练数据范围之外的信息,使得模型在每次生成时可以利用检索提供的外部更专业、更准确的知识,从而更好地回答用户问题。
在RAG系统中,模型可以通过浏览外部知识来回答用户的问题,而不是试图从参数记忆中找到问题相关的答案,就像在考试的时候是开卷考试还是闭卷考试一样。例如:我们可以分别询问ChatGPT和Bing Chat两个问题:“RAG是什么?”“为什么大模型都是Decoder(解码器)结构?”因为BingChat可以结合互联网的搜索数据来生成答案,所以答案会更精准并且信息量更足。
完成检索之后,可以获取到一些与用户输入相关的可靠外部知识。在内容生成阶段,通过一个结构化的prompt模板约束,将这些外部知识添加到用户的问题中,并传递给语言模型。模型基于知识增强的prompt,通过自己的大量参数计算,就可以生成一个针对该用户问题的更准确的答案。在这个过程中,还可以约束模型对生成的答案进行溯源,以方便地知道模型是依据哪些知识片段完成最终答案生成的。
1.1.2 RAG与模型微调的对比
模型微调是指在一个特定任务上用一定量的数据来训练模型的过程,通过在特定数据集上微调可以提高模型在特定数据集上的性能。如果有足够大的监督数据集,且数据集不会发生改变,那么微调是一个很不错的方法。尽管大模型的微调成本较高,但现在已有大量低成本微调的方法,例如LoRA、QLoRA。 然而,如果数据集是动态的,就需要不断地重新训练模型以跟上数据的变化;或者如果没有足够大的数据集,那么微调不是一个好方法。在这种情况下,可以使用RAG来提高大模型的性能。同样,可以利用RAG来提高大模型在摘要、翻译等任务上的性能,因为这些任务可能无法进行微调。
1.2 为什么需要RAG
1 大模型的知识更新问题
2 大模型生成结果的不可解释性问题
3 大模型的数据泄露问题
4 大模型的训练成本问题
13 RAG的工作流程
1 数据准备
数据准备阶段包括识别数据源、从数据源提取数据、清洗数据并将其存储在数据库中。
1. 向量存储库,如Faiss
向量存储库非常适合存储文本、图像、音频等非结构化数据,并根据语义相似性搜索数据。向量模型用于为数据库中存储的数据生成向量嵌入。根据数据类型、任务和向量模型的不同,数据需要被切分成更小的块。例如,如果要存储文本数据,则可以将数据切分成句子或段落。如果要存储代码,则可以将数据切分成函数或类。如果选择提供更多的上下文片段,则可以使用更小的块。将数据切分成块后,可以为每个块生成向量并将其存储在向量存储库中。在最简单的RAG系统中,当向量存储库接收到用户查询时,查询也会被转换为一个向量,向量存储库会返回与查询最相似的候选数据。
2. 搜索引擎,如ES
在RAG系统中,可以从通用搜索引擎(如百度、Bing等)或内部搜索引擎(如Elasticsearch、Solr等)中检索数据。在RAG架构的检索阶段,使用问题/任务详细信息查询搜索引擎,搜索引擎返回最相关的文档。搜索引擎对于从网络中检索数据和使用关键字搜索数据非常有用。可以将来自搜索引擎的数据与来自其他数据库(如向量存储库、图数据库等)的数据结合起来,以提高输出的质量。
3. 图数据库,如Neo4j
图数据库以节点和边的形式存储数据。它适用于存储结构化数据,如表格、文档等,并使用数据之间的关系搜索数据。例如,如果你正在存储有关人员的数据,可以为每个人创建节点,并在彼此相识的人之间创建边。当对图数据库进行查询时,图数据库返回与查询节点相连的节点。这种使用知识图谱的检索对于完成像问题回答这样的任务非常有用,其中答案是人或实体。
2 数据召回
数据召回阶段包括根据用户输入的查询条件从数据库中检索相关数据。
3 答案生成
答案生成阶段则是利用检索到的数据和用户输入的查询条件生成输出结果。输出质量的高低取决于数据质量和检索策略。
第2章 语言模型基础
第3章 文本召回模型
第二部分 原理
第三部分 实战