论文笔记:Retrieval-Augmented Generation forAI-Generated Content: A Survey

北大202402的RAG综述

1 intro

1.1 AICG 

  • 近年来,人们对人工智能生成内容(AIGC)的兴趣激增。各种内容生成工具已经精心设计,用于生产各种模态下的多样化对象
    • 文本&代码:大型语言模型(LLM),包括GPT系列和LLAMA系列
    • 图像:DALL-E和Stable Diffusion
    • 视频:Sora
  • "AIGC"这一词强调内容是由高级生成模型而非人类或基于规则的方法产生的
    • 基础模型的架构最初由数百万参数组成,现在已增长到包含数十亿参数

1.2 信息检索

  • 检索旨在从庞大的资源池中定位相关的现有对象
    • 在当前时代,高效的信息检索系统可以处理高达数十亿的文档集合
    • 除了文档外,检索还已应用于其他模态

1.3 AICG的挑战

  • 难以保持知识的最新性
  • 无法整合长尾知识
  • 泄露私有训练数据的风险

1.4 RAG

  • 为了缓解上述挑战,提出了检索增强生成(RAG)
    • 用于检索的知识可以被概念化为非参数记忆
    • 这种形式的记忆容易修改,能够容纳广泛的长尾知识,并且还能编码机密数据
    • 检索还可以用来降低生成成本

  • 一个典型的RAG过程包括:
    • 给定一个输入查询,检索器定位并查找相关的数据源
    • 检索到的结果与生成器互动,以增强整体的生成过程
      • 可以通过不同的方式与生成过程交互
        • 作为生成器的增强输入
        • 在生成的中间阶段以潜在表征的形式加入
        • 以logits的形式贡献到最终的生成结果中
        • 影响或省略某些生成步骤
  • 虽然RAG的概念最初出现在文本到文本的生成中,但它也已被适应于各种领域
    • 代码
    • 音频
    • 图像
    • 视频
    • 知识
    • 科学领域

1.5 本文贡献

  • 提供了关于RAG的全面概述,覆盖了基础、增强、应用、基准测试、限制和潜在的未来方向

2 preliminary

  • 整个RAG系统由两个核心模块组成:检索器和生成器
    • 检索器负责从构建的数据存储中搜索相关信息
    • 生成器负责产生生成的内容

2.1 生成器

  • 将生成器分类为4个主要组别:Transformer、LSTM、扩散模型和GAN

2.1.1 Transformer

2.1.2 LSTM

2.1.3 扩散模型

  • 扩散模型通过逐渐向数据添加噪声直至变成随机,然后反转这一过程从噪声生成新数据
  • 这一过程基于概率建模和神经网络
  • 扩散模型主要有三种等效表述:
    • 去噪扩散概率模型
    • 基于分数的生成模型
    • 随机微分方程

  • 记x0是一个随机变量,遵循数据分布q(x0);xt是一个在时间步t添加噪声后遵循分布q(xt|x0)的随机变量,DDPM可以如下表述:
    • 前向过程
      • 通过一系列高斯噪声注入扰乱数据,将数据分布q(x0)转化为一个简单的先验分布q(xT) ≈ N(0, I)
      • 每个时间步的转移核由以下给出:
        • βt∈(0,1)是超参数
    • 反向过程
      • 通过一个可学习的马尔可夫链反转前向过程,生成新的数据样本
      • 反向过程从采样xT​∼p(xT​)开始,迭代地采样xt−1​∼pθ​(xt−1​∣xt​)直到t=0
    • 模型训练
      • 模型训练的目标是最大化数据x0的对数似然的变分下界(VLB)

2.1.4 GAN

  • 典型的GAN由两个主要组成部分:一个生成器和一个鉴别器。
  • 这两部分通过对抗学习相互竞争,使得生成器不断提高其生成逼真样本的能力,同时鉴别器不断提高其区分真伪样本的能力。

2.2 检索

  • 检索旨在识别和获取与信息需求相关的信息系统资源
  • 存储的信息资源为(k_i,v_i)_{i=1}^N,k为键值,v为value
  • 给定一个查询q,目标是使用相似度函数s搜索最相似的前k个键,并获取配对的值

2.2.1 稀疏检索器

  • 广泛用于文档检索
  • 利用词项匹配度量如TF-IDF、查询似然和BM2,分析文本中的词项统计并构建倒排索引以实现高效搜索
    • 其中,BM25是工业规模网络搜索中难以超越的基线
    • 对于包含关键词\{q_i\}_{i=1}^n的查询q,文档D的BM25得分是

2.2.2 密集检索器

  • 使用密集嵌入向量表示查询和键,并构建近似最近邻(ANN)索引以加速搜索

2.2.3 其他

  • 自然语言文本之间的编辑距离
  • 代码片段的抽象语法树(AST)
  • 涉及知识图谱的RAG方法可以使用k跳邻居搜索作为检索过程

3 RAG基础

3.1 基于查询的RAG

  • 将用户的查询与检索过程中获取的文档,直接集成到语言模型输入的初始阶段

3.2 基于潜在表征的RAG

  • 在基于潜在表示的RAG框架中,生成模型与检索对象的潜在表示交互,从而提高模型的理解能力和生成内容的质量
  • 这里常见的交互方法包括简单的拼接以及设计注意力机制等
  • 比如:Fusion-in-Decoder技术利用BM25和DPR检索支持性段落、
    • 将每个检索到的段落及其标题与查询串联起来,通过编码器单独处理它们
    • FiD通过在解码器中融合多个检索段落的信息,而不是在编码器中处理每个段落,降低了计算复杂性,并有效利用相关信息生成答案

3.3基于对数几率的RAG

  • 在基于对数几率的RAG中,生成模型在解码过程中通过对数几率结合检索信息
  • 比如:KNN-LM模型将预训练的语言模型与K近邻搜索结合
    • 利用预训练模型生成候选词及其概率分布的列表
    • 同时执行从数据库中检索,找到基于当前上下文最相关的k个邻居
    • ————>增强原始语言模型的输出

3.4 基于推测的RAG

  • 利用检索过程替代部分或全部的生成过程
  • 当检索器的成本低于生成器的生成成本时,这种方法具有很大的应用潜力
  • 比如:在使用类似 ChatGPT 接口作为生成器的场景下,调用次数越多意味着成本越高,因此可以搜索过往的相同或极度相似的问题来直接得到回答。

4 RAG的性能增强

4.1 输入增强

4.1.1 查询改写(Query Transformation)

  • 修改输入查询来增强检索结果
  • Query2doc[164]和HyDE[165]
    • 首先使用查询生成一个伪文档,然后使用这个文档作为检索的关键。
    • 这样做的优势是,伪文档将包含更丰富的相关信息,这有助于检索更准确的结果。
Query2doc: Query expansion with  large language models,EMNLP 2023
Precise zero-shot dense retrieval without relevance labels, ACL 2023

4.1.2 数据增强(Data Augmentation)

  • 在检索之前提前改善数据
    • 移除无关信息
    • 消除歧义
    • 更新过时文档
    • 合成新数据
    • ——>可以有效提升最终RAG系统的性能

4.2 检索器提升

  • 在RAG系统中,检索过程至关重要。
    • 通常,内容质量越好,就越容易激发LLMs在上下文学习以及其他生成器和范式中的能力。内容质量越差,就越有可能导致模型产生幻觉

4.2.1 递归检索

  • 检索前对查询进行分割,并执行多次搜索以检索更多更高质量的内容的过程
  • 比如:
    • [166]使用思维链(COT),使模型能够逐步拆分查询并提供更丰富的相关知识
    • LLMCS[168]将这项技术应用于对话系统,并通过重写对话记录获得了更好的检索结果
Query expansion by prompting large language models, arxiv 2023
Large  language models know your contextual search intent: A prompting  framework for conversational search, EMNLP 2023

4.2.2 块优化

  • 块优化技术指的是调整块的大小以获得更好的检索结果
  • 比如
    • 句子窗口检索
      • 一种有效的方法,通过获取小块的文本并返回围绕检索段的相关句子窗口来增强检索
      • 这种方法确保了目标句子之前和之后的上下文被包含在内,提供了对检索信息更全面的理解
    • 自动合并检索
      • LlamaIndex的另一种高级RAG方法
      • 以树状结构组织文档,父节点包含所有子节点的内容【文章和段落以及段落和句子,都遵循父子关系】
      • 在检索过程中,对子节点的细粒度搜索最终返回父节点,有效地提供了更丰富的信息

4.2.3 微调检索器

  • 一个好的嵌入模型可以在向量空间中将语义上相似的内容聚集在一起。
  • 检索器能力越强,就能为后续的生成器提供更多有用信息,从而提高RAG系统的效果
  • 对于已经具有良好表达能力的嵌入模型,我们仍然可以使用高质量的领域数据或任务相关数据对其进行微调,以提高其在特定领域或任务中的性能。
  • 【也即embedding的微调】
  • 比如:
    • REPLUG[127]
      • 将LM视为黑盒,并根据最终结果更新检索器模型
      • Replug: Retrieval-augmented black-box language models, arxiv 2023
    • APICoder[129]
      • 使用Python文件和API名称、签名、描述对检索器进行微调
      • When language model meets private library, EMNLP 2022
    • SYNCHROMESH[120]
      • 在损失中添加AST的树距离,并使用目标相似性调整对检索器进行微调
      • Synchromesh: Reliable code generation from pre-trained language models,ICLR 2022
    • EDITSUM[138]
      • 微调检索器以减少检索后摘要之间的杰卡德距离
      • Editsum: A retrieve-and-edit framework for source code summarization, ASE 2021

4.2.4 混合检索

  • 同时使用多种类型的检索方法
  • 比如:
    • Rencos[119]
      • 使用稀疏检索器在句法层面检索相似的代码片段
      • 使用密集检索器在语义层面检索相似的代码片段
      • Retrieval-based neural source code summarization, icse 2020
    • BASHEXPLAINER[139]
      • 首先使用密集检索器捕获语义信息
      • 然后使用稀疏检索器获取词汇信息
      • Bashexplainer:  Retrieval-augmented bash code comment generation based on finetuned codebert, ICSME 2022
    • RetDream[48]
      • 首先使用文本检索,然后使用图像嵌入进行检索
      • Retrieval-augmented score distillation for text-to-3d generation, ARXIV 2022

4.2.5 重新排序

  • 重新排序检索到的内容,以实现更大的多样性和更好的结果
  • 比如:
    • Re2G[175]
      • 在传统检索器之后应用了重排模型
      • 重排模型的效果是重新排序检索到的文档,其目的是减少将文本压缩成向量所导致的信息损失对检索质量的影响
      • Re2g: Retrieve, rerank, generate,NAACL 2022
    • AceCoder[177]
      • 使用选择器对检索到的程序进行重排。
      • 引入选择器的目的是减少冗余程序并获得多样化的检索程序
      • Acecoder: Utilizing existing  code to enhance code generation, 2023 ARXIV

4.2.6 元数据过滤

元数据过滤[179]是另一种处理检索文档的方法,它使用元数据(如时间、目的等)过滤检索到的文档以获得更好的结果。

4.3生成器增强

在RAG系统中,生成器的质量往往决定了最终输出结果的质量。因此,生成器的能力决定了整个RAG系统效果的上限。

4.3.1提示工程

  • 专注于提高LLMs输出质量的提示工程技术,如提示压缩、Stepback提示、Active提示、思维链提示等,都适用于RAG系统中的LLM生成器
  • 比如:
    • LLMLingua[183]
      • 应用一个小模型压缩查询的总长度以加速模型推理,减轻不相关信息对模型的负面影响,缓解“中途迷失”现象
      • Llmlingua: Compressing prompts for accelerated inference of large language models,EMNLP 2023
    • ReMoDiffuse[49]
      • ]通过使用ChatGPT将复杂描述分解成解剖文本脚本
      • Remodiffuse: Retrieval-augmented motion diffusion model ICCV 2023
    • ASAP[185]
      • 在提示中添加示例元组以获得更好的结果
      • 示例元组由输入代码、函数定义、分析该定义及其关联评论的结果组成
      • Automatic semantic  augmentation of language model prompts (for code summarization) ARXIV 2024
    • CEDAR[130]
      • 使用设计好的提示模板将代码演示、查询和自然语言指令整合到提示中
      • Retrieval-based prompt  selection for code-related few-shot learning ICSE 2023

4.3.2 解码调优

  • 在生成器处理过程中添加额外控制,可以通过
    • 调整超参数来实现更大的多样性
    • 以某种形式限制输出词汇
  • 比如:
    • InferFix[131]
      • 通过调整解码器的温度来平衡结果的多样性和质量
      • Inferfix: End-to-end program repair with  llms, FSE 2023
    • SYNCHROMESH[120]
      • 通过实现一个完成引擎来限制解码器的输出词汇,以消除实现错误
      • Synchromesh: Reliable code generation from  pre-trained language models,ICLR 2022

4.3.3 微调生成器

  • 微调生成器可以增强模型在具有更精确的领域知识或更好地与检索器匹配方面的能力
  • 比如
    • APICoder[129]
      • 使用API信息和代码块与重新洗牌的新文件一起微调生成器CODEGEN-MONO 350M
      • When language model meets private library EMNLP 2022
    • CARE[158]
      • 首先使用图像数据、音频数据和视频-文本对来训练编码器
      • 然后以减少字幕损失和概念检测损失为目标微调解码器(生成器),在此过程中编码器和检索器被冻结。
    • RetDream[48]
      • 使用渲染图像微调LoRA适配器[188]

4.4 结果增强

  • 在许多场景中,RAG的最终结果可能无法达到预期效果,一些结果增强技术可以帮助缓解这个问题。

4.4.1 重写输出

  • SARGAM[189]
    • 通过使用Levenshtein Transformer对生成的代码相关任务结果进行修改
    • 通过分类删除分类器、占位符分类器和插入分类器,以更好地适应实际代码上下文。
    • Concept-aware video captioning:  Describing videos with effective prior information  TIP 2023
  • CBR-KBQA[52]
    • 通过将生成的关系与知识图谱中查询实体的本地邻域中呈现的关系对齐,修订结果
    • Case-based reasoning for natural language queries over knowledge bases,EMNLP 2021

4.5 RAG流程增强

4.5.1 自适应检索

  • 对RAG的一些研究和实践表明,检索并不总是对最终生成结果有益。
    • 当模型本身的参数化知识足以回答相关问题时,过度检索会导致资源浪费,并可能增加模型的混乱。
4.5.1.1 基于规则的方法
  • FLARE[191]
    • 在生成过程中通过概率主动决定是否以及何时进行搜索
    • Active retrieval augmented generation 2023
  • Efficient-KNNLM[36]
    • 结合了KNN-LM和NPM的生成概率,并使用超参数λ来确定生成和检索的比例
  • Mallen等人[192]
    • 在生成答案之前对问题进行统计分析,允许模型直接回答高频问题,并为低频问题引入RAG
    • When not to trust language models: Investigating effectiveness of parametric and non-parametric memories,ACL 2023
  • Jiang等人[193]
    • 研究了模型不确定性、输入不确定性和输入统计,以全面评估模型的信心水平。
    • 最终,基于模型的信心水平,做出是否检索的决定。
  • Kandpal等人[194]
    • 通过研究训练数据集中相关文档的数量与模型掌握相关知识的程度之间的关系,帮助确定是否需要检索。

4.5.1.2 基于模型的方法

  • Self-RAG[126]
    • 使用训练好的生成器基于不同指令下的检索令牌决定是否进行检索
    • 通过自我反思令牌评估检索文本的相关性和支持程度。
    • 最后,基于批判令牌评估最终输出结果的质量
    • Selfrag: Learning to retrieve, generate, and critique through self-reflection 2023
  • Ren等人[195]
    • 使用“判断提示”来确定LLMs是否能回答相关问题以及它们的答案是否正确,从而协助确定检索的必要性
    • Investigating the factual knowledge boundary of large language models with retrieval augmentation 2023
  • SKR[196]
    • 利用LLMs自身的能力预先判断它们是否能回答问题,如果能回答,则不进行检索。
    • How can we know When language models know? on the calibration of language models  for question answering TACL 2023

4.5.2 迭代RAG

  • RepoCoder[197]
    • 应用迭代检索-生成流程,以更好地利用代码完成任务中不同文件中散布的有用信息。
    • 它在第i次迭代中用之前生成的代码增强检索查询,以获得更好的结果
    • Self-knowledge guided  retrieval augmentation for large language models EMNLP 2023
  • ITER-RETGEN[198]
    • 以迭代的方式协同检索和生成。
    • 生成器当前的输出在某种程度上可以反映它仍然缺乏的知识,而检索可以检索缺失的信息作为下一轮的上下文信息,这有助于提高下一轮生成内容的质量。
    • Enhancing retrieval-augmented large language models with iterative  retrieval-generation synergy EMNLP 2023

RAG在不同模态上的具体应用

5.1 文本

问题回答
  • 从大量的文本数据源中提取问题的答案的过程
  • FID [33] 和REALM [31] i模型
    • 通过查询识别出前K个最相关的文章片段
    • 将每个片段与问题一起转发给大模型生成K个响应
    • 这些回答最终被综合形成一个最终的答案
  • Atlas [28]
    • 证明了利用RAG协助大语言模型完成开放领域的问答任务,可以显著提高其小样本学习能力
事实验证
  • 事实验证设计评估信息的准确性。
  • 在现代数字化的背景下,数据呈指数级别增长,在社交媒体和在线新闻平台上未经检查的信息迅速扩散,事实验证正是打击这些具有欺骗性的假新闻的方法
  • CONCRETE [205]
    • 利用跨语言检索机制来挖掘丰富的多语种证据
    • 有效地弥补了事实验证中数据集代表性不足的语言的缺口
常识推理
  • 需要机器以人的方式利用它们的外部知识对问题或任务进行推断、决策
  • 然而常识知识范围之广、推理过程之复杂使其成为NLP领域长期具有挑战性的问题
人机对话
  • 人机对话包括机器理解自然语言的能力,并熟练地运用这种技能与人类无缝接触
  • Cai 等人[208]
    • 通过检索和提炼过去会话历史的本质,将文本生成任务重新想象为完形填空
  • Komeili等人[209]
    • 通过利用先进的搜索引擎技术从互联网中获取相关内容,提高了对话生成的质量
神经网络机器翻译将文本从源语言翻译成目标语言的自动化过程
事件提取
  • 从非结构化文本数据中精确定位和提取特定事件类型的实例
  • 最终目标是将文本嵌入中的细节转换为结构化格式,进而促进高级分析、高级信息检索和其他下游应用
摘要从冗长的文本中提取重要信息,并产生一个简洁,连贯的概括主题的摘要

5.2 代码

 代码生成将自然语言描述转换为代码实现,是一个从文本到代码的过程
代码总结其目标是将代码转换为自然语言描述,这是一个代码到文本的过程
代码补全码补全在编码层面可以被认为是“下一个句子预测”任务
自动程序修复存在bug的代码可能需要花费大量的精力来修复。自动程序修复技术则利用生成模型输出正确的版本

5.3 音频

音频生成音频生成的目标是通过自然语言输入来生成对应的音频
音频字幕音频字幕的目标是用音频数据生成自然语言,这是一个序列到序列的任务

5.4 图像

图像生成

RAG通过整合信息检索系统来增强生成模型。

对于图像生成,这意味着利用检索数据生成高保真度和可靠的图像,即使是罕见的或看不见的实体也可以生成

图像字幕

基于检索增强的图像字幕是一种受检索增强语言生成启发的创新方法。

与仅依赖于输入图像的传统图像字幕方法不同,这种新技术通常通过利用从数据存储中检索到的一组字幕以及图像本身来生成描述性句子。

5.5 视频

视频字幕用描述性的话语来描述视觉内容
视频生成文本到视频生成是在给定的自然语言描述下生成视频

5.6 知识

 知识库问答利用知识库来确定问题的正确答案
知识图谱补全

知识图谱由三元组组成,包括头部实体、关系和尾部实体。

知识图谱补全的任务是预测不完整三元组中缺失的实体

6 评估标准

  • Chen等人[252]提出了一个RAG基准,该基准分别从噪声鲁棒性、负面拒绝性、信息整合性和反事实鲁棒性四个方面对RAG进行评估。        
    • 噪声鲁棒性评估LLM是否能够从包含噪声信息的文档中提取必要的信息
      • 噪声信息与输入查询相关,但对回答查询无用
    • 负面拒绝性衡量LLM是否会在检索到的内容不够时拒绝响应查询
    • 信息整合评估LLM是否能够通过整合多个检索内容来获取知识并做出响应
    • 反事实鲁棒性是指LLM识别检索内容中与事实不符的错误的能力。
  • 另外三个基准,RAGAS [253], ARES [254] andTruLens [255]
    ,分别考虑了三个不同的方面:可信度,答案相关性和上下文相关性
    • 当正确答案能从检索到的事实推断出来时,可信度关注结果中的错误事实
    • 回答相关性衡量生成的结果是否真正解决了问题
    • 上下文相关性判断检索到的内容是否包含尽可能多的知识来回答查询,以及尽可能少的无关信息

7 RAG的局限性

7.1 检索结果中的噪声

  • 检索结果中不可避免地存在一定程度的噪声,表现为不相关的对象或误导性信息
  • 尽管常识是提高检索的准确性,将有助于 RAG 的有效性,但最近的一项研究[258]表明,噪声检索结果可能反而有助于提高生成质量
    • 1个可能的解释是,检索结果的多样性对于快速构建也可能是必要的。
    •  因此,噪声对检索结果的影响仍然不确定,导致人们对采用哪种度量进行检索以及如何促进检索器和生成器之间的交互仍感到困惑。

7.2 额外开销

  • 虽然在某些情况下检索可以帮助降低生成成本,但检索的结合有时会带来不可忽略的开销
    • 当与复杂的增强方法结合使用时,如递归检索和迭代RAG,额外开销将变得更明显。
    • 此外,随着检索规模的扩大,与数据源相关的存储和访问复杂性也会增加。 

7.3 检索和生成的交互

  • 鉴于检索器和生成器的目标不一致,并且两个模型可能不共享相同的潜在空间,设计和优化这两个组件之间的交互会遇到挑战
  • 虽然已经提出了许多方法来实现有效的 RAG,这些方法要么将检索和生成过程分开,要么在中间阶段将它们集成
    • 前者更加模块化,但后者可能会从联合训练中受益
  • 到目前为止,还缺乏对不同场景下不同交互方式的充分比较

7.4 长上下文生成

  • 最近出现了一个观点:“像 Gemini 1.5 这样的长上下文模型将取代 RAG”。 
  • 然而,这种说法并不成立——RAG 在管理动态信息方面表现出更大的灵活性,涵盖最新的和长尾知识。
  • RAG 未来将利用长上下文生成来实现更好的性能,而不是简单地被它淘汰。

8 未来趋势

8.1 关于RAG方法、增强和应用的更高级研究

  • 开发RAG更先进的方法、增强和应用
  • 现有的工作已经探索了检索器和生成器之间的各种交互模式。 
    • 然而,由于这两个组件的优化目标不同,实际的增强过程对最终的生成结果有很大影响。 
  • 对更先进的增强基础的研究有望充分释放 RAG 的潜力。
  • RAG 是一种通用技术,已应用于多种模式和任务。
    •  然而,大多数现有工作直接将外部知识与特定的生成任务相结合,而没有彻底考虑目标领域的关键特征。
    •  因此,对于未充分利用 RAG 功能的生成任务,设计适当的 RAG 将是更利于模型表现的。

8.2 高效部署和处理

  • 目前,已经提出了几种针对LLM的基于查询的RAG部署解决方案,例如LangChain和LLAMA-Index。
  • 然而,对于其他类型的 RAG 和生成任务,缺乏即插即用的解决方案。
  • 此外,考虑到检索带来的额外开销,并考虑到检索器和生成器的复杂性将继续增长,在 RAG 中实现高效处理仍然是一个挑战,需要有针对性的系统优化。

8.3 结合长尾和实时知识

  • 虽然RAG的一个关键动机是利用实时和长尾知识,但知识更新和扩展的管道仍未探索。
  •  许多现有的工作仅用生成器的训练数据构成检索源,从而忽略了检索本来可以提供的动态和灵活的信息优势。 
    • 因此,设计一个具有不断更新的知识或灵活的知识源的有用的RAG系统,以及相应的系统级优化,是一个不断发展的研究方向。

8.4与其他技术相结合

  • 本质上,RAG 与其他技术正交,这些技术的目标都是提高 AIGC 的有效性,包括微调、强化学习、思想链、基于代理的生成和其他潜在的优化。 
  • 然而,同时应用这些技术的探索仍处于早期阶段,需要进一步研究深入算法设计并充分发挥其潜力。

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

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

相关文章

Linux网络配置(超详细)

Linux网络配置大全 Linux网络配置一.网络地址配置网络地址查看–ifconfig使用网络配置命令设置网络接口参数-ifconfig禁用(临时)或者重新激活网卡设置虚拟网络接口 修改网络配置文件网络接口配置文件 IP命令详解OPTIONS选项OBJECT对象 ip link 二、获取和修改主机名hostname查看…

E5063A是德科技E5063A网络分析仪

181/2461/8938产品概述: Keysight E5063A 是一款低成本网络分析仪,可为测试天线、电缆、滤波器和 PCB 等简单无源元件提供优化的性能和功能。Keysight E5063A 为您的企业提供价格和性能之间的最佳平衡,以满足您的业务和技术要求。它利用行业…

QT_day4:对话框

1、完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如果账号和密码不匹配&…

Trapcode Particular---打造惊艳粒子效果

Trapcode Particular是Adobe After Effects中的一款强大3D粒子系统插件,其能够创造出丰富多样的自然特效,如烟雾、火焰和闪光,以及有机的和高科技风格的图形效果。Trapcode Particular功能丰富且特色鲜明,是一款为Adobe After Eff…

Elasticsearch:语义搜索即服务处于卓越搜索的中心

作者:来自 Elastic Sherry Ger, Stephen Brown 对于许多企业来说,搜索卓越中心(center of excellence - COE)向其用户提供搜索服务,从不同的数据源中整理知识,并将搜索功能集成到其内部和外部应用程序中。…

第4章.精通标准提示,引领ChatGPT精准输出

标准提示 标准提示,是引导ChatGPT输出的一个简单方法,它提供了一个具体的任务让模型完成。 如果你要生成一篇新闻摘要。你只要发送指示词:汇总这篇新闻 : …… 提示公式:生成[任务] 生成新闻文章的摘要: 任务&#x…

完整部署一套k8s-v.1.28.0版本的集群

一、系统情况 虚拟机版本:esxi 6.7 系统版本:centos7.9_2009_x86 配置:4核8G(官网最低要求2核2G) 192.168.0.137 master节点 192.168.0.139 node2节点 192.168.0.138 node1节点(节点扩容练习&#xf…

(五)ROS2学习--创建调用其它包接口的一个发布者

这里写自定义目录标题 一、背景二、构建步骤1. 构建项目包2. 创建消息接口3. 修改“package.xml”4. 修改"src/smart_car/CMakeLists.txt"5. 创建发布者程序 三、编译及验证1. 编译2. 验证 一、背景 主机:Ubuntu20.04 介绍:基于上一篇&#x…

大话设计模式之工厂模式

工厂模式(Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的最佳方式,而无需指定将要创建的对象的确切类。通过使用工厂模式,我们可以将对象的创建和使用分离,从而使代码更具灵活性和可维护性。…

音视频处理 - 音频概念详解,码率,采样率,位深度,声道,编码

1. 音频采样 与视频不同,音频的最小单位不是一帧,而是一个采样。 采样是当前一刻声音的声音样本,样本需要经过数字转换才能存储为样本数据。 真实声音是连续的,但是在计算机中,声音是离散且均匀的声音样本。 2. 位深…

22 多态

目录 多态的概念多态的定义及实现抽象类多态的原理单继承和多继承关系中的虚函数表继承和多态常见的面试问题 前言 需要声明的,下面的代码和解释的哦朴实vs2013x86环境,涉及指针是4bytes,如果要其他平台下,部分代码需要改动。比…

ttkbootstrap界面美化系列之Notebook(四)

在简单的界面设计中,Notebook也是常用的组件之一,Notebook组件的引入可以根据标签来切换不同的界面。使得界面更有层次感,不必都挤在一个界面上。在tkinter中就有Notebook组件,在ttkbootstrap中,同样也对Notebook进行了…

四、Yocto创建静态IP和VLAN(基于raspiberrypi 4B)

Yocto创建VLAN配置 在车载域控中很多时候需要创建VLAN,本小节记录如何为yocto构建出来的image自动化创建静态IP以及VLAN。 关于各种VLAN的配置参考:VLAN 1. ubuntu系统中使用netplan创建VLAN 正常情况下我们在ubuntu系统中可以通过netplan来自动化创建…

会话跟踪技术(Session 以及Cookie)

一: 前提概要 1>会话: 会话指的是用户打开浏览器, 访问某些web服务器资源的时候, 会话就会进行建立, 直到有一方断开, 那么会话才会结束, 需要注意的一点是, 一次的会话可以有多次的请求以及响应 2>会话跟踪: 是一种用于维护浏览器状态的方法, 服务器需要识别多次的请求,…

CTF题型 php://filter特殊编码绕过小汇总

CTF题型 php://filter特殊编码绕过小汇总 文章目录 CTF题型 php://filter特殊编码绕过小汇总特殊编码base64编码string过滤器iconv字符集 例题1.[Newstarctf 2023 week2 include]2.[Ctfshow web 117] php://filter 是一个伪协议,它允许你读取经过过滤器处理的数据流…

Jmeter 从登录接口提取cookie 并 跨线程组调用cookie (超详细)

文章目录 一、开始前的准备二、 业务场景介绍三、从登录接口提取cookies四、跨线程组调用cookies 一、开始前的准备 1、安装Jmeter,参考文章:JMeter 3.1 和JMeterPlugin的下载安装 2、设置配置文件使Cookie管理器保存cookie信息。 修改apache-jmeter-x…

C语言:编译和链接

前言 在ANSI C的任何一种实现中,存在两个不同的环境。 第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令(二进制指令)。第2种是执行环境,它用于实际执行代码。 目录 1.翻译环境1.1 预处理(预编…

iOS - Runtime - Class-方法缓存(cache_t)

文章目录 iOS - Runtime - Class-方法缓存(cache_t)1. 散列表的存取值 iOS - Runtime - Class-方法缓存(cache_t) Class内部结构中有个方法缓存(cache_t),用散列表(哈希表)来缓存曾经调用过的方法,可以提高…

vlan间单臂路由

【项目实践4】 --vlan间单臂路由 一、实验背景 实验的目的是在一个有限的网络环境中实现VLAN间的通信。网络环境包括两个交换机和一个路由器,交换机之间通过Trunk链路相连,路由器则连接到这两个交换机的Trunk端口上。 二、案例分析 在网络工程中&#…

Qt 完成图片的缩放拖动

1. 事件和函数 主要使用事件paintEvent(QPaintEvent *event)和drawTiledPixmap函数实现绘图。 paintEvent事件在改变窗口大小、移动窗口、手动调用update等情形下会被调用。需先了解下绘图该函数的用法。 - QPainter::drawTiledPixmap(int x, int y, int w, int h, const QPi…