清华最新RAG框架:Adaptive-Note RAG,比Adaptive RAG还要好

1. 为什么要提出 Adaptive-Note RAG?

RAG(检索增强生成)技术是一种能有效解决LLM(大语言模型)幻觉问题的可靠手段,通过借助外部非参数化知识,帮助LLMs拓展其知识边界。

但是,传统RAG在长问答、多跳问答等复杂任务时,往往很难收集到足够信息。

  • • 多跳问答中,要回答“What does the acronym of the organization Danish Football Union is part of stands for?”这一问题,首先需要检索到“FIFA”这个缩写,然后再检索“FIFA”代表的含义。

  • • 长形式问答中,处理模糊查询需要探索多个相关方面,并深入细节,以生成全面且详尽的答案。为了应对这一挑战,自适应 RAG(ARAG)尝试灵活决定“何时以及检索什么”,以捕获更多有价值的知识,回答复杂问答。

尽管 ARAG 在性能上有所提升,但主流的 ARAG 方法仍存在不足,主要因为两点限制:

  • • 首先,每次检索都会立即触发生成,可能导致每个输出片段只反映了特定步骤的有限知识,而忽略了不同检索步骤中检索信息的整合与互动。

  • • 其次,依赖 LLMs 主动预测检索时机,但 LLMs 的内部认知与实际检索需求之间的差异,可能导致错过关键的检索时机,从而造成知识收集的不足。

为此,自然语言处理与社会人文计算实验室(thunlp)研发了一款简洁、通用且高效的复杂问答增强型 RAG,名为 Adaptive Note-Enhanced RAG(Adaptive-Note)。

2. 什么是 Adaptive-Note RAG?

如上图所示,Adaptive-Note 包含三大核心组件:

  • • 左侧的迭代信息搜集器(Iterative Information Collector,IIC)

  • • 右侧的自适应记忆审核器(Adaptive Memory Reviewer,AMR)

  • • 任务导向的生成器

Adaptive-Note 能够从知识增长的视角自适应地搜集信息,并灵活地将新知与已搜集的知识整合。

  • • 首先,为解决不同检索步骤间信息交互不足的问题,IIC 采用笔记作为知识载体。Adaptive-Note 不会在检索后立即生成结果,而是与原始查询相关的所有细节进行最大化提炼,并存储于笔记中。

  • • 然后,新检索的信息以任何文本形式被Adaptive-Note 更新至笔记内现有的知识结构中。

  • • 接着,AMR 采用基于笔记的自适应停止探索策略,取代了不确定的主动检索。识别出最优笔记作为最佳记忆,并决定“何时检索何物以及何时停止”。

类似于人类学习一个新领域,通常先广泛阅读,然后决定逐步将哪些内容整合进现有知识,直至对该领域足够熟悉。同样,Adaptive-Note 策略允许首先进行贪婪探索。如果在某个时刻,笔记不再获得新知识,信息搜集便会停止。这一策略有效避免了主动检索预测的时间偏差,并确保了持续的知识增长。

2.1 迭代信息搜集器(IIC)

2.1.1 第一步:笔记启动阶段

以问题 q 启动搜集器,然后选择基于 BM25 或 DPR 的检索器进行信息检索,获取与 q 相关的 k 篇文档作为参考。不同于传统 RAG 方法直接将所有检索到的文档串联输入 LLM,Adaptive-Note 创建一个笔记来作为信息载体,记录并整合检索到的有价值信息。

下图是用来初始化笔记的提示词模板:

2.1.2 第二步:迭代信息搜集阶段

基于现有信息生成两个新的问题。新问题用于搜索补充资料,丰富笔记内容并帮助解答原始疑问。

类似于人类的行为,根据当前的最佳理解提出新问题。最优记忆包含了先前检索文档的相关知识点,以简洁、连贯的方式存储,减少了源文档的噪声。

2.1.3 第三阶段:笔记更新阶段

通过新提出的问题,挖掘文本库中潜在的、与查询语义相关的子空间,并把新检索到的文档内容自然融入已有知识体系。

与笔记启动阶段相似,不设定将新知融入旧知的固定模式,比如追加或基于事件的插入,这样做是为了避免束缚 LLM 能力的多样性。

从“如何稳健推动有效信息增长”的视角引导 LLM,通过零样本设置来完成复杂的信息搜集、精化和更新。

三个关键方面为 LLM 提供多维指导:

  • • 1)忠实性。收集的信息应贴近检索文档的风格,尽可能使用原文摘录;

  • • 2)有效性。收集的信息应对解决原始查询有所帮助;

  • • 3)可扩展性。收集的信息不应已包含在记忆中,换句话说,只需添加新的语义内容。

2.2 自适应记忆审核器(AMR)

从资料库中提取与问题相关的信息存在一个极限。基于此理念,自适应记忆审核器聚焦于两个核心问题:

  • • 何者应存为最优记忆?

  • • 何时停止检索?

2.2.1 触发条件 1:何者应存为最优记忆

引导 LLM 智能体细致审视笔记更新阶段产生的【更新笔记】与【最优记忆】,然后对比它们的内容质量。

如果【更新笔记】的质量超过【最优记忆】,【更新笔记】将取代原有记忆内容,成为最新的【最优记忆】。

如果不是,【最优记忆】的内容将保持不变。

进一步,为了进行多维度对比,在零样本设置下,通过提示模板(如上图)制定质量对比的评估标准。这些标准包括:

  • • 1)内容是否包含与问题直接相关的关键词信息

  • • 2)内容是否涵盖多个方面

  • • 3)内容是否包含充分的细节

  • • 4)内容是否足够实用

2.2.2 触发条件 2:何时停止检索

迭代过程包括连续检索并将有用信息汇总至笔记中,然后将质量更高的笔记存入记忆库。

设立了三个停止条件,以自适应地控制笔记更新,间接控制信息收集。

  • • 首先,如果更新笔记的质量未能超越 【最优记忆】,那么这一轮信息收集视为无效。因此,设定了一个无效信息收集次数(invalid update count,IU)的阈值

  • • 其次,某些查询可能与资料库中的大量长尾知识点相关,导致多次迭代后笔记信息量持续增长。但这些细节信息可能对回答原始查询并非必要。因此,设定了两个阈值:

  • • 一个信息收集步骤的最大数量阈值(collector iteration count,CI)

  • • 一个去重检索段落的最大数量阈值(retrieved passage count,RP)

这三个阈值作为终止迭代的条件,满足其中任何一个都将触发流程的终止。

2.3 面向任务的生成器

面向任务的生成器解析【最优记忆】,并针对原始问题 q 生成答案 α。

鉴于各类问答任务输出风格迥异(如长文本或短文本生成),设计了针对性的提示模板。

多跳问答任务追求简洁精确的输出,往往仅需几个词,因此,引导 LLM 仅输出关键答案,避免无关词汇的掺杂。

长文本问答任务,则引导其响应风格,而非施加严格的限制。

2.4 全过程示例

下图是作者在附件中补充的示例

下面是对视力进行翻译后的


问题:乔治湖大道历史区坐落的小镇在2010年有多少人口?


自适应笔记流程:


☞ 初始笔记:所附文件并未直接说明乔治湖大道历史区所在小镇的2010年人口数据。但文件指出,该历史区位于纽约州埃塞克斯县的蒂科德罗加,拥有14处物业上的20栋有贡献的建筑。文件详细描述了该区域的历史建筑,却未包含小镇的具体人口信息。


☞ 新查询:1. 2010年纽约州埃塞克斯县蒂科德罗加的人口数量是多少?2. 是否有2010年蒂科德罗加的人口统计报告或人口普查数据,以提供该镇人口信息?


☞☞ 更新笔记:检索到的文件显示,乔治湖大道历史区所在小镇在2010年的人口为5,042。这个小镇是位于纽约州埃塞克斯县的蒂科德罗加。乔治湖大道历史区是蒂科德罗加内的一个国家级历史区域,包含14处物业上的20栋有贡献的建筑,其中包括1919年至1921年间由W.A. Gale为蒂科德罗加纸浆和造纸公司建造的房屋和车库。这些房屋展现了一种受美国工匠风格影响的平房风格。此外,Gale也在Amherst Avenue历史区建造了房屋。➜ [知识增长:真] ➜ [最佳记忆]


☞ 新查询:1. 蒂科德罗加乔治湖大道历史区内的房屋展现的美国工匠风格平房有何特别意义?2. 是否能获取更多关于W.A. Gale为蒂科德罗加纸浆和造纸公司在乔治湖大道历史区建造的房屋的信息,比如建筑细节或历史背景?


☞ 更新笔记:检索到的文件确认,乔治湖大道历史区所在小镇在2010年的人口为5,042。蒂科德罗加位于纽约州埃塞克斯县。乔治湖大道历史区是蒂科德罗加内的一个国家级历史区域,包含14处物业上的20栋有贡献的建筑,其中包括1919年至1921年间由W.A. Gale为蒂科德罗加纸浆和造纸公司建造的房屋和车库。这些房屋展现了一种受美国工匠风格影响的平房风格。Gale也在Amherst Avenue历史区建造了房屋,这是蒂科德罗加的另一个国家级历史区域。➜ [知识增长:假]


  • • 朴素RAG:366 ✗

  • • Chain-of-Note:所提供的内容中没有答案。✗

  • • self-RAG:无法确定。✗

  • • FLARE:很抱歉,根据提供的搜索结果,没有关于乔治湖大道历史区所在小镇2010年人口的信息。很抱歉,根据提供的搜索结果,没有关于乔治湖所在小镇2010年人口的信息。✗

  • • Adaptive-Note:5,042 ✓

  • • 标准答案:5,042 ✓

3. 效果测评

3.1 主要成果

3.1.1 与一次性RAG 的对比

所有的一次性RAG方法均采用 GPT-3.5 作为内置 LLM。结果表明,Adaptive-Note RAG 显著超越了单步检索方法。

值得一提的是,在 2WikiMQA 数据集上的成绩比 朴素RAG 高出 12.2%。

一次性RAG极度依赖一次性检索的质量,而Adaptive-Note能够自适应地在语料库中探索更多知识。

基于单一且有限的检索信息进行优化(例如,Chain-of-note,Self-refine)或区分相关信息(例如,Self-rerank)往往益处不大,甚至可能因丢弃有价值信息而产生负面影响。因此,重要的是在保留更有效知识的同时进一步探索。

3.1.2 与 Adaptive RAG 对比

上表中,与几种现有的 Adaptive RAG 方法进行比较,包括 Flare、Self-RAG 和 ReAct。

结果表明,Adaptive-Note在多跳问答和长文本问答任务中均实现了最高性能,以相当大的优势超过了其他方法。

  • • 首先,ReAct 利用 LLM 的内部知识来决定是否需要进一步的检索操作。然而,LLM 可能对自己的回答过于自信,这可能会干扰检索决策,导致忽略部分知识。相比之下,Adaptive-Note 采用贪婪策略,首先彻底收集信息,然后决定是否将新的有用信息整合到现有知识中。使得 Adaptive-Note 能够最大化从语料库中提取知识,从而显著提高回答的准确性。

  • • 其次,Self-RAG 严重依赖于多个自我反思过程来评估每个检索段落的重要性,如果反思不准确,可能会错过有价值的信息。相比之下,Adaptive-Note允许 LLM 仔细审查并坚固地将每个段落中的相关知识整合到其记忆中。

  • • 此外,Adaptive-Note不将判断的最小单位限制在单个段落上;它可以评估任何长度或形式的文本。

  • • Flare 使用对数概率作为置信度分数来决定是否触发下一次检索步骤。然而,这些置信度分数可能无法准确反映检索的真实需求,影响了 Flare 对何时主动检索的判断。Adaptive-Note不是专注于检索的精确时机,而是强调用于回答问题的信息量是否增加了,因为这可以直接有助于提高答案的质量。

3.1.3 跨多款大型语言模型(LLM)的性能测试

为了验证Adaptive-Note的普适性和有效性,对三款不同的 LLM 进行了实验:

  • • 功能强大的在线 LLM GPT-3.5,

  • • Qwen2-7b

  • • Llama3-8b

在不同内置 LLM 环境下,Adaptive-Note与经典 RAG 的整体性能:无论参数规模大小,Adaptive-Note在所有三款 LLM 上都显著优于经典 RAG。

3.1.4 公平的 top-k 设置下的深度对比

在相同的原始 top-k 配置下,Adaptive RAG 方法通常会比单步方法使用更多的检索段落。

所有自适应步骤中每个样本的平均去重段落数,称之为公平 top-k。然后将这个公平 top-k 作为单次检索的 top-k 值应用于经典 RAG。

上图展示了在公平 top-k 设置下经典 RAG 的整体性能。此外,还对原始 top-k 和公平 top-k 之间的中间值进行了经典 RAG 结果的插值处理。

结果显示:所有数据集的趋势一致。随着 top-k 值的增加,经典 RAG 的性能有所提升,但仍然显著低于Adaptive-Note。

3.2 消融研究

3.2.1 迭代信息搜集器的效能

上表中,“Ours w/o AMR”表示仅采用了迭代信息搜集器(IIC)模块。

而“Ours w/o IIC&AMR”则意味着 Adaptive-Note 既不采用迭代信息搜集器(IIC)也不采用自适应记忆复审器(AMR),实际上等同于之前提到过的经典 RAG。

结果显示,在经典 RAG 中加入 IIC 能提升所有数据集的性能,证实了其有效性。

特别是在多跳问答数据集上,该模块的提升最为显著。这是因为多跳任务依赖于先前的关键信息来决定下一步的探索方向。

基于笔记的迭代更新方式,利用已有的知识生成新的查询,这与多跳问答的过程非常相似。

3.2.2 自适应记忆复审器的效能

AMR 不能单独运作,必须与 IIC 结合使用。因此,将其与不包含自适应模块的版本进行比较,以证明其效能。

缺少 AMR 模块的系统会持续检索和更新笔记,直至达到最大探索步数,增加了最终用于回答的笔记中包含不相关噪声的风险。

实验结果支持了这一分析,显示加入 AMR 可以进一步提升性能。

此外,自适应模块的一个关键优势在于,当已经存在一个相对高质量的笔记时,它能够触发早期停止策略,潜在地降低成本。

3.3 参数分析

3.3.1 CI 和 IU 的影响

CI:collector iteration count,信息收集步骤数

IU:invalid update count,无效信息收集次数

在上表中,当 IU 固定为 1 时,随着 CI 的增加,多跳问答数据集的性能得到提升,当 CI 为 3 时达到峰值。

ASQA 在 CI 为 2 时就已达到最佳性能,这可能是因为多跳问答需要更深入的探索。

因此,建议使用较小的 IU,以在实现与较高 IU 值相似的增益的同时,潜在地降低成本。

3.3.2 top-k 的影响

上表中,在不同的 top-k 设置下比较了我们的方法与经典 RAG。Adaptive-Note 在相同的 top-k 条件下始终优于经典 RAG,证实了其在检索段落数量变化时实现稳定增益的鲁棒性。

此外,在大多数情况下,随着每步检索的段落数量(top-k)的增加,Adaptive-Note 的性能也得到提升。

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
在这里插入图片描述

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉大模型视频和PDF合集👈

观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述
在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
在这里插入图片描述

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

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

相关文章

解决:gpg: 从公钥服务器接收失败:服务器故障

当你添加密钥时报错,可以按照下面的步骤,依次输入。 # 停止 Network Manager 服务 sudo service network-manager stop# 删除 Network Manager 的状态文件 sudo rm /var/lib/NetworkManager/NetworkManager.state# 重新启动 Network Manager 服务 sudo …

python 爬虫 入门 一、基础工具

一,网页开发者工具的使用 我们可以用 requests 库来从一个url或者说一个网址来爬取资源,这里以百度主页和windows初始浏览器Microsoft Edge为例,我们进入百度主页后按F12进入开发者模式,我们常用的功能是元素和网络,源…

word,exl,txt转pdf

有些时候需要上传一些附件,比如exl,word,预览的时候客户需要用pdf展示,下面就简答介绍下转换方法 效果图 依赖: 这是我从网上下载到本地然后再依赖的,也可以使用pom文件依赖更好 代码如下: i…

qiankun 应用之间数据传递

qiankun 应用之间数据传递 全局共享 initGlobalState qiankun initGlobalState API 单击前往 qiankun 内部提供了 initGlobalState 方法用于注册 MicroAppStateActions 实例用于通信,该实例有三个方法,分别是onGlobalStateChange、setGlobalState、of…

重塑输电线路运维管理,巡检管理系统守护电网稳定运行

在输电线路巡检管理中,一个高效、直接的巡检系统对于确保电力供应的稳定性和安全性至关重要。巡检系统能够直接对接运维需求,减少繁琐流程,并强化数据分析能力,这无疑为输电线路的运维管理带来了诸多优势。以下是对这些优势的具体…

求指导储层饱和度及含水率测井解释

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&am…

缓存穿透/击穿/雪崩(附生产BUG)

优质博文:IT-BLOG-CN 一、背景 为什么要写这篇文章? 生产缓存生成服务转java时,需要通过配置文件进行流量切换。开发人员同时打开了两个配置页面。原配置信息ABCDEF。在第一个配置页面进行缓存切换,添加G业务缓存,配…

国际期货收费行情源CTP推送式/期货配资软件开发对接行情源的技术性说明

在现代金融市场中,期货交易因其高风险和高回报特性而备受关注。为了满足期货交易者的需求,开发高效、稳定和安全的期货交易软件变得尤为重要。本文将对国际期货收费行情源CTP推送式及期货配资软件的开发对接行情源的技术细节进行详细说明。 一、CTP&…

AJAX——express框架

本文分享到此结束,欢迎大家评论区相互讨论学习,接下来我们将用一个案例来接着学习AJAX的内容,下一篇给大家准备一个案例的准备工作分享。

微知-如何临时设置服务器风扇转速?(ipmitool raw 0x30 0x30 0x02 0xff 0x40)

服务器风扇可以通过PWM输出来控制转速。 设置方式 设置单次PWM ipmitool raw 0x30 0x30 0x02 0xff 0x40如果要持续设置需要类似while循环持续输出: while true; do ipmitool raw 0x30 0x30 0x02 0xff 0x64; done > /dev/null参数说明: 其他参数&a…

【java】数组(超详细总结)

目录 一.一维数组的定义 1.创建数组 2.初始化数组 二.数组的使用 1.访问数组 2.遍历数组 3.修改数据内容 三.有关数组方法的使用 1.toString 2. copyOf 四.查找数组中的元素 1.顺序查找 2.二分查找binarySearch 五.数组排序 1.冒泡排序 2.排序方法sort 六.数组逆置…

科研绘图系列:R语言突出强调部分的饼图(pie plot)

文章目录 介绍加载R包数据数据预处理画饼图画图例合并图形系统信息介绍 饼图(Pie Chart),也称为圆图(Circle Graph),是一种圆形的统计图表,通过将圆分成若干扇形来展示数据的比例关系。每个扇形的角度大小代表了相应数据在总量中的占比。饼图的特点包括: 比例展示:直…

Redis知识应用索引指南

Redis,全称为Remote Dictionary Server,是一个开源的高性能键值对数据库。它以其卓越的性能、丰富的数据结构和灵活的持久化机制,在现代应用中扮演着至关重要的角色 1 什么是redis Redis是一个使用ANSI C语言编写的开源、跨平台的键值存储系…

10用户管理(Vue3+Spring Boot)

目录 1. 功能描述2. 接口地址3.后台Java代码4.前端框架搭建:views/user添加UserManageVue组件5. api/user.js中写请求接口代码6 获取用户信息7 删除用户8 修改状态9 效果演示 1. 功能描述 用户管理界面,对用户进行查询、状态变更、删除。2. 接口地址 #…

Linux系统——lvm逻辑卷

Linux系统——lvm逻辑卷 一、lvm逻辑卷1、lvm操作流程2、操作指令 二、逻辑卷操作1、创建逻辑卷1.1 /dev/cloud/openstack 5G xfs /cloud/openstack1.2 /dev/cloud/docker 10G ext4 /cloud/docker 2、逻辑卷扩容2.1 扩容流程2.2 需求一:扩容ext4文件系统的逻辑卷2.3…

Ubuntu-Ubuntu22.04下Anacodna3的qmake和Qt的qmake冲突问题

Ubuntu22.04下Anacodna3的qmake和Qt的qmake冲突问题 一、问题描述二、原因分析三、解决办法 一、问题描述 Ubuntu22.04下Anacodna3的qmake和Qt的qmake冲突问题 zhyzhy-HP:~/Sources/mpv-examples/libmpv/qt$ make g -c -pipe -g -Wall -Wextra -D_REENTRANT -fPIC -DQT_WIDGET…

SQL JOIN的学习

SQL JOIN (w3school.com.cn) 之前跟着老师学数据库的时候学过,最近又比较频繁的在使用。 再复习一下。 Id_P是主键 Id_O是主键 1. SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders WHERE Persons.Id_P Orders.Id_P 2. SEL…

Idea 2023.2.7构建SpringCloud多模块项目

Idea 2023.2.7构建SpringCloud多模块项目 本文介绍如何使用idea 2023.2.7构建基于SpringCloud alibaba微服务项目,基于Nacos注册中心。 环境准备: JDK版本:jdk17 SpringBoot:3.3.4 SpringCloud:2023.0.3 Nacos服务端:2.4.3 1、创建父工程&a…

大数据测试:Charles修改响应数据

上一篇大数据测试:Fiddler修改响应数据-CSDN博客 ,有同学反馈有没有Charles的方式修改响应数据,本篇就是Charles修改数据操作步骤,相比较fiddler,Charles相对简单,便捷,我很喜欢 1、背景&…

为什么SSH协议是安全的?

SSH的传输层协议(Transport Layer Protocol)和用户鉴权协议(Authentication Protocol)确保数据的传输安全,这里只介绍传输层协议,是SSH协议的基础。 本文针对SSH2协议。 1、客户端连接服务器 服务器默认…