Prompt 工程

Prompt 工程

1. Prompt 工程简介

“预训练-提示预测”范式是近年来自然语言处理(NLP)领域的一个重要趋势,它与传统的“预训练-微调-预测”范式相比,提供了一种更为灵活和高效的模型应用方式。

Prompt工程是指在预训练的大型语言模型(如BERT、GPT等)的基础上,通过精心设计的提示(Prompt)来引导模型直接适应和执行特定的下游任务,而无需对模型进行额外的微调。

这种方法的核心在于Prompt的设计,它需要能够准确捕捉任务的需求,并以模型能够理解的方式表达出来。

在这里插入图片描述

1.1 Prompt 的定义

  • 定义:Prompt 是指用于指导生成式人工智能模型执行特定任务的输入指令 ,这些指令通常以自然语言文本的形式出现。
  • 核心目的:Prompt 的核心目的是清晰地描述模型应该执行的任务,以引导模型生成特定的文本、图像、音频等内容。
1.1.1 Prompt的类型和应用
  1. 情感分类任务

    • 示例:判断下面句子的情感为积极还是消极。
    • 作用:通过提供明确的情感分类指令,模型能够准确地对文本进行情感分析。
  2. 生成任务

    • 示例:以小浣熊吃干脆面为主题,帮我写一首诗。
    • 作用:通过特定主题的创作指令,模型能够生成富有创意的诗歌。
  3. 多模态任务

    • 示例:画一张小浣熊在吃干脆面的图片。
    • 作用:在多模态模型的应用场景中,Prompt可以包含画面描述,指导模型生成相应的视觉作品。

1.2 Prompt工程的定义

Prompt 工程(Prompt Engineering),又称提示工程,是指设计和优化用于与生成式人工智能模型交互的 Prompt 的过程。

这种技术的核心在于,将新任务通过Prompt 构建为模型在预训练阶段已经熟悉的形式,利用模型固有的泛化能力来执行新的任务,而无需在额外的特定任务上进行训练。

1.2.1 Prompt工程的核心要素
  1. 任务说明:明确提出具体的任务要求,清晰、直接地描述期望模型完成的任务。
  2. 上下文:提供任务相关的背景信息,增强模型对任务的理解并提供解决任务的思路。
  3. 问题:描述用户的具体问题或需要处理的信息,为模型提供一个明确的起点。
  4. 输出格式:指示模型以何种形式展示回答,包括输出的格式和任何特定的细节要求。
1.2.2 Prompt工程的挑战

随着Prompt内容的丰富和复杂化,输入到模型中的Prompt长度增加,可能导致模型推理速度减慢和推理成本上升。因此,如何在确保模型性能不受影响的前提下,有效控制和优化Prompt的长度,成为了一个亟待解决的问题。

1.2.3解决方案
  • LLMLingua:提出了一种由粗到细的Prompt压缩方法,能够在不牺牲语义完整性的情况下,将Prompt内容压缩至原来的二十分之一倍,同时几乎不损失模型的性能。
  • FIT-RAG:通过高效压缩检索出的内容,成功将上下文长度缩短至原来的50%左右,同时保持了性能的稳定,为处理大规模上下文信息提供了有效的解决方案。

1.3 Prompt 分词向量化

在 Prompt 进入大模型之前,需要将它拆分成一个 Token 的序列,其中 Token 是承载语义的最小单元,标识具体某个词,并且每个 Token 由 Token ID 唯一标识。将文本转化为 Token 的过程称之为分词(Tokenization)

1.3.1 分词(Tokenization)的重要性
  • 语义保留:分词需要将文本拆分成Token序列,同时保留原始文本的语义信息。
  • Token ID:每个Token由唯一的Token ID标识,这是模型理解和处理文本的基础。
  • 多种拆分方式:同一句子可能有不同的拆分方式,选择合适的拆分对于模型理解至关重要。
1.3.2 分词器的构建
  • 词表构建:分词器依赖于一个词表,该词表包含所有模型能够识别的Token。
  • 分词算法:常用的分词算法包括BBPE(Byte-Level Byte Pair Encoding)、BPE(Byte Pair Encoding)和WordPiece等。
1.3.2.1 BBPE算法的分词过程
  1. 初始化词表:从单字节编码开始,将字符拆分为字节,并作为初始Token。
  2. 统计词频:统计词表中所有Token对的出现频率。
  3. 合并高频Token对:选择频率最高的Token对合并成新的Token。
  4. 迭代合并:重复统计和合并步骤,直至达到预设的词表大小或合并次数。
1.3.2.2 分词器的对比

提供了不同模型分词器的对比,包括词表大小和中英文分词效率。

模型词表大小中文分词效率(字/Token)英文分词效率(词/Token)
LLaMA1320000.65880.6891
LLaMA2320000.65880.6891
LLaMA31282561.09960.7870
DeepSeek-V11000161.29150.7625
DeepSeek-V21000021.29150.7625
GPT-3.5 & GPT-41002560.77230.7867
GPT-350,2570.48580.7522
Qwen-1.51516461.29890.7865
StarCoder491520.93440.6513
  • 关键特性:分词器需要准确识别关键词和短语,同时具有高效率。
  • 性能影响:分词器的质量直接影响模型的训练和推理速度。
1.3.3 Token的处理流程
  • 嵌入矩阵:Token经过嵌入矩阵处理,转化为固定大小的表征向量。
  • 模型处理:向量序列被输入到模型中,模型根据这些向量计算概率分布并生成输出。

1.4 Prompt 工程的意义

您提到的内容涉及Prompt工程在自然语言处理(NLP)任务中的应用,以及它如何提高效率和灵活性。以下是对您提到的三个应用领域的总结:

1.4.1 垂域任务

Prompt工程使得大型语言模型能够无需特定任务的微调即可执行垂直领域任务。这减少了计算成本和对标注数据的依赖,使得模型能够更好地应用于特定领域。

1.4.2 数据增强

通过Prompt工程,可以利用大型语言模型生成新的高质量数据,用于训练和优化其他模型。这种方法可以将大型模型的能力通过合成数据“蒸馏”到其他模型上,提升小模型的性能,同时保持较小的模型尺寸和低计算成本。

1.4.3 智能代理

Prompt工程还可以用于构建智能代理(Intelligent Agent, IA),这些代理能够感知环境、自主采取行动以实现目标,并通过学习提高性能。

2. 上下文学习的定义

随着模型训练数据规模和参数数量的持续扩大,大语言模型涌现出了上下文学习(In-Context Learning,ICL)能力。

其使得语言模型能够通过给定的任务说明或示例等信息来掌握处理新任务的能力。

引入上下文学习,我们不再需要针对某个任务训练一个模型或者在预训练模型上进行费时费力的微调,就可以快速适应一些下游任务。

这使得用户可以仅仅通过页面或者 API 的方式即可利用大语言模型来解决下游任务,为“语言模型即服务”(LLM as a Service)模式奠定了坚实的能力基础。

2.1 上下文学习的定义

上下文学习(In-Context Learning, ICL)是一种通过构造特定的Prompt,使得语言模型能够理解并学习下游任务的范式。这种学习方式的关键是如何设计有效的Prompt,以引导模型理解任务的上下文和目标。

2.1.1 上下文学习的应用示例
  • 情感分类任务:模型根据给定文本判断情感倾向,识别积极或消极情绪。
  • 数学运算任务:模型根据示例的形式,直接给出对应的运算结果。
    在这里插入图片描述
2.1.2 上下文学习的不同形式
  1. 零样本(Zero-shot)上下文学习:仅需提供任务说明,无需提供任何示例。依赖于模型的泛化能力。
  2. 单样本(One-shot)上下文学习:为模型提供一个示例,贴合人类“举一反一”的学习模式。
  3. 少样本(Few-shot)上下文学习:为模型提供少量示例(几个至十几个),提升模型在特定任务上的表现。
    在这里插入图片描述
2.1.3 上下文学习的理论解释
  • 隐式贝叶斯推理:斯坦福大学的研究提供了一种解释,将上下文学习视为隐式贝叶斯推理。模型在预训练阶段学习潜在的概念,当运用上下文学习进行推理时,借助演示示例来“锚定”其在预训练期间所习得的相关概念,从而进行上下文学习,并对问题进行预测。

2.2 演示示例选择

在上下文学习(In-Context Learning)中,选择合适的演示示例对于引导大型语言模型理解任务至关重要。以下是三种基于相似性和多样性的示例选择方法的总结:

2.2.1 直接检索
  • 方法:直接检索方法根据候选示例与待解决问题之间的相似性进行排序,选取排名靠前的K个示例。
  • 代表性方法:KATE(Knowledge-Aware Text Encoder)
  • 操作流程
    • 使用RoBERTa等模型对问题和候选示例进行编码。
    • 计算问题编码和候选示例编码间的向量余弦相似度。
    • 选择评分最高的K个示例作为演示示例。
  • 优点:简单易操作,应用广泛。
  • 缺点:未考虑示例多样性,可能导致示例同质化。
    在这里插入图片描述
2.2.2 聚类检索
  • 方法:先聚类后检索,以保证检索结果的多样性。
  • 代表性方法:Self-Prompting
  • 操作流程
    • 将候选示例和待解决问题编码成向量形式。
    • 使用K-Means算法将示例集合聚为K个簇。
    • 从每个簇中选取与问题最相似的示例。
  • 优点:提高了示例的多样性。
  • 缺点:可能选择的示例相似性不够高,因为有些簇与问题可能并不相似。
    在这里插入图片描述
2.2.3 迭代检索
  • 方法:兼顾相似性和多样性,动态选择下一个示例。
  • 代表性方法:RetICL(Retrieval-based In-Context Learning)
  • 操作流程
    • 根据当前问题初始化检索器内部状态,并选择一个示例。
    • 根据当前问题和所选示例集更新检索器内部状态。
    • 迭代选择下一个示例,直到得到K个示例。
  • 优点:生成更优的示例集,在复杂任务中展现出更好的适应性和灵活性。
  • 缺点:计算上相对复杂。
    在这里插入图片描述

2.3 性能影响因素

2.3.1 预训练数据的影响
  • 领域丰富度:预训练数据覆盖的领域越丰富,模型的领域泛化能力越强。跨领域预训练的模型在上下文学习中表现更稳定。
  • 任务多样性:预训练数据中包含的任务类型越多样化,模型学习到的知识和技能越广泛,增强了任务泛化能力。
  • 训练数据的分布特性:训练数据中的突发性分布和罕见类别能够提升模型处理少见或新颖输入的能力。
2.3.2 预训练模型的影响
  • 模型参数规模:模型参数达到一定规模(亿级别及以上)时,上下文学习能力得以涌现。模型规模越大,上下文学习性能通常越强。
  • 模型架构和训练策略:模型的架构和训练策略也对上下文学习性能有重要影响。
2.3.3 演示示例的影响
  • 示例格式:不同任务对示例格式的要求不同。对于复杂推理任务,以思维链的形式构造示例有助于模型学习更复杂的映射关系。
  • 输入-输出映射的正确性:如果给定示例中的输入-输出映射是错误的,会影响上下文学习的效果。大型模型对输入-输出映射的正确性更敏感。
  • 演示示例的数量和顺序:增加演示示例的数量通常能提升上下文学习性能,但性能提升速率会逐渐减缓。生成任务比分类任务更能从增加的示例数量中获益。演示示例的顺序对模型表现有显著影响,且最优顺序具有模型依赖性。
2.3.4 任务说明的质量
  • 清晰、明确的任务说明:能够为模型提供明确指导,提升上下文学习的性能。

3.1 思维链

思维链提示(Chain-of-Thought,CoT)是一种用于提升大语言模型在复杂任务中表现的Prompt范式。它通过模拟人类解决复杂问题时的思考过程,引导模型进行逐步推理。

3.1.1 思维链提示(CoT)的定义

  • 核心:构造合适的Prompt以触发大语言模型一步一步生成推理路径,并生成最终答案。
  • 方法:早期方法通过加入少量包含推理过程的样本示例来引导模型生成答案。

3.1.2 按部就班

  • 特点:逻辑连贯性和步骤顺序性。
  • 代表方法:CoT、Zero-Shot CoT、Auto-CoT。
  • Zero-Shot CoT
    • 方法:通过简单的提示(如“Let’s think step by step”)引导模型自行生成推理链。
    • 优点:减少对人工示例的依赖,展现出与原始少样本CoT相媲美甚至更优的性能。
  • Auto-CoT
    • 方法:引入与待解决问题相关的问题及其推理链作为示例,由大语言模型自动完成,无需手工标注。
    • 流程:利用聚类技术筛选相关问题,借助Zero-Shot CoT的方式生成推理链,形成示例。

3.1.3 三思后行

  • 特点:在决策过程中融入审慎和灵活性。
  • 代表方法:Tree of Thoughts (ToT)、Graph of Thoughts (GoT)。
  • ToT
    • 方法:将推理过程构造为一棵思维树,从拆解、衍生、评估、搜索四个角度进行构造。
    • 流程:生成多个方案,评估当前剩余的数字是否能够凑到24点,保留可能凑出24点的节点。
  • GoT
    • 方法:将树扩展为有向图,提供每个思维自我评估修正以及思维聚合的操作。

3.1.4 集思广益

  • 特点:通过汇集多种不同的观点和方法来优化决策过程。
  • 代表方法:Self-Consistency。
  • 流程
    1. 使用CoT或Zero-Shot CoT的方式引导模型生成一组多样化的推理路径。
    2. 收集每个推理内容的最终答案,并统计每个答案出现的频率。
    3. 选择出现频率最高的答案作为最终的、最一致的答案。

4.1 Prompt 技巧

4.1 规范 Prompt 编写

  • 有效沟通:规范的Prompt是与大型语言模型进行有效沟通的基础。
  • 输出质量:Prompt的规范性直接影响模型的输出质量和任务执行的准确性。
4.1.1 经典Prompt的组成部分
  1. 任务说明:明确模型需要完成的任务。
  2. 上下文:提供帮助模型理解和回答问题的示例或背景信息。
  3. 问题:用户真正想要模型解决的问题。
  4. 输出格式:规范模型的输出格式。
4.1.2 规范编写的要求
  1. 任务说明要明确

    • 使用明确的动词和具体的名词。
    • 简洁明了,避免冗长或复杂的句子结构。
    • 结构化布局,将任务说明放置在开头和结尾。
  2. 上下文丰富且清晰

    • 提供与问题直接相关的背景信息和示例。
    • 避免包含冗余或不必要的信息。
  3. 输出格式要规范

    • 明确指定输出格式,如JSON、CSV等。
    • 提供输出格式的示例,帮助模型理解预期的输出结构。
  4. 排版要清晰

    • 使用一致的分隔符区分不同的Prompt部分。
    • 合理使用空白和缩进,增强可读性。
    • 为每个部分提供清晰的标题或子标题。

4.2 合理归纳提问

合理归纳提问是在与大语言模型交互中提升信息获取效率和深度的重要技巧。以下是两个高级提问策略的介绍,它们有助于深入理解问题本质,并提高获取信息和解决问题的效率。

4.2.1 复杂问题拆解

这是一种将复杂问题分解为更小、更易于理解的子问题,并逐一解决的策略。这种方法在计算机算法设计中被称为“分而治之”,其基本理念是通过解决子问题来最终解决整个问题。

操作流程

  • 分步引导:将复杂问题细化为多个子问题,并引导模型针对每个子问题进行深入分析和回答。
  • 归纳总结:将各个子问题的答案汇总,并综合形成最终的全面回答。

优势:这种方法能够帮助用户和模型更有效地处理复杂信息,确保每个细节都被考虑到,并最终形成一个准确和全面的答案。

例子

  1. 用户询问成年小浣熊一天需要吃多少干脆面才能满足能量需求。
  2. 通过分步引导,问题被分解为“成年小浣熊一天需要摄入多少热量?”和“一包干脆面的热量是多少?”。
  3. 模型分别回答了这两个问题,提供了小浣熊的日热量需求和干脆面的热量含量。
  4. 通过归纳总结,用户计算出小浣熊需要摄入的干脆面数量。
4.2.2 追问

追问是在对话中引导大语言模型输出更贴合心意内容的策略。这种交互不仅可以促进更深层次的理解和讨论,而且有助于更精确地表达用户的真实想法,从而更好地指导模型的思考。

追问的三种形式

  1. 深入追问:根据模型的输出继续发问,深入挖掘特定话题的深层信息。

    • 例子:用户询问小浣熊是否可以食用干脆面,随后深入追问去除调味料和添加剂后的情况。
  2. 扩展追问:在模型给出回答的基础上,进一步要求模型提供更多相关信息或例子。

    • 例子:用户询问小浣熊的常规饮食,随后扩展追问小浣熊是否可以偶尔尝试干脆面作为零食。
  3. 反馈追问:在模型的输出不符合预期或存在错误时,提供反馈,指出问题所在,并请求模型进行更正或澄清。

    • 例子:用户询问小浣熊连续食用20包干脆面后的应对措施,随后通过反馈追问指出小浣熊出现了不良反应,模型修正了回答。

4.4 善用心理暗示

您提供的内容详细介绍了如何通过心理暗示,特别是角色扮演和情景代入,来提升大语言模型的交互效率和输出质量。以下是对这些策略的总结和进一步解释:

4.4.1 角色扮演(Role-Playing)
  • 定义:通过Prompt指导大语言模型扮演特定角色,以改善其与角色相关的技能。
  • 实施:为模型设定一个详尽的角色,如数据科学家、诗人或律师,并在指令中包含角色的具体属性、职责、知识和技能。
  • 效果:角色扮演可以使模型生成更准确、角色相关的内容,提供更高质量的回答。
  • 示例:在小浣熊营养顾问的角色中,模型不仅坚持了小浣熊的自然饮食原则,还巧妙地提出了将干脆面作为零食的建议,并强调了控制分量的重要性。
4.4.2 情景代入
  • 定义:将模型置于特定的“情景”或“环境”中,影响其生成的文本内容和风格。
  • 实施:将特定情境下所需的专业知识、历史背景等信息嵌入到模型的响应中。
  • 效果:情景代入使模型能够深入理解并反映特定情境下的文化社会背景与现实环境,生成更加丰富和有深度的回答。
  • 示例:在90年代的街头情景中,模型不仅描述了小浣熊干脆面的口味,还能够捕捉到那个时代特有的文化现象——通过收集卡片来交换乐趣,唤起用户的情感共鸣。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python TensorFlow】进阶指南(续篇一)

在前两篇文章中,我们介绍了TensorFlow的基础知识及其在实际应用中的初步使用,并探讨了更高级的功能和技术细节。本篇将继续深入探讨TensorFlow的高级应用,包括但不限于模型压缩、模型融合、迁移学习、强化学习等领域,帮助读者进一…

yolov7论文翻译

YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors 论文:https://arxiv.org/abs/2207.02696 代码:https://github.com/WongKinYiu/yolov7 摘要 YOLOv7 在速度和准确性方面均超越了所有已知的目标检测器&a…

Java基于SpringBoot+Vue的宠物共享平台的设计与实现(附源码,文档)

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

对称加密与非对称加密:密码学的基石及 RSA 算法详解

对称加密与非对称加密:密码学的基石及 RSA 算法详解 在当今数字化的时代,信息安全至关重要。对称加密和非对称加密作为密码学中的两种基本加密技术,为我们的数据安全提供了强大的保障。本文将深入探讨对称加密和非对称加密的特点、应用场景&…

43.第二阶段x86游戏实战2-提取游戏里面的lua

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要…

基于matlab的CNN食物识别分类系统,matlab深度学习分类,训练+数据集+界面

文章目录 前言🎓一、数据集准备🎓二、模型训练🍀🍀1.初始化🍀🍀2.加载数据集🍀🍀3.划分数据集,并保存到新的文件夹🍀🍀4.可视化数据集&#x1f34…

【webrtc】 RTP 中的 MID(Media Stream Identifier)

RTP 中的 MID(Media Stream Identifier) RID及其与MID的区别 cname与mid的对比【webrtc】CNAME 是rtprtcp中的Canonical Name(规范化名称) 同样都是RTP头部扩展: 基于mediasoup的最新的代码,学习,发现mid在创建RtpSendStream时是必须传递的参数: 例如 D:\XTRANS\soup\…

Node.Js+Knex+MySQL增删改查的简单示例(Typescript)

数据库: CREATE DATABASE MyDB; CREATE TABLE t_users (user_id int(11) NOT NULL,user_name varchar(10) NOT NULL ) ENGINEInnoDB DEFAULT CHARSETutf8; 项目结构: package.json如下,拷贝并替换你们本地的package.json后运行 npm install 命令安装所需要的依赖。…

【MATLAB代码】二维平面上的TDOA,使用加权最小二乘法,不限制锚点数量,代码可复制粘贴

本文所述的MATLAB代码实现了一个基于两步加权最小二乘法的二维目标定位算法,利用多个锚点(基站)和时间差到达(TDOA)数据来估计未知目标的位置。 订阅专栏后可以看到完整代码,复制到MATLAB空脚本上面即可直接运行。若需要单独下载,可通过下面的链接:https://download.cs…

python数据写入excel文件

主要思路:数据 转DataFrame后写入excel文件 一、数据格式为字典形式1 k e , v [‘1’, ‘e’, 0.83, 437, 0.6, 0.8, 0.9, ‘好’] 1、这种方法使用了 from_dict 方法,指定了 orient‘index’ 表示使用字典的键作为行索引,然…

【深度学习】LSTM、BiLSTM详解

文章目录 1. LSTM简介:2. LSTM结构图:3. 单层LSTM详解4. 双层LSTM详解5. BiLSTM6. Pytorch实现LSTM示例7. nn.LSTM参数详解 1. LSTM简介: LSTM是一种循环神经网络,它可以处理和预测时间序列中间隔和延迟相对较长的重要事件。LSTM通…

使用ookii-dialogs-wpf在WPF选择文件夹时能输入路径

在进行WPF开发时,System.Windows.Forms.FolderBrowserDialog的选择文件夹功能不支持输入路径: 希望能够获得下图所示的选择文件夹功能: 于是,通过NuGet中安装Ookii.Dialogs.Wpf包,并创建一个简单的工具类: …

【leetcode练习·二叉树】用「分解问题」思维解题 II

本文参考labuladong算法笔记[【强化练习】用「分解问题」思维解题 II | labuladong 的算法笔记] 技巧一 类似于判断镜像二叉树、翻转二叉树的问题,一般也可以用分解问题的思路,无非就是把整棵树的问题(原问题)分解成子树之间的问…

Qt 编写插件plugin,支持接口定义信号

https://blog.csdn.net/u014213012/article/details/122434193?spm1001.2014.3001.5506 本教程基于该链接的内容进行升级,在编写插件的基础上,支持接口类定义信号。 环境:Qt5.12.12 MSVC2017 一、创建项目 新建一个子项目便于程序管理【…

PaaS云原生:分布式集群中如何构建自动化压测工具

场景 测试环境中,压测常常依赖环境中的各种工具获取基础信息,而这些工具可能集中在某个中控机上,此时想打造的自动化工具的运行模式是: 通过中控机工具获取压测所需的基本信息在中控机部署压测工具,实际压测任务分发…

关于sass在Vue3中编写bem框架报错以及警告问题记录

在编写完bem框架后 在vite.config.ts文件进行预编译处理时,报错的错误 1. 处理方式:使用新版api, 如图: 2. 处理方式:使用 use 替换掉 import, 如图: 3. 处理方式:使用路径别名&am…

内置RTK北斗高精度定位的4G执法记录仪、国网供电服务器记录仪

内置RTK北斗高精度定位的4G执法记录仪、国网供电服务器记录仪BD311R 发布时间: 2024-10-23 11:28:42 一、 产品图片: 二、 产品特性: 4G性能:支持2K超高清图传,数据传输不掉帧,更稳定。 独立北…

【前端】深入浅出的React.js详解

React 是一个用于构建用户界面的 JavaScript 库,由 Facebook 开发并维护。随着 React 的不断演进,官方文档也在不断更新和完善。本文将详细解读最新的 React 官方文档,涵盖核心概念、新特性、最佳实践等内容,帮助开发者更好地理解…

【Elasticsearch入门到落地】1、初识Elasticsearch

一、什么是Elasticsearch Elasticsearch(简称ES)是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。它使用Java编写,基于Apache Lucene来构建索引和提供搜索功能,是一个分布式、可扩展、近实…