萱仔大模型学习记录——6.1RAG入门理论学习+奠基论文学习

   最近找工作发现很多公司都要了解以下关于RAG和 Agent的概念和一些常用的算法,经过这段时间的学习,我总结一下以前和最近看的一些论文,和RAG和AGENT的一些原理。

1、RAG(Retrieval-Augmented Generation)

概念: RAG 是一种结合检索(Retrieval)和生成(Generation)能力的技术框架,擅长回答复杂问题、生成丰富内容、并在提供准确信息时显得更智能。

工作原理:
  1. 检索(Retrieval): 当提问的时候,系统会首先从一个外部知识库或文档数据库中找到相关信息。这个知识库可以是维基百科、书籍、技术文档等。我个人理解这个过程相当于让系统去查找资料(先把那些关键的东西精准的找出来,然后再生成回答。

  2. 生成(Generation): 等着系统找到了这些相关信息了,RAG 能用一些生成模型(比如GPT、BERT)处理这些相关的信息,生成一个合适的回答。我个人认为这就是让这个系统根据找到的资料写我提出问题的答案。

  3. 结合检索和生成: 与普通的生成模型不同,RAG 可以先找到相关资料,再基于这些资料回答问题。因此,RAG 的回答更准确,因为是先查信息再找到答案。

        如果我是个厨师,已经在某东方学会了厨师的一些技能,基本的做菜技能比如颠勺炒菜之类的,相当于完成了预训练(Pre-training)。由于我是一个中国胃,我要去学会做好吃的中餐,经过几年针对中餐菜谱的训练,相当于完成了微调(Fine-Tuning),我就变成了一个中餐厨师。但是如果我只想做出一些好吃的中餐菜,我已经会做饭了,有了基础的做饭能力,然后又拥有了一个绝密菜谱,这样如果我想做出一个菜来,就要先从菜谱检索到具体的做法,然后做出这个菜,简单来说,就是先动手,再做菜。 

优点:
  • 准确性高: RAG 从检索的真实数据中生成答案,比完全依赖模型生成的答案更准确。
  • 处理知识丰富: 可以回答需要专业背景的复杂问题,因为它可以查找外部知识。
  • 可扩展: 可以与多个不同的数据源结合使用,例如公司内部文档库、在线文章等。

我找到了两篇重要的RAG论文:

1. "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks" (Lewis et al., 2020)

原论文链接:

https://arxiv.org/abs/2005.11401

  • 重点: 这是 RAG 的奠基论文,提出了将检索与生成结合的框架,用于解决知识密集型任务。快速阅读时,专注于模型架构、如何将检索和生成融合,以及应用场景。

        RAG 模型概念:这篇论文提出了一种通用的微调方法,用于“检索增强生成”(RAG)模型。这些模型通过结合预训练的参数化记忆(例如,seq2seq 模型)和非参数化记忆(例如,维基百科中的密集向量索引),来增强语言生成任务的效果。具体来说,非参数化记忆通过预训练的神经检索器访问外部知识库,帮助生成更加准确的内容。

Sequence-to-sequence(Seq2Seq)是一种用于处理序列数据的神经网络架构,特别适合输入和输出都是序列的任务。例如,机器翻译、文本摘要、语音识别等任务可以通过 Seq2Seq 模型来解决。Seq2Seq 的核心思想是通过编码器-解码器(Encoder-Decoder)架构,将输入序列映射到一个中间表示,再通过解码器将这个中间表示转换为目标序列。

1. Seq2Seq 的基本架构

Seq2Seq 模型主要由两个部分组成:编码器(Encoder)解码器(Decoder)通常是基于 RNN、LSTM、GRU 等循环神经网络或 Transformer 的。

(1) 编码器(Encoder)
  • 编码器的作用是接收输入序列(如一个句子),并将其编码为一个固定长度的向量表示。
  • 编码器通常由一个或多个层组成,可以是 LSTM、GRU 或 Transformer 等网络。
  • 输入序列会逐步通过编码器,编码器的最后一个隐藏状态(或者整个序列的隐藏状态)会被视为该序列的语义表示,作为解码器的输入。
(2) 解码器(Decoder)
  • 解码器的作用是接收编码器输出的语义表示,并根据此向量逐步生成目标序列。
  • 解码器每次生成一个词,然后将其作为输入继续生成下一个词,直到生成完整的序列。
  • 在每个时间步,解码器会使用先前的输出和编码器的表示,预测当前时间步的输出。

2. Seq2Seq 模型的工作流程

Seq2Seq 模型的处理流程可以分为以下几步:

  1. 输入序列编码:输入序列(例如句子)会通过编码器逐步处理,编码器的最后一个隐藏状态(或者整个隐藏状态序列)作为输入序列的语义表示。
  2. 初始化解码器:解码器会初始化隐藏状态(通常来自编码器的最后隐藏状态)并开始生成输出序列。
  3. 逐步生成输出:解码器根据输入的语义表示和自身先前的输出,逐个生成目标序列的每个单词,直到生成完成。

        RAG 模型的两种形式:

同一检索结果生成序列:一种模型形式是在生成的整个序列中使用相同的检索片段。

不同的检索结果生成每个 token:另一种形式是在生成序列的每个 token 时,使用不同的检索片段。这种模型更灵活,因为它可以为不同的 token 使用不同的上下文信息。

        这篇文章我自己总结下来主要是:

        在问答任务中,比如像“ 谁是电影夏洛特烦恼的主角?”这样的问答任务,算法需要从大量的文本中找到相关的段落来回答问题。传统的方法像TF-IDFBM25,都主要依赖于词汇的匹配。如果问题中的词和答案中的词不一样,比如问题中提到“主角”,而答案中用的是“男主”这个词,这些传统方法就可能找不到正确的段落。

密集表示法(dense encoding)不是单纯看词是否匹配,而是把整个句子“压缩”成一个低维的向量(就是一串数字)。有类似意思的句子在这个“数字空间”里会靠得很近,所以即使用的是不同的词,也能通过这个方法找到正确的答案。

为了实现这个目的,作者提出了密集表示法(dense encoding)算法,这个算法用两个独立的编码器:一个把问题编码,另一个把段落编码。然后它们比较这些编码,找出最相似的段落。通过这种方式,系统能够理解问题和答案的相似性,即使它们用的是不同的词。

2. "Dense Passage Retrieval for Open-Domain Question Answering" (Karpukhin et al., 2020)

论文地址:https://arxiv.org/abs/2004.04906

代码地址:DPR/README.md at main · facebookresearch/DPR · GitHub

QA的任务,主要是通过大量文档来回答事实类问题。传统的QA系统往往较为复杂,由多个组件组成,而近年来阅读理解模型的进展简化了这一过程,形成了两阶段框架:

(1)首先由上下文检索器选择一小部分包含答案的段落,

(2)再由机器阅读器深入分析这些段落以确定正确答案。

虽然这种简化策略合理,但实际操作中往往会出现性能大幅下降,表明检索的效果需要进一步改进。

传统的检索方式如TF-IDF或BM25,依赖稀疏的高维向量表示问题和上下文,但密集表示(dense representations)则通过学习将问题和语境映射到更接近的向量空间,从而解决了例如同义词或句子重述等问题。文中举例说明密集检索系统更容易将“坏人”和“反派”等同义词联系起来,从而更有效地找到正确答案。

 F-IDF(Term Frequency-Inverse Document Frequency)是一种常用的文本处理技术,用于衡量单词在文档和整个文档集合(或语料库)中的重要性。它是一种基于统计的特征提取方法,广泛应用于文本挖掘、信息检索(如搜索引擎)和文本分类等任务中。TF-IDF由两个部分组成:词频(Term Frequency, TF)逆文档频率(Inverse Document Frequency, IDF)

1. 词频(TF, Term Frequency)

词频表示某个单词在单篇文档中出现的频率。其基本思想是,单词在文档中出现的次数越多,它对该文档的内容就越重要。词频的计算公式为:

其中:

  • t表示词汇,d 表示文档;
  • f(t,d) 是词 t在文档 d 中出现的次数;
  • n(d)是文档 d 中所有词的总数。

换句话说,TF 是词 t 在文档 d 中的相对频率。

2. 逆文档频率(IDF, Inverse Document Frequency)

逆文档频率衡量某个词在整个文档集合中的普遍程度。如果一个词在很多文档中都出现,那么它对区分文档的贡献较小(即信息量较低),反之,若一个词只在少量文档中出现,那么它对区分文档的贡献较大(即信息量较高)。IDF 的计算公式为:

其中:

  • t 是某个词;
  • D 是文档集合;
  • N 是文档集合中的文档总数;
  • ∣{d∈D:t∈d}∣ 是包含词 t 的文档数量。
  • IDF 的计算结果是,当一个词在大量文档中出现时,它的 IDF 值会较低,而当它在少数文档中出现时,IDF 值会较高。

3. 计算

将 TF 和 IDF 结合起来,得到单词的重要性评分 TF-IDF,其公式为:

 

通过这种方式,TF-IDF 同时考虑了词在文档中的频率(TF)和词在整个文档集合中的稀有性(IDF)。词频高且出现在少量文档中的词会获得较高的 TF-IDF 权重,而那些在许多文档中频繁出现的常见词(如“的”、“是”等)会被赋予较低的权重。

4. 的应用场景

  • 搜索引擎:TF-IDF 用于衡量文档和查询的相关性。查询中的关键词在文档中出现得越频繁,且这些词在整个文档集合中出现得越少,该文档与查询的相关性就越高。
  • 文本分类:在文本分类任务中,TF-IDF 可以用作文档的特征向量,帮助机器学习模型区分不同类别的文本。
  • 关键词提取:通过计算文档中各词的 TF-IDF 值,可以提取出最能代表文档主题的关键词。

BM25(Best Matching 25)是一种基于概率模型的文本检索算法,属于稀疏向量空间模型的一种改进形式。它被广泛应用于搜索引擎、信息检索系统中,用于衡量查询和文档之间的相关性。BM25是Okapi BM系列算法的一部分,BM25相较于传统的TF-IDF等方法,考虑了文档长度等因素,因此在许多检索任务中效果更好。

        该研究提出了一个简单的双编码器框架,依托BERT模型,并只使用问题和段落对进行训练,而无需额外的预训练。通过优化问题和相关段落向量的内积,研究中的Dense Passage Retriever(DPR)大幅优于BM25,并且在多个开放领域QA数据集上提高了端到端的QA准确率。

        主要贡献包括:证明了在合适的训练设置下,单纯微调问题和段落编码器就足以大幅超越BM25,并且额外的预训练可能并非必要。此外,他们验证了检索精度的提高能够直接提升QA的整体准确性。

2、Agent(智能代理)

概念: Agent(智能代理)是一个具有自主决策能力的AI系统,能够根据给定的目标或任务采取行动,并在与环境互动中做出最优决策。Agent 的关键在于它不仅仅是被动执行任务,而是能够主动判断如何处理任务,并根据环境做出相应的调整。

基本工作原理:
  1. 感知(Perception): Agent 首先通过接收外界输入(可能是文本、图像、语音等)“感知”当前环境和任务。例如,用户可能给了它一个问题或任务,它需要理解这个问题。

  2. 决策(Decision-making): 基于感知到的信息,Agent 会分析当前的环境并制定出如何完成任务的策略。这个过程涉及复杂的推理、规划和选择。它需要决定如何回答问题或如何操作某些系统。

  3. 行动(Action): 最后,Agent 会执行它的决策,并向用户提供答案或执行相关的任务操作。例如,它可以给你一个问题的答案,或者在应用程序中自动完成某个操作。

优点:
  • 自主性: Agent 能够自主行动,不需要每一步都由人类指挥。
  • 智能决策: 它可以基于环境中的变化实时调整决策,类似于下棋时实时考虑对手的策略。
  • 多任务处理: Agent 可以处理多个任务,并根据优先级和需求进行合理调度。
简单类比:

Agent 就像是一个“智能助理”,当你告诉它要做什么时,它不仅会完成任务,还会根据它的理解和环境来做出最优决策,甚至可以主动为你提供建议。

RAG+Agent 的组合

当我们把 RAG 和 Agent 结合起来时,RAG 负责为 Agent 提供更丰富的知识支持,而 Agent 则负责根据任务目标和用户需求做出决策和行动。

场景应用: 假设你有一个智能客服系统:

  • RAG 的角色: 当用户问问题时,RAG 会从公司文档或知识库中检索相关内容,并生成详细的回答。
  • Agent 的角色: Agent 会负责与用户对话,判断用户的意图,并决定调用 RAG 生成答案,或者帮助用户处理其他复杂任务(比如下订单、更新信息等)。

这种组合方式让系统既能回答问题,又能主动处理任务,提供了更智能、更灵活的用户体验。

总结

  • RAG 是一种将检索和生成相结合的技术,擅长生成基于真实信息的答案。
  • Agent 是一个自主行动的系统,能够根据任务需求做出决策。
  • RAG+Agent 的组合让系统既有知识深度,又能自主决策,形成强大的智能化解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值