[论文笔记]Corrective Retrieval Augmented Generation

news2024/11/28 6:42:24

引言

今天带来论文Corrective Retrieval Augmented Generation的笔记,这是一篇优化RAG的工作。

大型语言模型(LLMs) inevitable(不可避免)会出现幻觉,因为生成的文本的准确性不能仅仅由其参数化知识来确保。尽管检索增强生成(RAG)是LLMs的一个可行补充,但它严重依赖于检索文档的相关性,这引发了如果检索出现问题模型会如何行为的担忧。

作者提出了纠正式检索增强生成(CRAG)来提高生成的鲁棒性。具体来说,设计了一个轻量级的检索评估器,用于评估针对查询的检索文档的整体质量,根据返回的置信度程度来触发不同的知识检索操作。由于从固定和有限的语料库中检索只能返回次优的文档,因此利用大规模网络搜索作为扩展来增强检索结果。此外,还设计了一个分解-重组算法,用于对检索文档进行选择性关注关键信息并过滤掉其中的无关信息。CRAG是即插即用的,可以与各种基于RAG的方法无缝耦合。

总体介绍

​ 先前的研究引入了检索技术来整合相关知识并增强生成,例如检索增强生成(RAG)。在这个框架中,模型的输入通过在外部知识语料库中检索到的相关文档被前置以增强(RAG)。虽然RAG作为LLMs的一个可行补充,但其有效性取决于检索文档的相关性和准确性。

image-20240512145455325

生成对检索知识的严重依赖引发了关于模型在检索失败或返回不准确结果的情况下的行为和表现的重大担忧。如图1所示,低质量的检索器容易引入大量无关信息,阻碍模型获取准确知识,可能误导其产生幻觉。然而,大多数传统的RAG方法都会不加区别地整合检索到的文档,无论这些文档是否相关。此外,当前方法大多将完整文档视为参考知识,在检索和利用过程中都如此。但这些检索文档中的文本中有相当一部分通常对生成没有帮助,不应被平等地参考和纳入到RAG中。

鉴于上述问题,本篇工作特别研究了检索器返回不准确结果的情况。提出了一种名为纠正式检索增强生成(Corrective Retrieval-Augmented Generation,CRAG)的方法,用于自我纠正检索结果并改善利用文档来增强生成的过程。

设计了一个轻量级的检索评估器,用于评估查询的检索文档的整体质量。这在RAG中扮演着重要角色,通过审查和评估检索文档的相关性和可靠性,为信息丰富的生成做出贡献。根据置信度来量化,基于这个置信度可以触发{正确,不正确,模糊}等不同的知识检索操作。

对于后两种操作,整合了大规模网络搜索作为一种战略性扩展,因为从静态和有限的语料库中检索只能以范围和多样性方面返回次优文档。这种增强实施旨在扩展检索信息的广度,利用网络的广阔和动态性来补充和丰富最初获得的文档。

此外,为了消除检索文档中包含的对RAG无用的冗余上下文,一个分解-重组算法在整个检索和利用过程中被精心打造。这一算法确保了检索信息的优化,优化了关键见解的提取,并最小化了不必要元素的参与,从而增强了检索数据的利用。

本篇工作的贡献有三个方面:

  1. 本文研究检索器返回不准确结果的情形,首次尝试为RAG设计纠正策略以提高其鲁棒性。
  2. 提出了一种即插即用的方法称为CRAG,旨在提高自动纠正能力和有效利用检索文档的能力。
  3. 实验证明CRAG适用于基于RAG的方法,对短篇和长篇生成任务具有很好的泛化性能。

相关工作

幻觉 虽然LLM表现出了理解指令和生成流畅语言文本的令人印象深刻的能力,但LLM仍然面临的最严重问题之一是幻觉。许多研究发现,激活过时信息或不正确知识会严重导致幻觉。大规模不受监管的训练数据收集、高质量采样数据比例低、输入空间中数据分配不完美等现实因素都会影响LLM,并恶化问题。因此,显而易见,缺乏准确和具体的知识会导致误导甚至不准确的生成,这将严重损害用户在大多数实际应用中的体验。

检索增强生成 RAG被认为是解决上述问题的一种有用方法,它通过从特定语料库(如维基百科)提供检索文档来增强生成式LLM的输入问题。通常情况下,它为生成式LLM提供了来自特定语料库的额外知识来源,这极大地提高了LLM在各种任务中的性能,特别是在知识密集型任务中。先前的研究通常在预先训练语言模型的响应生成前端使用稀疏或密集检索器,以专门针对检索提供包含相关知识的文档。尽管如此,上述方法通常忽略了一个问题,即如果检索出现问题怎么办?由于引入检索的目的是确保生成式LLM能够获取相关和准确的知识。如果检索的文档与问题无关,检索系统甚至可能加剧LLM的事实错误。

高级RAG 近年来开发了许多从原始RAG发展而来的高级方法。考虑到对一些查询来说检索有时是不必要的,相反,在许多情况下,不经过检索的响应甚至更准确。Self-RAG1提出了有选择性地检索知识,并引入了一个评论模型来决定是否检索。Yoran等人设计了一个NLI模型来识别无关上下文并改善鲁棒性。SAIL在指令下调整,以在指令前插入检索文档。而Toolformer则是针对调用维基百科等API进行预训练的。此外,在一些长文本生成任务中,需要外部知识多次,需要考虑何时检索。姜等人2主动预期未来内容,并决定长篇生成中何时以及检索什么。

任务公式化

在之前的工作的基础上,给定输入 X \mathcal X X和包含大量知识文档的可访问语料库 C = { d 1 , . . . , d N } \mathcal C = \{d_1,...,d_N\} C={d1,...,dN},系统预计生成输出 Y \mathcal Y Y。整个框架通常分为检索器 R \mathcal R R和生成器 G \mathcal G G。检索器 R \mathcal R R旨在从语料库 C \mathcal C C中检索与输入 X \mathcal X X相关的前K个文档 D = { d r 1 , . . . , d r k } \mathcal D = \{d_{r1},...,d_{rk}\} D={dr1,...,drk}。基于输入 X \mathcal X X和检索结果 D \mathcal D D,生成器 G \mathcal G G负责生成输出 Y \mathcal Y Y​​。这个框架可以表述为:
P ( Y ∣ X ) = P ( D ∣ X ) P ( Y , D ∣ X ) (1) P(\mathcal Y|\mathcal X ) = P(\mathcal D|\mathcal X )P(\mathcal Y, \mathcal D|\mathcal X ) \tag 1 P(YX)=P(DX)P(Y,DX)(1)

​ 这表明检索器和生成器是无缝耦合的,展示了低风险容忍度。任何未成功的检索都可能导致不令人满意的响应,而不管生成器的出色能力如何。这正是本篇工作关注的重点,即改善生成的鲁棒性。

CRAG

模型推理概览

image-20240512151823690

image-20240512151917095

图2和算法1展示了CRAG在推理过程中的概述,该模型设计了纠正策略来改善生成的鲁棒性。给定一个输入查询和来自任何检索器的检索文档,构建了一个轻量级的检索评估器,用于估计检索文档与输入查询的相关性分数。相关性分数被量化为三个置信度度量,并触发相应的操作:{正确,错误,模糊}

如果触发了“正确”操作,则检索到的文档将被精细化为更精确的知识片段。这种精炼操作涉及知识分解、过滤和重组。如果触发了“错误”操作,则检索到的文档将被丢弃。相反,将采用网络搜索,并被视为用于更正的补充知识来源。最终,当无法自信地做出正确或错误的判断时,触发一种软性平衡的“模糊”操作,结合了两者。在优化检索结果后,可以采用任意的生成模型。

检索评估器

在使用检索到的文档之前,自然会想知道这些文档是否准确,这一点非常重要,因为通过这种方式可以识别出不相关或误导性的信息。检索评估器的准确性在塑造整体系统性能方面无疑起着关键作用,因为它影响了后续流程的结果。我们的目标是在检索到的文档不相关时进行纠正。具体来说,作者采用T5-large来初始化检索评估器并进行微调。可以从现有数据集中收集用于微调评估器的相关性信号。有关此微调步骤的更多细节,请参考附录B.2。通常情况下,每个问题会检索到约10个文档。将问题与每个单独的文档连接作为输入,评估器分别为每个问题-文档对预测相关性分数。祖宗还尝试促使ChatGPT识别检索相关性以进行比较,但其表现不佳。基于这些计算的相关性分数,将最终确定检索是否与动作触发相关。与Self-RAG的批评模型和经过指令调整的LLaMA-2 (7B)相比,CRAG中设计的评估器表现出非常轻量级的优势(0.77B)。

动作触发

为了根据需要纠正不相关的文档并对目标文档进行精细化处理,应当有针对性地执行动作。根据每个检索到的文档的上述置信度评分,设计了三种类型的动作,并相应地触发,其中设置了上限和下限阈值。如果置信度评分高于上限阈值,则将检索到的文档标识为正确,如果低于下限阈值,则标识为错误。否则,执行模糊操作。每个检索到的文档都会单独进行处理,最终集成起来。

**正确 **这里,当至少一个检索到的文档的置信度评分高于上限阈值时,将假定检索是正确的。如果确实如此,这意味着在检索结果中存在相关的文档。即使可以找到相关的文档,在这些文档中不可避免地会有一些嘈杂的知识片段。为了提取出这些文档中的最关键知识片段,进一步设计了一种知识精炼方法。

错误 另外,当所有检索到的文档的置信度评分都低于下限阈值时,将假设检索是错误的。这表明所有检索到的文档都被认为是不相关的,对生成没有帮助。因此,我们需要寻找新的知识来源进行更正。在这里,介绍了从网络上搜索的网络搜索。这种更正性的动作有助于克服无法参考可靠知识的尴尬挑战。

模糊 除了上述两种情况外,其余情况将被分配给一种中间的模糊动作。由于检索评估器对其判断不太自信,因此将正确和错误中处理的两种类型的知识相结合互补。实施这样一种缓和和柔性策略可以显著有助于增强系统的鲁棒性和弹性,促进更灵活的框架以实现最佳性能。

知识精炼

针对检索到的相关文档,设计了一种分解-重组知识精炼方法,以进一步提取其中最关键的知识片段。首先,通过启发式规则将每个检索到的文档分割成细粒度的知识片段,更多细节请参考附录B.2。然后,利用前面介绍的微调的检索评估器来计算每个知识片段的相关性分数。根据这些分数,将不相关的知识片段进行过滤,而将相关的知识片段按顺序重新组合,即内部知识。

网络搜索

如果认为检索到的结果都是不相关的,那么寻找补充的外部知识就变得极为重要。由于从静态和有限的语料库中检索只能返回范围和多样性方面的次优文档,因此将大规模网络搜索整合作为RAG的战略扩展至关重要。具体而言,ChatGPT将输入重写为由关键词组成的查询,以模拟搜索引擎的日常使用。重写的提示见附录A。在CRAG中,采用公开且可访问的商业网络搜索API为每个查询生成一系列URL链接。此外,我们利用这些URL链接浏览网页,转录其内容,并使用与前面相同的知识精炼方法提取相关的网页知识,即外部知识。

实验

消融研究

image-20240512152902959

每个触发动作的影响 为了进一步验证检索评估器中设计的触发动作的有效性,在提出的方法中进行了移除每个单独动作的消融测试,如表2所示。在PopQA数据集上进行了评估,以展示准确性方面的性能变化。具体来说,当移除动作Correct或Incorrect时,将其合并为Ambiguous,以便原本会触发Correct或Incorrect的比例将触发Ambiguous。另一方面,当移除动作Ambiguous时,只有一个阈值可以清楚地触发所有输入查询为Correct或Incorrect。从这些结果可以看出,无论移除哪个动作,性能都会下降,说明每个动作都有助于提高生成的鲁棒性。

image-20240512153015086

每个知识利用操作的影响 表3说明了如果移除一个关键的知识利用操作,性能会发生怎样的变化。在PopQA数据集上,通过分别移除文档精炼、搜索查询重写和外部知识选择这些知识利用操作,进行了准确性方面的评估。移除文档精炼意味着原始检索到的文档直接馈送给后续生成器,类似于大多数现有工作。此外,移除搜索查询重写意味着在知识搜索过程中问题不会被重写成由关键词组成的查询。最终,移除知识选择意味着将所有网页搜索内容都视为外部知识,没有进行筛选。这些结果表明,无论移除哪个知识利用操作,最终系统的性能都会下降,揭示了每个知识利用操作对提高知识利用的贡献。

检索评估器的准确性

image-20240512153120625

检索评估器的质量显著影响整个系统的性能。在给定文档检索结果的情况下,评估检索评估器是否能准确确定这些结果的整体质量。在PopQA数据集上评估了我们的检索评估器和商用LLM ChatGPT对文档检索结果的评估准确性,结果如表4所示。实验中使用的ChatGPT、ChatGPT-CoT和ChatGPT-few-shot的提示可参考附录A。结果显示,基于轻量级T5的检索评估器在所有设置中明显优于竞争对手ChatGPT。

检索性能的鲁棒性

image-20240512153216403

为进一步验证所提方法对检索性能的鲁棒性,研究了在不同检索性能条件下生成性能的变化。有意从准确的检索结果中随机删除一部分,模拟低质量的检索器,并评估性能的变化。图3展示了Self-RAG和Self-CRAG在PopQA数据集上的性能变化。可以看出,随着检索性能下降,Self-RAG和Self-CRAG的生成性能也下降,表明生成器在很大程度上依赖于检索器的质量。此外,随着检索性能的下降,Self-CRAG的生成性能相对于Self-RAG的下降幅度更小。这些结果暗示了Self-CRAG在增强对检索性能的鲁棒性方面优于Self-RAG。

结论

本篇工作研究了一个问题,即当检索出现错误时,基于RAG的方法会面临挑战,从而向生成式语言模型呈现不准确和误导性的知识。提出了 CRAG方法来提高生成的鲁棒性。本质上,一个轻量级的检索评估器用于有选择地评估和触发三种知识检索动作。通过进一步利用网络搜索和优化知识利用,CRAG显著提高了自动自我校正和检索文档的高效利用能力。实验证明其适用于基于RAG的方法,并且在短文和长文生成任务中具有泛化能力。

限制

虽然作者主要提出了从纠正的角度改进RAG框架,但如何更准确、有效地检测并纠正错误的知识仍需要进一步研究。尽管CRAG可以与各种基于RAG的方法无缝结合,但微调检索评估器是不可避免的。此外,网络搜索引入的潜在偏见也值得关注。互联网资源的质量差异可能显著,未经充分考虑地整合这些数据可能会向生成的输出引入噪音或误导性信息。

附录

A 任务提示

生成知识关键词作为网络搜索查询的提示如下:

Extract at most three keywords separated by comma from
the following dialogues and questions as queries for the
web search, including topic background within dialogues
and main intent within questions.

question: What is Henry Feilden’s occupation?
query: Henry Feilden, occupation

question: In what city was Billy Carlson born?
query: city, Billy Carlson, born

question: What is the religion of John Gwynn?
query: religion of John Gwynn

question: What sport does Kiribati men’s national
basketball team play?

query: sport, Kiribati men’s national basketball team play
question: [question]
query:

直接指导ChatGPT3.5作为评估器的提示:

Given a question, does the following document have exact
information to answer the question? Answer yes or no
only.
Question: [question]
Document: [document]

增加COT指导ChatGPT3.5作为评估器的提示:

Given a question, does the following document have exact
information to answer the question?
Question: [question]
Document: [document]
Think Step by step, and answer with yes or no only

指导GPT-3.5 Turbo作为评估器的few-shot提示:

Given a question, does the following document have exact
information to answer the question? Answer yes or no
only.

Question: In what city was Abraham Raimbach born?
Document: Bancroft was born on November 25, 1839
in New Ipswich, New Hampshire to James Bancroft and
Sarah Kimball. At an early age he was cared for by Mr.
and Mrs. Patch of Ashby, Massachusetts, the neighboring
town. While not legally adopted, they named him Cecil
Franklin Patch Bancroft, adding Franklin Patch after the
son Mr. and Mrs. Patch had who recently died. He
attended public schools in Ashby as well as the Appleton
Academy in New Ipswich. He entered Dartmouth College
in 1856 at the age of sixteen and graduated in 1860 near
the top of his class. Bancroft continued his education as he
began his career in teaching. He took classes at the Union
Theological Seminary in New York City during the 1864-
65 academic year. While there he was a member of the
United States Christian Commission, traveling to support
soldiers during the Civil War. He then transferred to the
Andover Theological Seminary where he would graduate
in 1867.
Answer: No.

Question: In what country is Wilcza Jama, Sokółka
County?
Document: Wilcza Jama is a village in the administrative
district of Gmina Sokółka, within Sokółka County,
Podlaskie Voivodeship, in north-eastern Poland, close to
the border with Belarus.
Answer: Yes.

Question: What sport does 2004 Legg Mason Tennis
Classic play?
Document: The 2004 Legg Mason Tenis Classic was the
36th edition of this tennis tournament and was played
on outdoor hard courts. The tournament was part of the
International Series of the 2004 ATP Tour. It was held at
the William H.G. FitzGerald Tennis Center in Washington,
D.C. from August 16 through August 22, 2004.
Answer: Yes.

Question: Who is the author of Skin?
Document: The Skin We’re In: A Year of Black Resistance
and Power is a book by Desmond Cole published by
Doubleday Canada in 2020. The Skin We’re In describes
the struggle against racism in Canada during the year 2017,
chronicling Cole’s role as an anti-racist activist and the
impact of systemic racism in Canadian society. Among
the events it discusses are the aftermath of the assault of
Dafonte Miller in late 2016 and Canada 150. The work
argues that Canada is not immune to the anti-Black racism
that characterizes American society. Due to an error by the
publisher, the initial printing of the book’s cover did not
include word Blackïn the subtitle. The mistake was later ¨
corrected. The book won the Toronto Book Award for 2020.
In 2021, the book was nominated for the Shaughnessy
Cohen Prize for Political Writing.
Answer: No.

Question: [question]
Document: [document]
Answer:

实验

B.2 实验细节

检索评估器: 基于轻量级的T5-large预训练模型对检索评估器进行了微调。其参数尺寸比大多数当前的大型语言模型(LLM)要小。为了确保所有实验结果与Self-RAG可比,Self-RAG通过Contriever提供的相同检索结果也被用于实验中。用于微调评估器的相关信号可以从现有数据集中收集。例如,PopQA为每个问题提供了来自维基百科的真实主题标题。我们可以利用这个信息跟踪一个不完全相关但质量较高的段落。我们将其用作微调检索评估器的相关标签。另一方面,负样本采用随机抽样,使用的是Self-RAG提供的版本。具体来说,原始的PopQA数据集包含14000个样本,其中1399个样本用于遵循Self-RAG的测试,其余的用于微调以避免信息泄漏。另外,微调后的评估器在推理过程中被转移和利用于生物、Pub和ARC数据集。正样本的标签设为 1 1 1,负样本的标签为 − 1 -1 1。在推理阶段,评估器对每个文档的相关性进行从 − 1 -1 1 1 1 1的打分。触发三种动作的两个置信阈值是经验性地设置的。具体来说,在PopQA中设置为 ( 0.59 , − 0.99 ) (0.59,-0.99) (0.59,0.99),在PubQA和ArcChallenge中设置为 ( 0.5 , − 0.91 ) (0.5,-0.91) (0.5,0.91),在Biography中设置为 ( 0.95 , − 0.91 ) (0.95,-0.91) (0.95,0.91)

内部知识: 为了获得细致的检索结果,将检索结果分段呈现。如果一个检索结果只有一两个句子那么它被视为独立的段落,否则,检索文档需要被分割成更小的单元,通常包含几个句子,根据总长度。该规模被假定包含一个独立的信息片段,过滤是基于这些段落的。重新采用评估器来进行知识片段的过滤,top-k设置为5,过滤阈值为-0.5。

外部知识: 采用Google搜索API搜索相关URL,top-k设置为5,并优先添加来自维基百科的页面。搜索的网页通常以HTML文件形式展示,内容使用特殊标记如<p></p>分割。因此,不需要额外的分段如知识细化,相应的知识段落可直接由评估器选择,就如内部知识一般。

生成器: 由于CRAG是一种即插即用的方法,所有能用于RAG中的生成模型也适用于该方法。为了与基线保持一致以进行比较,采用了LLaMA2 用于生成。首先引入了来自huggingface的LLaMA2-hf7b用于生成响应。由于Self-RAG微调了LLaMA2并在多个任务上达到了最新的最佳性能,作者进一步利用了推出的模型SelfRAG-LLaMA2-7b作为新的生成器,以便与他们的工作保持一致。

Self-CRAG: 为了证明作者的即插即用方法可以被用在其他同时进行的研究中,专门设计了将CRAG插入到Self-RAG框架中,并将其命名为Self-CRAG。Self-RAG是一个先进的RAG方法,引入了一个评论模型来决定是否检索以及哪个检索到的文档用于生成。它满足了决定触发哪一个动作的需求,因此用处理过的内部知识替换Self-RAG中的检索项作为正确、用外部知识替换为错误、以及用组合知识表示为模糊。

总结

⭐ 本篇工作提出了纠正式RAG来提高RAG生成的鲁棒性,但需要用到一个微调的检索评估器,不想进行这一步的也可以直接用LLM代替。同时对检索后的文档就行细粒度的处理,仅保留相关部分,以避免影响LLM的生成。

引用


  1. SELF-RAG: LEARNING TO RETRIEVE, GENERATE, AND CRITIQUE THROUGH SELF-REFLECTION ↩︎

  2. Active Retrieval Augmented Generation ↩︎

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

带你手撕红黑树! c++实现 带源码

目录 一、概念 二、特性 三、接口实现 1、插入 情况一&#xff1a;p为黑&#xff0c;结束 情况二&#xff1a;p为红 1&#xff09;叔叔存在且为红色 2&#xff09;u不存在/u存在且为黑色 &#xff08;1&#xff09;p在左&#xff0c;u在右 &#xff08;2&#xff09;…

【半夜学习MySQL】表的约束(含主键、唯一键、外键、zerofill、列描述、默认值、空属性详解)

&#x1f3e0;关于专栏&#xff1a;半夜学习MySQL专栏用于记录MySQL数据相关内容。 &#x1f3af;每天努力一点点&#xff0c;技术变化看得见 文章目录 前言空属性默认值列描述zerofill主键主键概述主键删除与追加复合主键 自增长唯一键外键综合案例 前言 上一篇文章中介绍了数…

Vue3项目打包部署到云服务器的Nginx中

文章目录 一、打包vue3项目二、dist文件夹上传到服务器三、改nginx配置文件Docker安装nginx 一、打包vue3项目 npm run build 二、dist文件夹上传到服务器 将dist文件夹放到docker安装的nginx中的html目录下 三、改nginx配置文件 然后重启nginx【改了配置文件重启nginx才能…

JVM的原理与性能

1 JVM 内存结构 1.1 运行时数据区 1.1.1 栈&#xff08;虚拟机栈&#xff09; 每个线程在创建时都会创建一个私有的Java虚拟机栈&#xff0c;在执行每个方法时都会打包成一个栈帧&#xff0c;存储了局部变量表、操作数栈、动态链接、方法出口等信息&#xff0c;然后放入栈中。…

关于我转生从零开始学C++这件事:获得神器

❀❀❀ 文章由不准备秃的大伟原创 ❀❀❀ ♪♪♪ 若有转载&#xff0c;请联系博主哦~ ♪♪♪ ❤❤❤ 致力学好编程的宝藏博主&#xff0c;代码兴国&#xff01;❤❤❤ 几天不见 &#xff0c;甚是想念&#xff01;哈咯大家好又是我大伟&#xff0c;五一的假期已经结束&#xff0…

rt-thread 挂载romfs与ramfs

参考&#xff1a; https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/qemu-network/filesystems/filesystems?id%e4%bd%bf%e7%94%a8-romfs https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutor…

实操Linux磁盘管理(分区、格式化、挂载)

在Linux系统中&#xff0c;磁盘管理是一个必学的知识点。正确地进行磁盘分区、格式化和挂载可以确保我们能够充分利用磁盘空间并高效地存储和访问数据。 相比于Windows系统中的简单盘符管理&#xff0c;Linux中的磁盘管理更加复杂且灵活。在Linux系统中&#xff0c;一切设备都…

一款简易的免费抽奖软件

一、介绍 这款抽奖软件设计简洁&#xff0c;操作便捷。用户可以轻松将参与名单通过EXCEL文件导入至程序中&#xff0c;并可根据需要设定各类奖品和对应的中奖人数。在选定了奖品后&#xff0c;用户只需点击“开始”按钮&#xff0c;随后再按下“暂停”按钮&#xff0c;软件便会…

C++/Qt 小知识记录6

工作中遇到的一些小问题&#xff0c;总结的小知识记录&#xff1a;C/Qt 小知识6 dumpbin工具查看库导出符号OSGEarth使用编出的protobuf库&#xff0c;报错问题解决VS2022使用cpl模板后&#xff0c;提示会乱码的修改设置QProcess调用cmd.exe执行脚本QPainterPath对线段描边处理…

pycharm本地文件更新至虚拟机

tools–>deployment–>configuration root path的路径要跟远程路径对齐&#xff0c;方便后续运行 mapping映射&#xff0c;本地路径和远程路径 点击Browse 可以在右侧同步查看更新情况

【Element-UI快速入门】

文章目录 **Element-UI快速入门****一、Element-UI简介****二、安装Element-UI****三、引入Element-UI****四、使用Element-UI组件****五、自定义Element-UI组件样式****六、Element-UI布局组件****七、Element-UI表单组件****八、插槽&#xff08;Slots&#xff09;和主题定制…

VS项目Debug下生成的EXE在生产机器上运行

使用Visual Studio开发应用程序时&#xff0c;为了临时在非开发机上看一下效果&#xff0c;就直接把Debug下的文件全部拷贝到该机器上&#xff0c;直接双击exe运行。双击之后&#xff0c;没有直接打开应用程序&#xff0c;而是弹出了一个Error弹框。  赶快在网上搜了一遍&…

浏览器执行渲染原理

一、事件循环 事件循环&#xff08;Event Loop&#xff09;是JavaScript的执行环境的核心概念之一&#xff0c;它负责处理JavaScript中的异步操作和执行顺序。事件循环使得JavaScript能够在单线程上有效地处理并发&#xff0c;同时保持编程模型的简单性。 以下是事件循环的一…

智慧油田三维电子沙盘系统

深圳易图讯科技(www.3dgis.top)智慧油田三维电子沙盘系统采用三维GIS、大数据、云计算、虚拟现实、物联网、AI等前沿技术&#xff0c;支持无人机航拍、高清卫星影像、DEM高程数据、矢量数据、无人机倾斜摄像、BIM模型、点云、城市白模、等高线、标高点等数据融合和切换&#xf…

SCI论文发表:寻找论文选题的7种方法 (建议收藏)!

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 近期有好几个同学问娜姐关于论文选题的问题&#xff1a;什么样的选题是好的选题-有价值好发表。这篇来分享7种寻找有效选题的方法。 在我们寻找论文选题的过程中&#xff0c;…

猫头虎分享已解决Bug || **Babel转换器下载问题** Failed to resolve babel-loader dependency`

猫头虎分享已解决Bug &#x1f42f; || Babel转换器下载问题 &#x1f6ab;Failed to resolve babel-loader dependency 博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a…

mapreduce | 自定义Partition分区(案例1)

1.需求 将学生成绩&#xff0c;按照各个成绩降序排序&#xff0c;各个科目成绩单独输出。 # 自定义partition 将下面数据分区处理&#xff1a; 人名 科目 成绩 张三 语文 10 李四 数学 30 王五 语文 20 赵6 英语 40 张三 数据 50 李四 语文 10 张三 英语 70 李四 英语…

BGP大型实验

一.实验拓扑 二.实验要求 1.As1中存在两个环回个地址为192.168.1.0/24&#xff0c;该地址不能在任何协议中宣告&#xff1b; AS3中存在两个环回&#xff0c;一个地址为192.168.2.0/24&#xff0c;不能在任何协议中宣告&#xff0c;最终要求这两个环回可以ping通&#xff1b; …

【备战软考(嵌入式系统设计师)】12 - 嵌入式系统总线接口

我们嵌入式系统的总线接口可以分为两类&#xff0c;一类是并行接口&#xff0c;另一类是串行接口。 并行通信就是用多个数据线&#xff0c;每条数据线表示一个位来进行传输数据&#xff0c;串行接口就是一根数据线可以来一位一位地传递数据。 从上图也可以看出&#xff0c;并行…

理解JavaScript递归

什么是递归 程序调用自身的编程技巧称为递归&#xff08;recursion&#xff09; 递归的基本思想是将一个复杂的问题分解成更小、更易于管理的子问题&#xff0c;这些子问题与原始问题相似&#xff0c;但规模更小。 递归的要素 基本情况&#xff08;Base Case&#xff09;&…