Interleaving Retrieval with Chain-of-Thought Reasoning for ... 论文阅读

Interleaving Retrieval with Chain-of-Thought Reasoning for Knowledge-Intensive Multi-Step Questions 论文阅读

文章目录

    • Interleaving Retrieval with Chain-of-Thought Reasoning for Knowledge-Intensive Multi-Step Questions 论文阅读
  • Abstract
  • 介绍
    • 相关工作
      • 开放域QA提示(CoT相关)
      • 监督的多步骤开放域QA
  • 主要内容
    • 链式思维推理与检索的交替使用(Interleaving Retrieval with Chain-of-Thought Reasoning)
    • 问题回答阅读器(Question Answering Reader)
  • 实验
    • 数据集
    • 实验结果
      • 一步检索器(OneR)与 IRCoT检索器
      • 开放域QA(ODQA)模型
      • IRCoT在OOD设置中同样有效
      • IRCoT生成的CoT包含较少的事实错误
      • IRCoT对更小的模型也有效
      • 直接提示(Direct Prompting)与链式思维提示(CoT Prompting)
  • 结论
    • 局限性
    • 一些补充
    • 参考文献

Abstract

基于提示的大型语言模型(LLMs)在生成多步骤问题回答(QA)的自然语言推理步骤或链式思维(CoT)方面表现出惊人的强大。然而,当所需的知识在LLM中不可用或其参数未更新时,它们会遇到困难。虽然使用问题从外部知识源中检索相关文本可以帮助LLMs,但我们观察到这种一步检索和阅读的方法对于多步骤QA是不足的。在这里,检索的内容取决于已经推导出的内容,而推导的内容可能又取决于之前检索的内容。为了解决这个问题,我们提出了IRCoT,一种新的多步骤QA方法,它将检索与CoT中的步骤(句子)交替进行,通过CoT指导检索,并反过来使用检索结果改进CoT。使用IRCoT与GPT-3相结合,在四个数据集(HotpotQA、2WikiMultihopQA、MuSiQue和IIRC)上的检索(最多提高21点)以及下游QA(最多提高15点)表现出显著提升。我们在分布外(OOD)设置以及使用更小的模型如Flan-T5-large时观察到了类似的显著增益,而无需额外训练。IRCoT减少了模型幻觉,产生了事实更准确的CoT推理。

大型语言模型能够通过适当提示生成逐步的自然语言推理步骤,即所谓的链式思维(CoT),来回答复杂的问题(Wei等,2022)。当回答问题所需的所有信息要么作为上下文提供(例如,代数问题),要么假设存在于模型的参数中(例如,常识推理)时,这种方法是成功的。

代码、数据和提示可在 https://github.com/stonybrooknlp/ircot 获得

介绍

然而,对于许多开放域问题,所有必需的知识并不总是可用或最新的,并且从外部来源检索知识是有益的(Lazaridou等,2022;Kasai等,2022)。

虽然基于问题的单次检索可以成功地为许多事实类任务(Lewis等,2020;Guu等,2020;Borgeaud等,2022;Izacard等,2022)增加相关知识,但这种策略在处理更复杂的多步骤推理问题时有明显的局限性。对于这些问题,通常需要检索部分知识,进行部分推理,并根据部分推理的结果进一步检索,并迭代进行。

例如,考虑下图中所示的问题,“丢失重力在哪个国家制造?”使用问题(尤其是过山车“丢失重力”)作为查询检索到的维基百科文档并没有提到丢失重力的制造地。相反,我们必须首先推断它是由一家名为Mack Rides的公司制造的,然后再进行进一步的检索,以获得指向制造国的证据。

在这里插入图片描述

基于此直觉,我们提出了一种交替方法,IRCoT,其中的理念是使用检索指导链式思维(CoT)推理步骤,并使用CoT推理指导检索。上图展示了我们称为IRCoT的检索方法的概述。我们首先使用问题作为查询检索一组基础段落。随后,我们在以下两个步骤之间交替进行:

  1. 扩展CoT:使用问题、到目前为止收集的段落和已生成的CoT句子生成下一个CoT句子;
  2. 扩展检索信息:使用最后一个CoT句子作为查询检索其他段落,并将其添加到已收集的段落中。

我们重复这些步骤,直到CoT报告答案或达到允许的最大推理步骤数。终止时,返回所有收集的段落作为检索结果。最后,我们使用这些段落作为上下文,通过直接QA提示(Brown等,2020)或CoT提示(Wei等,2022)来回答问题。

本文主要贡献是一种新颖的检索方法IRCoT,它利用LMs的链式思维生成能力来指导检索,并反过来使用检索来改进CoT推理。我们证明了IRCoT:

  1. 改进了多个多步骤开放域QA数据集的检索和少样本QA性能,在IID和OOD设置中均表现出色;
  2. 减少了生成CoT中的事实错误;
  3. 在无需任何训练的情况下提高了大规模(175B模型)和小规模模型(Flan-T5-,≤11B)的性能。

相关工作

开放域QA提示(CoT相关)

LLMs可以通过简单地使用一些示例作为提示来学习各种任务(Brown等,2020)。已经显示,当通过几个或零示例提示时,LLMs能够通过生成逐步的推理(链式思维,CoT)来回答复杂问题(Wei等,2022;Kojima等,2022)。提示已经应用于开放域QA(Lazaridou等,2022;Sun等,2022;Yu等,2023),但其在提高多步骤开放域问题的检索和QA方面的价值仍未得到充分探索。

监督的多步骤开放域QA

先前的工作在完全监督的设置下探索了开放域QA的迭代检索。

  1. Das等(2019)提出了一种迭代检索模型,该模型使用神经查询表示进行检索,然后基于阅读理解模型的输出进行更新。
  2. Feldman和El-Yaniv(2019)将类似的神经查询改写理念应用于多跳开放域QA。
  3. Xiong等(2021)将广泛使用的密集段落检索(DPR)(Karpukhin等,2020)扩展到多跳设置,自那以后Khattab等(2021)进行了改进。
  4. Asai等(2020)利用维基百科段落中存在的实体链接所诱导的图结构来执行迭代多步骤检索。GoldEn(Gold Entity)检索器(Qi等,2019)迭代生成基于段落的文本查询,但需要训练数据来生成下一个查询。
  5. Nakano等(2021)使用GPT-3通过与浏览器交互来回答长篇问题,但依赖于这些交互的人工注释。

所有这些方法都依赖于在大规模数据集上的监督训练,无法轻易扩展到少样本设置。

主要内容

我们的目标是在少样本设置下,使用包含大量文档的知识源来回答一个知识密集的多步骤推理问题Q。为此,我们遵循检索和阅读范式(Zhu等,2021),其中检索器首先从知识源中检索文档,QA模型阅读检索到的文档和问题以生成最终答案。我们的贡献主要在于检索步骤,我们使用标准的提示策略进行阅读步骤。

链式思维推理与检索的交替使用(Interleaving Retrieval with Chain-of-Thought Reasoning)

IRCoT步骤如下图所示:

  1. 一个基础检索器,可以接受查询并返回知识源或知识库中的一定数量的段落;
  2. 具有零/少样本链式思维生成能力的语言模型;
  3. 一小部分带有推理步骤的注释问题,解释如何在自然语言中得出答案(链式思维)以及一组段落,这些段落共同支持推理链和答案。

在这里插入图片描述

我们首先通过使用问题Q作为查询检索K个段落来收集基础段落集。然后,我们交替进行两个步骤(推理和检索),直到满足终止条件。(很像RNN循环神经网络下一个输入依赖于前一个输出的情况)

检索指导的推理步骤(“推理”)使用问题、到目前为止收集的段落和到目前为止生成的链式思维句子来生成下一个链式思维句子。任务的提示模板如下所示:

在这里插入图片描述

对于上面的测试实例,我们只显示模型到目前为止生成的链式思维句子,并让它完成其余部分。尽管模型可能会输出多个句子,但对于每个推理步骤,我们只取第一个生成的句子,其余的丢弃。

问题回答阅读器(Question Answering Reader)

QA阅读器使用检索到的段落和问题回答问题。我们考虑两种版本的QA阅读器,分别通过两种提示策略实现:链式思维提示(CoT Prompting)和直接提示(Direct Prompting)。对于链式思维提示,我们使用与§3.2中相同的模板,但在测试时,我们要求模型从头生成完整的链式思维。链式思维的最后一句预期为“答案是:…”,以便程序提取答案。如果不是这种形式,完整的生成内容将作为答案返回。对于直接提示,我们使用与链式思维提示相同的模板,但答案字段(“A: ”)仅包含最终答案,而不是链式思维。详见附录G。

实验

数据集

我们在四个多步骤QA数据集的开放域设置下评估了我们的方法:HotpotQA(Yang等,2018)、2WikiMultihopQA(Ho等,2020)、MuSiQue(Trivedi等,2022)和IIRC(Ferguson等,2020)。对于HotpotQA,我们使用其开放域设置随附的维基百科语料库。对于其他三个数据集,我们使用相关上下文构建了一个开放域设置的语料库(详见附录A)。对于每个数据集,我们从原始开发集随机抽取100个问题用于调整超参数,并从测试集中随机抽取500个其他问题作为我们的测试集。

实验结果

一步检索器(OneR)与 IRCoT检索器

  1. 一步检索器(OneR)使用问题作为查询检索K个段落。我们选择在开发集上表现最好的K ∈ {5, 7, 9, 11, 13, 15}。

  2. IRCoT检索器是我们在§3中描述的方法。我们使用BM25作为其底层检索器,并实验使用OpenAI GPT-3(code-davinci-002)(Brown等,2020;Ouyang等,2022;Chen等,2021)和不同规模的Flan-T5(Chung等,2022)作为其链式思维生成器。

在这里插入图片描述

上图比较了由Flan-T5-XXL和GPT-3 LM构建的OneR和IRCoT检索器。对于两种模型,IRCoT在所有数据集上显著优于一步检索。对于Flan-T5-XXL,IRCoT在HotpotQA上的召回率相对一步检索提高了7.9,在2WikiMultihopQA上提高了14.3,在MuSiQue上提高了3.5,在IIRC上提高了10.2点。对于GPT-3,这一提高分别为11.3、22.6、12.5和21.2点。

开放域QA(ODQA)模型

将检索器和阅读器结合在一起,我们实验了由不同语言模型构建的ODQA模型,分别称为OneR QA和IRCoT QA。对于IRCoT QA,链式思维生成器和阅读器使用相同的LM。我们还实验了无检索器的QA阅读器NoR QA,以评估LM仅从其参数知识中回答问题的能力。

在这里插入图片描述

上图比较了使用NoR、OneR和IRCoT检索器构建的ODQA模型在Flan-T5-XXL和GPT-3 LM上的表现。

  • 对于Flan-T5-XXL,IRCoT QA在HotpotQA上的F1得分比OneR QA提高了9.4,在2WikiMultihopQA上提高了15.3,在MuSiQue上提高了5.0,在IIRC上提高了2.5点。
  • 对于GPT-3,相应的提高(除了IIRC)分别为7.1、13.2和7.1点。对于GPT-3,尽管IRCoT显著改进了检索(如图3所示,提高了21点),但在IIRC上的QA得分没有提高。这可能是因为IIRC的相关知识可能已经存在于GPT-3中,如其NoR QA得分所示。
  • 对于其他数据集和模型组合,NoR QA明显低于IRCoT QA,表明模型的参数知识有其局限性。

IRCoT在OOD设置中同样有效

由于CoT并不总是容易为新数据集编写,我们在泛化到新数据集(即OOD设置)时评估了NoR、OneR和IRCoT。为此,我们使用一个数据集的提示演示来评估另一个数据集。对于所有数据集对和Flan-T5-XXL及GPT-3,我们发现与IID设置中相同的趋势:IRCoT检索优于OneR(图5),IRCoT QA优于OneR QA和NoR QA(图6)。

在这里插入图片描述

IRCoT生成的CoT包含较少的事实错误

为了评估我们的方法是否也提高了生成的CoT的事实性,我们手动标注了NoR QA、OneR QA和IRCoT QA使用GPT-3为四个数据集中的每个数据集随机抽取的40个问题生成的CoT。我们认为,如果至少有一个事实不真实,则CoT有事实错误。如图7所示,NoR的事实错误最多,OneR较少,而IRCoT最少。特别是,IRCoT在HotpotQA上比OneR减少了50%的事实错误,在2WikiMultihopQA上减少了40%。

在这里插入图片描述

上表说明了不同方法的CoT预测在质上的变化。由于NoR完全依赖于参数知识,它通常在第一句话就出现事实错误,导致整个CoT偏离轨道。OneR可以检索到最接近问题的相关信息,并且不太可能在早期出现这样的错误,但它仍会在CoT的后期出现错误。另一方面,IRCoT由于在每一步后都进行检索,通常可以防止每一步中的此类错误。

IRCoT对更小的模型也有效

为了了解IRCoT在不同LM规模下的有效性,我们展示了图8中的扩展图。我们比较了使用Flan-T5 {base(0.2B)、large(0.7B)、XL(3B)、XXL(11B)}和GPT-3 code-davinci-002(175B)进行的OneR和IRCoT检索的召回率。即使使用最小的模型(0.2B),IRCoT也优于OneR,并且性能随着模型规模的增大而改善。这表明即使是小模型的链式思维生成能力也可以用来改进检索。

此外,我们展示了图9中的QA得分随模型规模的变化。对于除了最小的模型(0.2B)之外的所有规模,我们发现IRCoT QA优于OneR QA。此外,IRCoT与3B模型甚至在所有数据集中优于OneR和NoR与58倍更大的175B GPT-3模型。

在这里插入图片描述

直接提示(Direct Prompting)与链式思维提示(CoT Prompting)

  • 直接提示(Direct Prompting)

在直接提示下,模型被要求直接生成最终答案,而不需要展示中间的推理过程。这样提示的模板通常较为简洁,仅包括问题和最终的答案部分。这种方法依赖于模型在其参数中内置的知识,直接生成答案。

  • 链式思维提示(CoT Prompting)

在链式思维提示下,模型被引导一步步地进行推理,逐步生成解决问题的步骤,直到得出最终答案。这种方法通过详细的推理过程来提高答案的准确性和透明度。它通常在模板中展示问题、逐步推理的过程以及最终的答案。

下表比较了Flan-T5-XXL和GPT-3在直接提示(Direct Prompting)与链式思维提示(CoT Prompting)下作为阅读器的效果。我们发现,对于Flan-T5-XXL,直接提示(Direct Prompting)效果更好,而对于GPT-3,链式思维提示(CoT Prompting)效果更好。因此,在主论文的实验中,我们选择了这种配置。需要注意的是,§ 5中讨论的趋势(IRCoT QA > OneR QA > ZeroR QA)在任何阅读器选择下都成立。

在这里插入图片描述

结论

链式思维提示显著提高了LLMs进行多步骤推理的能力。我们利用这种能力来改进检索,进而改进复杂知识密集型开放域任务在少样本设置下的QA性能。我们认为基于问题的一步检索对于这些任务是不足的,并介绍了IRCoT,它使用交替的链式思维推理和检索步骤来逐步相互指导。在四个数据集上,IRCoT在与一步检索相比显著提高了检索和QA性能,无论是大规模还是相对较小规模的LM。此外,IRCoT生成的链式思维包含较少的事实错误。

局限性

IRCoT依赖于基础LM具备零或少样本的链式思维生成能力。虽然这种能力在大规模LM(超过100B)中常见,但在小规模LM(少于20B)中并不常见,这在一定程度上限制了IRCoT的适用性。然而,随着最近对这一领域的兴趣激增(Tay等,2023;Magister等,2022;Ho等,2022),小规模LM将可能越来越具备这种能力,使IRCoT兼容更多的LM。

IRCoT还依赖于基础LM支持长输入,因为多个检索到的段落需要适应LM的输入,此外还需要一些QA或CoT的示例。我们使用的模型支持这一点,如code-davinci-002(GPT-3)允许8K个标记,Flan-T5-*使用相对位置嵌入,使其在GPU内存限制允许的情况下可扩展。未来工作可以探索重新排序和选择检索到的段落,而不是将所有段落传递给LM,以缓解LM对长输入的需求。

IRCoT检索器和QA的性能提升(相对于OneR和ZeroR基线)伴随着额外的计算成本。这是因为IRCoT为每个链式思维句子单独调用一个(L)LM。未来的工作可以关注,例如动态决定何时检索更多信息以及何时使用当前信息进行额外推理。

最后,我们的一部分实验是使用OpenAI的code-davinci-002商业LLM API进行的。在提交后,OpenAI不再支持此模型,尽管我们尽了最大努力,但仍使得这些实验的再现具有挑战性。我们认为,本文讨论的趋势(IRCoT > OneR > NoR)仍然成立。此外,我们使用Flan-T5-*进行的所有实验表现出与GPT-3类似的趋势,将继续可重复性,感谢其公开的模型权重。

一些补充

我们为HotpotQA、2WikiMultihopQA、MuSiQue和IIRC手动编写的链式思维注释分别在Listing 1、2、3和4中给出。我们用于GPT-3链式思维提示(CoT Prompting)的提示与这些相同,只是在问题的顶部添加了维基百科段落,如§3.1所示。我们用于GPT-3直接提示(Direct Prompting)的提示与CoT提示相同,只是在"A:"之后直接给出答案。我们用于Flan-T5-*的提示与GPT-3略有不同。对于链式思维提示,我们在问题行前添加了前缀:“Q: 通过逐步推理回答以下问题。<实际问题>”。对于直接提示,我们在问题行前添加了前缀:“Q: 回答以下问题。<实际问题>”。我们这样做是为了遵循Flan-T5-*的训练格式,发现这样有助于其生成链式思维。

在这里插入图片描述

在这里插入图片描述

参考文献

  1. Wei, J. et al., “Chain of Thought Prompting Elicits Reasoning in Large Language Models,” arXiv preprint arXiv:2201.11903, 2022.
  2. Kojima, T. et al., “Large Language Models are Zero-Shot Reasoners,” arXiv preprint arXiv:2205.11916, 2022.
  3. Brown, T. et al., “Language models are few-shot learners,” Advances in Neural Information Processing Systems, 2020.
  4. Guu, K. et al., “Retrieval augmented language model pre-training,” Proceedings of the 37th International Conference on Machine Learning, PMLR, 2020.
  5. Lazaridou, A. et al., “Internet-augmented language models,” arXiv preprint arXiv:2209.07858, 2022.
  6. Yao, S. et al., “ReAct: Synergizing reasoning and acting in language models,” arXiv preprint arXiv:2210.03629, 2022.
  7. Sun, T. et al., “Recite and verify: Answering questions with knowledge from large-scale retrieval and language models,” arXiv preprint arXiv:2209.11710, 2022.
  8. Press, O. et al., “Measuring and narrowing the compositionality gap in language models,” arXiv preprint arXiv:2210.03350, 2022.
  9. Khot, T. et al., “Decomposed prompt-based reasoning for multi-hop question answering,” arXiv preprint arXiv:2212.06094, 2023.
  10. Chen, M. et al., “Evaluating large language models trained on code,” arXiv preprint arXiv:2107.03374, 2021.

这些文献不仅涵盖了IRCoT方法的重要研究,还包括了关于链式思维提示(CoT Prompting)的关键研究,提供了对多步骤推理和大规模语言模型的全面理解。

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

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

相关文章

【物联网】NB-IoT

目录 一、什么是NBIOT 二、NB-IoT的特点 三、NBIOT的工作状态 四、移远NB-IoT模块及AT指令 一、什么是NBIOT NB-IoT&#xff08;Narrow Band Internet of Things&#xff09;窄带物联网&#xff0c;构建于蜂窝网络&#xff0c;所占用的带宽很窄&#xff0c;只需约180KHz&am…

易基因:【表观遗传学基础】如何研究DNA甲基化

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 表观遗传学近几年取得的一系列研究进展&#xff0c;确实吸引着越来越多的关注&#xff01;为了帮大伙儿梳理一下表观遗传学的基本概念和研究方法&#xff0c;小编打算开一个系列专题&…

工业数字孪生:智能制造的新引擎

数字孪生技术&#xff1a;智能制造的新引擎 一、数字孪生技术的基本概念与工业应用 1.1 数字孪生的定义与原理 数字孪生技术是一种先进的集成技术&#xff0c;它通过在数字空间创建一个精准物理对象的虚拟模型&#xff0c;使得我们可以在数字空间中模拟、分析和预测物理实体…

LeetCode35.搜索插入位置

LeetCode刷题记录 文章目录 &#x1f4dc;题目描述&#x1f4a1;解题思路⌨C代码 &#x1f4dc;题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。 如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须…

概率论与数理统计(期末自用总结版)

本篇内容仅供学习参考&#xff0c;均为自用&#xff01;&#xff01;&#xff01; 如有错误&#xff0c;欢迎指正&#xff01;&#xff01;&#xff01;

模板初阶【C++】

文章目录 模板的作用模板的原理模板分为两大类——函数模板和类模板函数模板语法函数模板实例化模板函数的方式模板函数的类型转换既有函数模板又有已经实现的函数&#xff0c;会优先调用哪一个&#xff1f; 类模板语法模板类实例化对象模板类的模板参数可以有缺省值类模板中的…

Android实战之app版本更新升级全文章(二)

BaseAndroid.checkUpdate(MainActivity.this, 2, “http://f5.market.mi-img.com/download/AppStore/0f4a347f5ce5a7e01315dda1ec35944fa56431d44/luo.footprint.apk”, “更新了XXX\n修复OOO”, false); 看看效果图 界面有点丑&#xff0c;自己修改下吧 当然啦&#xff0c…

Oracle中递归查询(START WITH……CONNECT BY……)

一、基本语法 在Oracle中START WITH……CONNECT BY……一般用来查找存在父子关系的数据&#xff0c;也就是树形结构的数据。 SELECT * FROM TABLE WHERE 条件3 START WITH 条件1 CONNECT BY 条件2;start with [condition]&#xff1a;设置起点&#xff0c;用来限制第一层的数…

Springboot整合MinIO实现系统文件的便捷式管理实例

一、MinIO简介 1.基础描述 MinIO 是一个高性能的对象存储系统&#xff0c;用于存储大量非结构化数据。它以简洁、高效、可靠和高扩展性著称&#xff0c;能够胜任各种数据密集型任务。MinIO 采用了与 Amazon S3 兼容的 API&#xff0c;使得用户无需额外学习即可上手使用。下面…

Ubuntu iso 镜像下载 步骤截图说明

Ubuntu镜像下载&#xff0c;在这个网址&#xff1a; Enterprise Open Source and Linux | Ubuntu 步骤如下图所示&#xff1a; 1、登入网址 2、点击Get Ubuntu 3、点击Download Ubuntu Desktop 后续点击Downloadload 24.04 LTS直接下载就行 如果需要下载其它版本&#xf…

设计模式学习之——单例模式

文章目录 单例模式什么叫做单例模式单例模式的动机 单例模式的引入思考 饿汉式单例和懒汉式单例饿汉式单例懒汉式单例 单例模式总结1&#xff0e;主要优点2&#xff0e;主要缺点3&#xff0e;适用场景 单例模式 什么叫做单例模式 顾名思义&#xff0c;简单来说&#xff0c;单…

VS Code安装及环境配置(超详细)

VS Code简介 Visual Studio Code&#xff08;简称 VS Code &#xff09;是 Microsoft 于2015年4月发布的一款代码编辑器&#xff0c;以界面简洁、轻量著称。 它是一款免费开源的现代化轻量级代码编辑器&#xff0c;支持几乎所有主流开发语言的语法高亮、智能代码补全、自定义…

LLaMA:挑战大模型Scaling Law的性能突破

实际问题 在大模型的研发中,通常会有下面一些需求: 计划训练一个10B的模型,想知道至少需要多大的数据?收集到了1T的数据,想知道能训练一个多大的模型?老板准备1个月后开发布会,给的资源是100张A100,应该用多少数据训多大的模型效果最好?老板对现在10B的模型不满意,想…

游戏遇到攻击有什么办法能解决?

随着网络技术的飞速发展&#xff0c;游戏行业在迎来繁荣的同时&#xff0c;也面临着日益严峻的网络威胁。黑客攻击、数据泄露、DDoS攻击等安全事件频发&#xff0c;给游戏服务器带来了极大的挑战。面对愈演愈烈的网络威胁&#xff0c;寻找一个能解决游戏行业攻击问题的安全解决…

C++STL 初阶(5)vector的简易实现(上)

不同于string只实现一个最简单的版本&#xff0c;vector在此处我们要实现的是模版类&#xff0c;类模版的声明和定义分离非常不方便&#xff08;会在链接时报错&#xff09;&#xff0c;所以我们都只在一个vector.h下去实现声明和定义。后续我们提及到的库里面实现的vector也是…

Go 与 Java 字符编码选择:UTF-8 与 UTF-16 的较量

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

Chrome插件: Octotree让你GitHub代码浏览速度飙升

在GitHub上浏览和管理项目代码时&#xff0c;您是否曾为复杂的目录结构感到困惑&#xff1f;如果有一种工具能够让您轻松浏览项目的文件和目录&#xff0c;会不会大大提升您的工作效率&#xff1f;这正是Octotree浏览器插件所能做到的。 不过说实话&#xff0c;GitHub自带的代码…

stm32学习笔记---GPIO输入(理论部分)

目录 GPIO输入模式下的硬件和电路 按键原理 传感器原理 什么是上下拉电阻&#xff1f; 运算放大器当做比较器 按键的硬件电路 传感器的硬件电路 STM32用到的C语言知识 STM32中的C语言数据类型 C语言中的宏定义 typedef和define的区别是什么&#xff1f; C语言的枚举…

云计算期末综合测试题

云计算综合测试题 单选题填空题判断题简答题 单选题 这里选择题&#xff0c;直接以填空题展示&#xff0c;并给出解析 Bigtable是&#xff08;Google&#xff09;开发的分布式存储系统 解析&#xff1a;分布式结构化数据表Bigtable是Google基于GFS和Chubby开发的分布式存储系统…

FlowUs2024重磅革新预告:RAG技术赋能『问问AI』,笔记变现新纪元等你开启!

&#x1f389; 在FlowUs的广阔天地间&#xff0c;知识的边界被无限拓展&#xff0c;引领着一场场创新与收获的庆典&#xff01;&#x1f680; 随着一年间不断的精进与革新&#xff0c;FlowUs与众多用户并肩前行&#xff0c;在追求极致体验的道路上迈出坚实步伐。步入2024年&am…