【论文速读】Self-Rag框架,《Self-Rag: Self-reflective Retrieval augmented Generation》

关于前面的文章阅读《When to Retrieve: Teaching LLMs to Utilize Information Retrieval Effectively》,有网友问与Self-Rag有什么区别。
所以,大概看了一下Self-Rag这篇论文。
两篇文章的方法确实非常像,Self-Rag相对更加复杂一些。
When to Retrieve的文章中的模型被称为ADAPT-LLM模型。
两个模型,相同的地方,都是基于一个数据集,训练模型判断是否需要检索,数据集的生成有所不同:
1、ADAPT-LLM是基于开放域问答数据集,其中包含问题Q、相关上下文段落P和相应的答案A,根据模型的回答是否符合数据集的答案,来形成新的数据集。
2、Self-Rag:通过提示GPT-4生成反思token,然后将其知识提炼到内部集合中,创建了监督数据。

不同的地方,Self-Rag除了判断是否需要检索,还可以生成批评token来批评自身的输出,具体来说,Self-Rag除了有生成模型,还训练了一个批评模型,使用批评模型来评估每个生成的段落是否需要检索,如果需要,就检索相关的文档。然后,批评模型评估检索到的文档的相关性(IsRel),支持度(IsSup),以及整体效用(IsUse),通过这些评价选择最佳的检索。这是通过反思Token(Reflection Tokens)来完成的,反思Token(Reflection Tokens)的具体定义,见最后。

论文链接:https://ar5iv.labs.arxiv.org/html/2310.11511
这篇文章的标题是 “Self-Rag: Learning to Retrieve, Generate, and Critique through Self-Reflection”,由 Akari Asai、Zeqiu Wu、Yizhong Wang、Avirup Sil 和 Hannaneh Hajishirzi 五位作者共同撰写。
在这里插入图片描述

摘要:
尽管大型语言模型(LLMs)具有显著的能力,但它们仍然会产生包含事实错误的响应,这些错误仅依赖于它们所包含的参数知识。检索增强生成(RAG)是一种通过检索相关知识来增强LLMs输入的方法,这在知识密集型任务中减少了知识错误。然而,RAG方法会不加选择地检索和整合检索到的段落,无论检索是否必要或段落是否相关,这可能会减少LLMs的多功能性或导致生成质量低下。为了解决这些问题,文章介绍了一种新的框架——自反思检索增强生成(Self-Rag: Self-Reflective Retrieval-Augmented Generation),它通过按需检索和自我反思提高了LLMs生成的质量,包括事实准确性,同时不损害其多功能性。

解决的主要问题:

  1. 大型语言模型在生成响应时可能会产生事实错误。
  2. 传统的RAG方法在检索时存在不区分情况的检索和整合问题,可能会导致生成的回答质量下降。

方法:
Self-Rag框架训练一个任意的LLM,使其能够根据需求按需检索段落,并使用特殊的反思token来生成和反思检索到的段落以及自身的生成内容。反思token在推理阶段使LLM可控,使其能够根据不同任务需求调整行为。具体来说,Self-Rag通过以下步骤工作:

  • 确定是否需要通过检索来增强生成。
  • 如果需要,输出一个检索token,按需调用检索器模型。
  • 并行处理多个检索到的段落,评估它们的相关性,并生成相应的任务输出。
  • 生成批评token来批评自身的输出,并选择最佳输出。

文章的实验表明,Self-Rag在多个任务上的表现显著优于现有的最先进的LLMs和RAG模型,包括开放域问答、推理和长篇生成任务。此外,Self-Rag在提高长篇生成任务中的事实准确性和引用准确性方面取得了显著进步。

1 引言

尽管最新的大型语言模型(LLMs)在模型和数据规模上有所增加,但它们在事实错误方面仍然存在挑战。检索增强生成(RAG)方法通过向LLMs的输入中增加检索到的相关段落,减少了知识密集型任务中的事实错误。然而,这些方法可能会阻碍LLMs的多功能性,或者引入不必要的或离题的段落,导致生成质量低下,因为它们无论检索的事实基础是否有帮助,都会不加选择地检索段落。此外,输出并不能保证与检索到的相关段落一致,因为模型没有明确地被训练去利用和遵循提供段落中的事实。

这项工作引入了自反思检索增强生成(Self-Rag:Self-Reflective Retrieval-Augmented Generation),通过按需检索和自我反思,提高LLM生成质量,包括其事实准确性,而不会损害其多功能性。我们以端到端的方式训练任意的语言模型,让它学会在给定任务输入时反思自己的生成过程,通过生成任务输出和间歇性的特殊token(即反思token)。反思token被归类为检索和批评token,以分别指示检索的需求和其生成质量。

特别是,给定一个输入提示和前面的生成内容,Self-Rag首先确定是否需要通过检索段落来增强持续生成的内容。如果是这样,它将输出一个检索token,按需调用检索器模型(步骤1)。随后,Self-Rag同时处理多个检索到的段落,评估它们的相关性,然后生成相应的任务输出(步骤2)。然后它生成批评token来批评自身的输出,并在事实准确性和整体质量方面选择最佳输出(步骤3)。
在这里插入图片描述

这个过程与传统的RAG不同(图1左侧),后者在生成过程中始终检索固定数量的文档,无论是否需要检索(例如,底部图例示例不需要事实知识),并且从不重新审视生成质量。此外,Self-Rag为每个段落提供了引用,以及它自我评估的输出是否由段落支持,从而更容易进行事实验证。

Self-Rag通过将反思token统一为模型词汇表中的下一个token预测,训练任意的语言模型生成带有反思token的文本。

我们训练我们的生成模型LM在一个多样化的文本集合上,这些文本与反思token和检索到的段落交错在一起。受强化学习中奖励模型启发的反思token,是通过训练有素的批评模型离线插入到原始语料库中的。这消除了在训练期间托管批评模型的需要,减少了开销。

批评模型部分受到监督,是基于通过提示专有语言模型(例如,GPT-4;OpenAI 2023)收集的输入、输出和相应的反思token数据集进行的。虽然我们从使用控制token来启动和引导文本生成的研究中获得灵感,但我们训练的语言模型使用批评token在每个生成段之后评估自身的预测,作为生成输出的一个组成部分。

Self-Rag进一步实现了一个可定制的解码算法,以满足硬约束或软约束,这些约束由反思token预测定义。特别是,我们的推理时间算法使我们能够(1)灵活地调整不同下游应用的检索频率,(2)通过利用反思token,通过段级束搜索来定制模型的行为以满足用户偏好,使用反思token概率的加权线性组合作为段分数。

2 相关工作

检索增强生成(Retrieval-Augmented Generation, RAG)
检索增强生成(RAG)通过检索文本段落来扩展语言模型(LMs)的输入空间,这在微调后或与现成的LMs一起使用时,可以显著提高知识密集型任务的性能。最近的工作(Luo et al., 2023)通过在输入中添加固定数量的检索段落来对LM进行指令调优,或者联合训练检索器和LM,然后对任务数据集进行少量样本的微调(Izacard et al., 2022b)。虽然先前的工作通常只在开始时检索一次,但Jiang et al. (2023)提出在专有的大型语言模型之上为生成任务自适应地检索段落,而Schick et al. (2023)训练LM生成命名实体的API调用。然而,这些方法提高的任务性能通常以牺牲运行时效率(Mallen et al., 2023)、对不相关上下文的鲁棒性(Shi et al., 2023)和缺乏归因为代价(Liu et al., 2023a; Gao et al., 2023)。
我们介绍了一种方法,通过训练任意LM按需使用检索来处理多样化的指令跟随查询,并通过反思Token引导的控制生成来进一步提高生成质量和属性。

并发RAG工作
一些并发的RAG工作提出了新的训练或提示策略,以改进广泛采用的RAG方法。Lin et al. (2023)在两个步骤中对检索器和LM进行微调。虽然我们也在多样化的指令跟随数据集上训练我们的模型,但Self-Rag通过细粒度的自我反思实现了按需检索和选择最佳可能的模型输出,使其具有更广泛的适用性,更强大和可控性。
Yoran et al. (2023)使用自然语言推理模型,Xu et al. (2023)使用摘要模型,在将检索到的段落用于提示LM生成输出之前,过滤或压缩它们。Self-Rag通过自我反思并行处理段落,并在不依赖推理时的外部模型的情况下过滤掉不相关的段落。此外,自我反思机制还评估了模型输出质量的其他方面,包括事实准确性。
LATS (Zhou et al., 2023)提示现成的LM为问答任务搜索相关信息,并在LM生成的价值分数的指导下进行树搜索。虽然他们的价值函数仅指示每次生成的总体得分,但Self-Rag训练任意LM生成细粒度的自我反思和可定制的推理。

通过批评模型进行训练和生成
通过强化学习(例如,近端策略优化或PPO;Schulman等人2017)从人类反馈(RLHF)中训练LLM已被证明在使LLM与人类偏好相一致方面是有效的(Ouyang等人,2022)。吴等人(2023)介绍了具有多个奖励模型的细粒度RLHF。尽管我们的工作也研究了对检索和生成的细粒度批评,但我们在离线的任务示例上训练我们的目标LM,该任务示例使用了来自批评模型的反思Token,与RLHF相比,训练成本要低得多。此外,Self-Rag中的反思Token能够在推理时进行可控生成,而RLHF则专注于训练过程中的人类偏好对齐。其他作品使用通用控制Token来指导LM生成(Lu et al.,2022;Korbak et al.,2023),而Self-Rag使用反射Token来决定检索的需要并自我评估生成质量。谢等人(2023)提出了一种自评估引导的解码框架,但他们只关注具有一个评估维度(推理路径一致性)的推理任务,而不关注检索。最近关于LLM精化的工作(Dhuliawala et al.,2023;Madaan et al.,2022;Paul et al.,2021)促使模型迭代生成任务输出、自然语言反馈和精化任务输出,但以推理效率为代价。

3 Self-Rag: 学习检索、生成和批评

我们介绍了一种名为自反思检索增强生成(Self-Reflective Retrieval-Augmented Generation ,Self-Rag)的框架,如图1所示。Self-Rag是一个通过检索和自我反思提高LLM生成质量和事实性的框架,同时不会牺牲LLM原有的创造力和多功能性。我们的端到端训练允许语言模型ℳ,根据需要检索的段落生成文本,并学习生成特殊Token来批评输出。

这些反思Token(表1)表明了检索的需求或确认输出的相关性、支持性或完整性。相比之下,常见的 RAG 方法不分青红皂白地检索段落,而不能确保引用来源的完全支持。
在这里插入图片描述
表1: Self-Rag中使用的四种反思Token。每种类型使用几个token来表示其输出值。下面三行是三种批评Token,粗体文本表示最理想的批评token。x、y、d分别表示输入、输出和相关段落。

3.1 问题形式化和概述

形式上,给定输入x,训练模型ℳ顺序生成由多个段落组成的文本输出y,其中y=[y1,…,yT],yt表示第t个段落的一系列Token。在我们的实验中,我们把一个句子当作一个段落,但我们的框架适用于任何段落单位(即子句)。yt中的生成token包括原始词汇表中的文本以及反思token(表1)。

算法1 Self-Rag推理
在这里插入图片描述

推理概览:图1和算法1展示了Self-Rag在推理时的概览。对于每个x和前面的已经生成的y,模型解码一个检索token以评估检索的效用。如果不需要检索,模型像标准LM一样预测下一个输出段落。如果需要检索,模型生成:一个批评token来评估检索段落的相关性,下一个响应段落,以及一个批评token来评估响应段落中的信息是否由段落支持。最后,一个新的批评token评估响应的整体效用。

为了生成每个段,Self-Rag 并行处理多个段落,并使用自己生成的反射token对生成的任务输出强制实施软约束(第 3.3 节)或硬控制(算法 1)。 例如,在图 1(右)中,检索到的段落𝑑1在第一个时间步骤中被选中,因为𝑑2不提供直接证据、𝑑3输出仅部分支持,而𝑑1完全受支持。

训练概览:Self-Rag通过将反思token统一为模型词汇表中的下一个token预测,使任意LM能够生成带有反思token的文本。具体来说,我们在包含反思token的精选语料库上训练生成模型ℳ,使用标准的LM目标,使ℳ能够自己在推理时生成反思token,而无需依赖批评模型。

3.2 Self-Rag训练

这里,我们描述了两个模型的监督数据收集和训练,即批评模型ℂ(第3.2.1节)和生成器ℳ(第3.2.2节)。

3.2.1 训练批评模型

批评模型的数据收集
手动为每个段落注释反思token成本高昂(Wu et al., 2023)。像GPT-4这样的最先进LLM可以有效地用于生成此类反馈(Liu et al., 2023b)。然而,依赖这样的专有LM可能会增加API成本并降低可复制性(Chen et al., 2023)。我们通过提示GPT-4生成反思token,然后将其知识提炼到内部ℂ中,创建了监督数据。

对于每组反思token,我们从原始训练数据中随机采样实例:{Xs​a​m​p​l​e,Ys​a​m​p​l​e}∼{X,Y}。由于不同的反思token组有自己的定义和输入,如表1所示,我们对它们使用不同的指令提示。这里,我们以检索为例。我们用类型特定的指令提示GPT-4(“给定一个指令,判断是否查找一些来自网络的外部文档有助于生成更好的响应。”),然后是一些示例I,原始任务输入x和输出y,以预测适当的反思token作为文本:p(r|I,x,y)。

手动评估显示,GPT-4反思token预测与人类评估高度一致。我们为每种类型收集了4k-20k的监督训练数据,并将它们结合起来形成训练数据ℂ。

批评家学习
在收集到训练数据Dcritic之后,使用预训练的LM初始化ℂ,并使用标准的有条件的语言建模目标对其进行训练,最大化可能性见公式1:

在这里插入图片描述

虽然初始模型可以是任何预训练的LM,我们使用与生成器LM相同的模型(即Llama 2-7B;Touvron et al. 2023)来初始化ℂ。批评模型在大多数反思token类别上与GPT-4基础预测的一致性高于90%。
在这里插入图片描述

3.2.2 训练生成器模型

数据收集生成器。
给定输入输出对(x,y),我们使用检索和批评模型增强原始输出y,创建精确模拟Self-Rag推理过程的监督数据(第3.1节)。对于每个段落yt∈y,我们运行ℂ评估是否需要额外的段落来增强生成。

如果需要检索,检索特殊token Retrieve=YES被添加,并且ℛ检索K个最高段落,D。对于每个段落,ℂ进一步评估该段落是否相关,并预测IsRel。

如果一个段落相关,ℂ进一步评估该段落是否支持模型生成,并预测IsSup。批评token IsRel和IsSup被添加到检索到的段落或生成之后。

在输出的末尾,y(或yT),ℂ预测整体效用token IsUse,并且带有反思token和原始输入对的增强输出被添加到Dgen中。见图2中的示例训练数据。
在这里插入图片描述

生成器学习通过在带有反思token的精选语料库Dgen上训练,训练生成器模型ℳ的标准下一个token目标:

在这里插入图片描述

与ℂ训练(公式1)不同,ℳ学习预测目标输出以及反思token。在训练期间,我们为损失计算遮蔽检索到的文本块(在图2中被< p > and < /p >包围),并将原始词汇表V扩展为包含反思token的集合{Critique,Retrieve}。

3.3 Self-Rag 推理
生成反射token以自我评估其自身输出使得 Self-Rag 在推理阶段可控,使其能够根据不同任务需求调整其行为。

对于任务要求事实准确性(Min et al., 2023),我们的目标是使模型更频繁地检索文本来确保输出与可用证据紧密对齐。相反,在更开放式的任务中,比如撰写个人经历文章,重点转移到检索较少并优先考虑整体创造力或实用性得分。

在这一部分,我们描述了在推理过程中实施控制以满足这些不同目标的方法。

自适应检索与阈值
Self-Rag 动态决定何时通过预测 “Retrieve” 来检索文本段落。另外,模型框架允许设置阈值。具体来说,如果在 “Retrieve” 中生成的 “Yes” token的概率标准化后超过指定阈值,就会触发检索。

基于批评token的树形解码
在每个段落步骤 t,当需要检索时,无论基于硬条件还是软条件,ℛ(检索器)检索 K 个文档,并且生成器 ℳ(LM)并行处理每个段落,并输出 K 个不同的续写候选项。

我们对每个时间戳 t 进行段落级别的束搜索(束大小=B),并在每个时间戳 t 获取每个段落的前 B 个续写。最后,在生成结束时返回最佳序列。每个段落 yt 的分数会根据 “IsRel”、“IsSup” 和 “IsUse” 更新。

例如,在图 1(右)中,检索到的段落 d1 在第一时间步骤被选中,因为 d2 没有提供直接证据(“IsRel” 是无关的),而 d3 的输出只得到了部分支持,而 d1 得到了完全支持。

训练概述
Self-Rag 通过将反射token统一为模型词汇表中的下一个token预测,使任意 LM 生成带有反射token的文本。具体来说,我们在包含检索到的段落和由批评模型预测的反射token的策划语料库上训练生成模型 ℳ。

训练 ℳ 的过程涉及使用标准的语言模型目标函数,即最大化下一个token的预测概率。在训练期间,我们对检索到的文本块进行掩蔽,以便在损失计算时不包括它们,并扩展原始词汇表 ℒ 以包含一组反射token {Critique, Retrieve}。

反思Token(Reflection Tokens)的定义:

检索需求(Retrieval-on-demand):
Retrieve: 给定输入和前一步生成的内容(如果适用),语言模型(LM)确定继续生成是否需要事实基础支撑。
No 表示检索是不必要的,因为序列不需要事实基础支撑,或者可能不会通过知识检索得到增强。
Yes 表示检索是必要的。
Continue to use evidence 表示模型可以继续使用之前检索到的证据。例如,一个段落可能包含丰富的事实信息,因此Self-Rag会基于该段落生成多个段落。

相关性(Relevance):
IsRel: 检索到的知识可能并不总是与输入相关。这个方面表明证据是否提供了有用的信息(Relevant)或者没有(Irrelevant)。
支持度(Support):

IsSup: 归因(Attribution)是输出是否完全由特定证据支持的概念。
这个方面根据证据支持的程度,评价输出信息的相关性,分为三个等级:Fully supported(完全支持)、Partially supported(部分支持)和No support / Contradictory(无支持/相反)。

有用性(Usefulness):
IsUse: 根据Liu等人(2023a)的定义,我们将感知的效用性定义为响应是否是查询的有帮助和信息丰富的答案,无论它实际上是否真实。
对于有用性,我们使用五级评估(1是最低,5是最高)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/673266.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

图数据库Neo4j——Neo4j简介、数据结构 Docker版本的部署安装 Cypher语句的入门

前言 MySQL是一种开源的关系型数据库管理系统&#xff0c;使用SQL作为其查询语言&#xff0c;常见的关系型数据库有MySQL、Oracle、SQL Server、PostgreSQL等。相关博客文章如下&#xff1a; 【合集】MySQL的入门进阶强化——从 普通人 到 超级赛亚人 的 华丽转身PostgreSQL数…

计算机系统结构之流水

一、标量流水线的主要性能 吞吐率是流水线单位时间里能流出的任务数或结果数(最大吞吐率&#xff1a;单位时间内计算机所能处理的最多指令条数)。 流水线中经过时间最长的子过程成为瓶颈子过程。最大吞吐率取决于瓶颈段的时间。 实际吞吐率&#xff1a; 加速比&#xff1a; …

教你搞一个比较简单的计时和进度条装饰器 (多线程进阶版)

简单的计时和进度条装饰器 - 多线程进阶版 这个进阶版有什么&#xff1f;话不多说上代码效果图 上一篇关于装饰器的Blog 这个进阶版有什么&#xff1f; 在上一个装饰器工作时&#xff0c;跑了20秒后就停止了。如果运行的函数跑了60秒&#xff0c;后面的40秒我们是只能等到结束…

CAD二次开发(7)- 实现Ribbon选项卡,面板,功能按钮的添加

1. 创建工程 2. 需要引入的依赖 如图&#xff0c;去掉依赖复制到本地 3. 代码实现 RibbonTool.cs 实现添加Ribbon选项卡&#xff0c;添加面板&#xff0c;以及给面板添加下拉组合按钮。 using Autodesk.Windows; using System; using System.Collections.Generic; using S…

悬剑武器库5.04版

工具介绍 悬剑5 基于“悬剑网盘”精选工具集悬剑5“飞廉”云武器库制作。 操作系统&#xff1a;Windows 10 专业版 锁屏密码&#xff1a;secquan.org 解压密码: 圈子社区secquan.org 镜像大小&#xff1a;33.1GB 系统占用空间63.0 GB 镜像导入 下载镜像&#xff0c;文末…

WordPress博客主题触屏版社区源码

下载地址&#xff1a;WordPress博客主题触屏版社区源码

【Unity之FGUI】黑神章Fairy GUI控件详解

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;就业…

python采集汽车价格数据

python采集汽车价格数据 一、项目简介二、完整代码一、项目简介 本次数据采集的目标是车主之家汽车价格数据,采集的流程包括寻找数据接口、发送请求获取响应、解析数据和持久化存储,先来看一下数据情况,完整代码附后: 二、完整代码 #输入请求页面url #返回html文档 imp…

6.3 Go 结构体(Struct)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

普华永道信任危机:上市公司解约风波与反思

在全球会计业界的星空中&#xff0c;普华永道无疑是那颗最为耀眼的星之一。然而&#xff0c;近日这颗星却遭遇了前所未有的信任危机。这家大名鼎鼎的四大会计师事务所之一&#xff0c;近期陷入了上市公司解约的风波之中&#xff0c;其声誉与地位正面临严峻挑战。 就在昨晚&…

Word2Vec模型的引入介绍与相关概念

一 、Word2Vec模型的背景引入 1.1 One-hot模型 One-hot模型是是用N位的状态寄存器对N个状态进行编码 如下所示&#xff0c;是有4个样本&#xff0c;每个样本都有三个特征&#xff0c;特征1表示当前样本的性别。 我们喂给算法怎么样的数据&#xff0c;算法就会给我们一个怎么…

学习笔记——IP地址网络协议——网络层(IP)协议

一、网络层(IP)协议 网络层(被称为IP层)但网络层协议并不只是IP协议&#xff0c;还包括ICMP(Internet Control Message Protocol)协议、IPX(Internet Packet Exchange)协议等。 1、IP协议 IP(Internet Protocol)本身是一个协议文件的名称&#xff0c;该协议文件的内容非常少&…

使用python统计word文档页数

使用python统计word文档页数 介绍效果代码 介绍 使用python统计word文档的页数 效果 代码 import os import comtypes.clientdef get_word_page_count(docx_path):try:# Initialize the COM objectword comtypes.client.CreateObject(Word.Application)word.Visible False…

【Qt】探索Qt绘图世界:自定义控件与视觉效果的全面指南

文章目录 前言&#xff1a;1. 绘图基本概念2. 绘制各种形状3. 绘制文字&#xff08;显示文字&#xff09;、设置画笔4. 画刷5. 绘制图片6. 特殊的绘图设备总结&#xff1a; 前言&#xff1a; 在软件开发中&#xff0c;图形用户界面&#xff08;GUI&#xff09;的设计是至关重要…

【面试题】CAP理论、BASE理论及其注册中心选型

1.CAP理论 CAP&#xff1a;指的是在一个分布式系统中&#xff0c;Consistency&#xff08;一致性&#xff09;、Availability&#xff08;可用性&#xff09;、Partition Tolerance&#xff08;分区容错性&#xff09;&#xff0c;三者不可同时获得 一致性&#xff08;C&#x…

成功解决“IndexError: pop index out of range”错误的全面指南

成功解决“IndexError: pop index out of range”错误的全面指南 引言 在Python编程中&#xff0c;处理列表&#xff08;list&#xff09;、双端队列&#xff08;deque&#xff09;或其他可迭代对象时&#xff0c;我们经常使用pop()方法来移除并返回指定索引处的元素。然而&am…

图解 Python 编程(10) | 错误与异常处理

&#x1f31e;欢迎来到Python的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f4c6;首发时间&#xff1a;&#x1f339;2024年6月2日&…

图解 IPv6 地址范围

1、 IPv6 多播地址范围 2、1 - 接口本地&#xff1c;2 - 链路本地&#xff1c;5 - 站点本地&#xff1c;8 - 组织本地&#xff1c;E - 全局 3、Well-Known Multicast Addresses

TiDB-从0到1-部署篇

TiDB从0到1系列 TiDB-从0到1-体系结构TiDB-从0到1-分布式存储TiDB-从0到1-分布式事务TiDB-从0到1-MVCCTiDB-从0到1-部署篇 一、TiUP TiUP是TiDB4.0版本引入的集群运维工具&#xff0c;通过TiUP可以进行TiDB的日常运维工作&#xff0c;包括部署、启动、关闭、销毁、弹性扩缩容…

U-boot、linux内核、根文件系统移植以及程序

终于这几天把这个移植的流程过了一遍&#xff0c;所以特此回来总结。 U-boot移植 首先是U-boot移植。Linux 系统要启动就必须需要一个 bootloader 程序&#xff0c;也就说芯片上电以后先运行一段bootloader 程序。这段bootloader程序会先初始化DDR等外设&#xff0c;然后将Li…