[论文笔记]构建基于RAG聊天机器人的要素

news2024/11/15 20:08:14

引言

今天带来一篇构建RAG的论文笔记:FACTS About Building Retrieval Augmented Generation-based Chatbots。

基于生成式人工智能构建企业聊天机器人迅速成为行业中最受关注的应用之一,旨在提高员工生产力。

然而,构建成功的企业聊天机器人并不容易。需要精心设计的RAG流程,包括微调语义嵌入和LLM、从向量库中检索相关文档、查询改写、结果重排序、设计有效的提示、遵循文档访问控制、提供简明回答、包含相关参考资料、保护个人信息以及构建智能体来编排所有这些过程。

本篇工作提出了一个构建有效RAG聊天机器人的框架:用于IT和HR福利、公司财务已经一般企业内容的聊天机器人。

本文的贡献有:

  1. 引入了FACTS框架,解决了上述挑战。FACTS表示RAG聊天机器人必须做到的五个方面——内容新鲜度(content freshness,F)、架构(architecture,A)、LLM的经济成本(cost economics of LLM,C)、测试(testing,T)以及安全(security,S)。
  2. 提出了RAG流程的15个控制点和优化聊天机器人性能的技术。
  3. 提供了试验论证。

1. 总体介绍

作者发现即使在后ChatGPT时代,打造成功的企业聊天机器人也并不容易。该过程需要精心设计RAG流水线、微调LLM、提示工程、确保企业知识的相关性和准确性、遵守文档访问控制权限、提供简介的回应、包含相关参考资料、保护个人隐私。

本篇工作分享了作者在构建高效、安全和经济的聊天机器人方面的经验和策略。从实践的角度回答以下问题:

  • 在构建和部署基于生成式AI的企业级聊天机器人时需要考虑哪些关键挑战?通过尝试以灵活的架构(A)交付新鲜内容(F)、成本效益©、测试良好(T)和安全(S)这5个方面来展示作者的工作FACTS。
  • 如何通过 RAG 系统在构建聊天机器人时实现用户可接受的质量水准?介绍了 RAG流水线的15个控制点以及优化每个控制点和整体 RAG流水线的技术。

2. 案例学习

本篇论文介绍了作者在英伟达使用RAG和LLM构建的三个聊天机器人:

  • NVInfo Bot 回答有关企业内容(大约 500 亿份文档,大小大于7TB)的问题,补充了公司内部搜索。它管理各种数据格式并强制执行文档访问控制。技术栈包括 LangChain、用于检索和处理文档访问控制的供应商向量数据库、LLM 模型(可选择多个LLM模型)和自定义 web-UI。
  • NVHelp Bot 专注于 IT 助手和 HR 福利约 2K 个包含文本、表格、图片、pdf 和 html 页面的多模态文档),使用与 NVInfo 机器人相似的技术栈,但数据量较小。
  • Scout Bot 处理来自公共来源的关于财务收益的问题,管理结构化和非结构化数据(约 4K 个包含文本、表格、pdf 和 html 页面的多模态文档)。技术栈包括开源向量数据库、LangChain、Ragas 评估、可选择的LLM 模型和自定义 web-UI。

下文总结了在构建上述三个聊天机器人过程中遇到的挑战和学到的经验。

首先探讨在每个聊天机器人中交付新鲜企业内容所面临的挑战。

3. 在LLM驱动的聊天机器人中确保企业数据的新鲜度(F)

尽管基础模型非常强大,但通常由于缺乏领域特定和企业特定的知识而表现不佳。

检索增强生成是一个通过语义匹配从向量数据库中检索相关信息,然后将其输入LLM用于响应生成的过程。RAG流水线中,向量数据库和LLM共同确保提供及时的企业知识。

然而,RAG流水线具有很多控制点,每个控制点如果调整不当可能会导致较低的准确性、幻觉和无关的回复。

此外,多模态内容需要使用多模态检索器来处理结构化、非结构化以及半结构化的数据,包括PPT、图表、视频和会议记录。

202407121357

Figure 1: Control Points in a typical RAG pipeline when building Chatbots.

受到1的启发,作者从图1中可视化的案例研究中确定了RAG的15个控制点。每个控制点都标有一个数字。下文提出了针对解决RAG控制点的见解和经验。

3.1 经验

在图4中提供了这15个控制点的总结描述、每个控制点相关的挑战以及建议的优化方法。每个控制点分别标记为RAG-C[num]RAGOp[num],用于RAG和RAGOps流程。

元数据增强、分块、查询重写、查询重排序

在RAG流水线的元数据增强、分块、查询重写、查询重排序对聊天机器人响应质量影响最大。LLM响应生成质量高度依赖于检索相关系。检索相关性又高度依赖于文档元数据增强、分块和查询重写。

作者实现了基于网格搜索的automl能力,以找到合适的分块标记大小配置,尝试了各种不同的提示词,并探索了不同的分块重排策略来找到每个对应的最佳设置。

混合搜索 向量数据库在处理匹配实体(人名、地点、公司名等)方面表现不佳。使用字面量搜索(比如elastic search)和向量搜索相结合的方式提供了更好的检索相关性和更广泛地覆盖范围。

202407121358

Figure 2: Agent architecture for handling complex queries

智能体架构

像"比较英伟达自2024财年Q1到Q4的收入,并就此期间收入变化的主要影响因素提供分析评论"这样的问题需要能够进行查询分解和编排的复杂智能体。图2显示了作者在Scout bot中处理这种问题时的一种机制。信息检索系统和LLM都无法回答复杂查询。此时需要复杂智能体和多智能体架构来处理复杂查询。

是否需要微调大模型?

当涉及LLM时,无法直接回答该问题。有些应用情况可能适用于基础模型,而其他情况则需要定制。在考虑定制化时,有几种选择。包括提示工程、P-tuning、参数高效微调(PEFT)和全量微调(FT)。

202407121311

Figure 3: NVHelp answer quality and latency metrics com parison among different models

微调需要大量投资在数据标注、训练和评估上。每一项都可能耗费较大。因此在定制LLM时,自动化测试和质量评估流程变得至关重要,以确保效率和准确率。图3显示了作者进行的关于GPT4模型和一些开源模型在NVHelp bot上大于245个查询的准确信和延迟的权衡评估。

结果显示,Llama3-70B模型在多个答案质量方面表现出色,同时保持可接受的延迟。

处理多模态数据

企业数据是多模态的。在处理结构化、非机构化和多模态数据对于多功能RAG流水线至关重要。

如果文档的结构是一致的且事先已知(例如在金融收益领域的EDGAR数据库中发现的SEC报表数据,由Scout机器人处理),实施基于章节的拆分,使用章节标题和副标题,并将其纳入片段的背景中可以提高检索相关性。

像https://unstructured.io/这样的解决方案,专门从PDF中提取和结构化内容,有助于在上下文中解析和分块非结构化文档。

RAGOPs

一旦部署了RAG流水线,有效监控其监控状况是至关重要的。当回答质量低下时,需要进行彻底的错误分析。要调试检索相关性,需要了解片段(chunk)与其关联的元数据存储在向数据库中的详细信息、查询是如何改写的、哪些片段被检索出来以及这些片段是如何排名的。

同样如果LLM响应不正确,审查用于生成答案的最终提示是非常重要的。对于引用文档方面,需要追溯到原始文档链接及其对应的片段。

RAGOps/LLMOps和评估框架,如Ragas,对于提供必要的自动化以在RAG流水线中的准确性改进周期中实现快速迭代至关重要。更多详细信息参考图4。

RAG 阶段描述挑战可选解决方案
RAG-C1:数据提取连接到数据源,将数据导入存储库以确保数据的新鲜度和可访问性* 规模
* 文档RBAC(基于角色的访问控制)
* ACL 支持
* 持续更新的状态维护
* 持续提取支持的删除、修改、更新操作
* 需要流式提取流水线
RAG-C2:数据解析转换数据到助于检索的格式,处理结构化以及半结构化数据,包括多模态文档* 结构化+非结构化数据
* 多模态PDF(PPT)
* 智能HTML解析 + 结构化解析
* 章节级拆分
* PDF解析
RAG-C3:元数据增强为了实现一致和相关的检索,对数据进行标准化、清洗、丰富处理* 基于领域特定格式的数据清洗* 使用NLTK库或LLMs提取和丰富文档和文本块的数据,标题,文件名和文章编写时间,以及重要关键词
RAG-C4:嵌入模型转换预处理数据到稠密向量来理解和匹配用户查询* 开箱即用模型的限制* 开源嵌入模型 v.s. 微调嵌入模型
RAG-C5:LLMs抽取元数据使用LLMs抽取关键词和概念,增强元数据以指导检索* LLM在指令遵循中的不确定性
* 数学
* 防护
* 元数据增强 - 使用NLTK库或LLMs提取和丰富文档和文本块的数据,标题,文件名和文章编写时间,以及重要关键词
RAG-C6:分块拆分数据到可管理的文本块以高效检索* 随意的标记级拆分会影响检索质量
* 分块结构化数据
* 使用HTML标签进行章节级分块
* 多标签索引
* 对于表格数据使用Markdown和LLM摘要
* 使用网格搜索寻找最优分块和重叠大小
RAG-C7:检索器存储管理向量表示和字面量数据用于查询快速响应* 存储卷的缩放
* 多数据源集合的维护
* 分片
* 混合搜索的基建
RAG-C8:查询重述重写用户查询来提升检索准确率和解释用户意图* 掌握提示词艺术
* 过滤器和工具
* 智能体,提示工程(date time)
* 日期上下文工具
* 复杂和多部分问题处理的高级智能体
RAG-C9:检索搜索相关数据块回复用户的问题* 实体的挑战
* 差的召回率和精度
* 检索到相关文档而不是相关块
* 混合检索+ 向量数据库
RAG-C10:分块重排序根据相关性和权限(authority)对检索到的文本块重新评估和排序* 数据源存储卷& 权限不平衡* 多排序策略(为数据源分配权重,Cross-encoder,公司政策规则)
RAG-C11:分块整合&后处理将分块合并、细化为具有连贯性的回答,确保相关性和敏感性* 敏感内容移除的防护栏* 通过额外的防护措施移除包含敏感内容的文本块
RAG-C12:Guardrails(防护)确保生成的内容符合安全和质量标准* LLM在指令遵循中的不确定性* 对于敏感内容提示词级防护
* Guardrails的后处理
RAG-C13:答案生成使用LLM生成适应上下文且连贯的回复* 回复生成的LLM指令* 最终答案生成的提示词
* 任务拆解和编排
* 传递用户上下文到某些领域
* 在提示中设置个人身份信息和员工敏感性的保护措施
RAC-C14:答案后处理重写回复变得更准确和可靠* 幻觉
* 引用生成
* 通过防护控制幻觉
* 基于分块数据源生成引用而非LLM
RAC-C15:RAG监控跟踪RAG流水线的健康和性能* 调试查询重写&检索* 使用类似Open Telemerty的LLMOps工具、RAGs评估框架、类似Datadog的应用监控平台
* 调试RAG流水线的自定义脚本

Figure 4: RAG control points, challenges, and remediations

4. 为生成式AI聊天机器人构建灵活的架构(A)

跟上人工智能领域的快速发展就像航行在急流中一样。从向量数据库和嵌入模型到LLMs、智能体架构、低代码/无代码平台、RAG评估框架以及提示技术,每个方面都在迅速演变。

在这个充满活力的环境中,构建通用、灵活和适应性强的平台至关重要。从最初构建三个聊天机器人开始,作者意识到建立一个通用平台的重要性,以避免在安全、防护措施、认证、提示、用户界面、反馈机制、使用报告、监控和评估方面做出重复的努力。 为了解决这个问题,作者开发了NVBot平台(见图7),这是一个具有可插入式架构的模块化平台。它允许开发人员选择最适合其用例的LLMs、向量数据库、嵌入模型、代理和RAG评估框架。它还为像安全性、防护措施、认证、授权、用户体验和监控等基本功能提供了通用组件。此外,该平台支持全民开发,允许多个团队为集体使用贡献其经过测试的提示、工作流程、防护措施和经过精细调整的模型。

随着机器人生态系统的扩大,面临一个关键问题:应该构建许多特定领域的机器人、一个单一的企业机器人,还是采用混合方法?特定领域的聊天机器人在定制环境中表现出色,而企业范围的聊天机器人则充当通才,为所有员工提供集中的知识库。作者认为没有必要在两者之间选择。 新颖的架构模式正在出现,其中企业范围的聊天机器人充当"万事通",将查询引导到调整了特定领域数据的专用机器人。

这种多机器人架构允许专门聊天机器人的并行开发,同时为用户提供统一的界面。NVBot平台支持企业内多个聊天机器人的共存和编排。关于单一机器人还是多个专门机器人的辩论仍在进行中。

202407121313

Figure 5: Scout Bot: Multi-part query

202407121314

Figure 6: NVHelp Bot: Answering questions on HR benefits

5. 聊天机器人的成本©

了解基于生成式人工智能的聊天机器人的成本经济学涉及到几个关键因素。主要使用商业性和商业化的大型语言模型(LLMs)的高成本可能是不可持续的,因为在多个应用案例中,开支会显著增加。此外,未预料到的开支通常会在团队测试各种LLMs以满足特定需求时累积起来。此外,当使用商业LLM供应商的API时,确保敏感企业数据的安全性需要设置防范措施来检测和防止敏感数据泄露,以及进行审计和合法许可。此外,还需要考虑成本与延迟之间的权衡,因为具有较长上下文长度的大型LLMs通常具有较慢的响应时间,影响整体效率。

大型模型 v.s. 小型模型 对于许多用例来说,大型商业LLMs和较小的开源LLMs越来越成为可行的选择,从而为企业提供成本效益的替代方案。随着开源模型正在赶超大型商业模型,它们在准确度上逐渐提供了接近可比较的水平,正如在图3中展示的NVHelp机器人实证评估中所示,并且通常比大型模型具有更好的延迟性能。此外,通过优化GPU推理模型,可以进一步加快处理时间。例如,经过NVIDIA的Tensor RT-LLM推理库优化的开源模型显示出比未经优化的模型更快的性能。这些策略有助于在维持高性能和安全标准的同时平衡成本效益的需求。

LLM网关 如果必须使用供应商的LLM API,最好为整个公司实现一个内部LLM网关,以进行审核、订阅和成本管理。实施内部LLM网关可以简化LLM的使用、订阅和数据跟踪,以进行安全审核。这个中央枢纽简化了管理,并确保了有效的资源分配。在NVIDIA IT中实施了一个LLM网关,用于记录入站和出站的有效负载,以进行审核,并通过访问控制权限保护这些数据。LLM网关有助于管理LLM API的订阅和成本调用。

总结起来,开发一种混合和平衡的LLM策略对于管理成本和促进创新至关重要。这包括使用较小和定制的LLMs来管理开支,同时通过LLM网关允许对大型LLMs进行负责任的探索。

通过跟踪LLM订阅和成本以及评估Gen-AI功能的使用情况和生产力改进,确保衡量和监控投资回报率至关重要。确保在基于云的LLM使用中保护敏感企业数据的安全性需要实施防泄露措施,并建立LLM网关进行审核和合法许可的学习。最后,注意成本、准确度和延迟之间的权衡,通过定制较小的LLMs以匹配较大模型的准确度,同时注意到具有较长上下文长度的大型LLMs往往具有较长的响应时间。

6. 测试基于RAG的聊天机器人(T)

202407121315

Figure 7: Architecture of NVBot platform upon which multiple chatbots are being built.

由于需要进行人工响应验证,测试生成式人工智能解决方案可能是一个漫长的过程。越来越多地人使用LLMs作为裁判。然而,在使用LLMs作为人类代理时,需要谨慎,因为使用LLMs作为评判者可能会导致强化其评估中固有偏见的自我实现预言类型的情景。

  • 安全测试:自动化安全测试对于在不牺牲安全性的情况下保持开发速度至关重要。强大的安全框架和回归测试数据集确保聊天机器人对潜在威胁保持弹性。需要准备一系列可以在每个主要迭代中进行测试的安全数据集。
  • 提示更改测试:生成式人工智能模型对提示更改非常敏感。为了保持准确性,需要进行全面的回归测试来测试每个提示的更改。
  • 反馈循环:结合收集到的反馈和RLHF循环对于持续改进至关重要。这使得LLM模型可以随着时间的推移改进解决方案和语言模型,确保聊天机器人越来越熟练。然而,如果选择的基础模型不提供定制化,则很难将模型与人类反馈对齐。如果反馈是显著的并涉及多个领域,则可以考虑进行模型定制化。也需要收集用户反馈来促进强化学习和人类反馈的持续学习流程。拥有工具使这个过程自动化对于这些聊天机器人的生产后生命周期管理至关重要。

6.1 经验

长测试周期的计划:有效测试基于RAG的聊天机器人需要预期到较长的测试周期。首先,集中精力自动化测试和提高准确性评估,以简化这个关键阶段。

构建具有代表性的真实数据集:构建全面的真实数据集,反映出目标解决方案的全面优势是至关重要的。这确保了聊天机器人在实际使用中遇到的场景中进行测试。

自动化评估:尽管利用LLMs作为评估者可以提供可扩展的测试选项,但请记住,人类评估的质量是无可比拟的。应该在可行的情况下使用自动化工具来辅助,而不是取代人类监督。

融入人类反馈和持续学习:建立机制,允许人类反馈和系统性的错误分析。根据这些反馈优先进行迭代改进,不断提高聊天机器人的性能和适应性。

7. 确保基于RAG的聊天机器人的安全性(S)

在部署生成式AI聊天机器人时,安全性是至关重要的。为了减轻风险、幻觉、有害性、增加公平性、透明度和安全性至关重要。强大的基础模型在这些保护措施方面越来越好。然而,仍然存在着越狱(jail breaks)、对抗性攻击和其他安全问题的许多可能性。除了这些安全风险,基于生成式AI的聊天机器人还容易受到派生风险的影响。由于这里的机器人都是内部企业聊天机器人,更关注企业内容安全和对敏感数据的保护。以下是作者根据经验总结的确保RAG-based聊天机器人安全的一些经验和见解。解决这些挑战对于在企业环境中维护RAG-based聊天机器人的完整性和安全性至关重要。

7.1 经验

企业内容访问控制:企业文档受到访问控制的保护,要求基于RAG的聊天机器人在生成响应时遵守访问控制列表(ACLs)。

生成式AI的派生风险:聊天机器人可能生成缺乏原始数据源上下文的响应,从而可能导致误解。此外,增强的搜索方法如果企业内容未经适当保护,可能会无意中增加暴露敏感数据的风险。作为NVInfo机器人的一部分,作者在自动检索过程中实施了敏感数据保护措施,同时利用了向量搜索解决方案提供的敏感数据过滤和分类能力来自动过滤敏感数据。

数据治理和内容安全:高效的知识访问可能增加敏感数据泄漏的风险。因此,在部署之前优先考虑数据治理,以防止未经授权的访问和数据泄露。作者启动了一个企业内容安全计划,用于对文档进行敏感性分类,并从聊天机器人中排除敏感内容。

企业保护措施:实施与特定企业政策和规定相一致的生成式AI响应保护措施至关重要。这些保护措施有助于通过确保聊天机器人生成的内容符合既定的规范和道德准则,防止潜在的法律和声誉损害。在NVInfo机器人中,最初在LLM提示中实施了许多保护措施。然而,后来意识到并不是所有的LLMs都始终遵循这些提示。因此,使用Nemo Guardrails 在查询和响应的预处理和后处理过程中实施了这些保护措施。

8. 相关工作

9. 结论

在这篇工作中,介绍了作者开发的基于RAG的聊天机器人的方法,并强调了在构建三个聊天机器人的经验。强调了内容新鲜度、架构、LLM成本管理、测试计划和安全性在创建强大、安全和企业级聊天机器人方面的重要性。确定并详细说明了RAG流程中的15个关键控制点,并提供了在每个阶段提高聊天机器人性能的策略。

总结

⭐ 作者来自英伟达的团队,介绍了他们在构建企业级RAG聊天机器人的经验。提出了FACTS这5个要注意的方面以及15个可提升性能的控制点。是一篇偏实战的工作,值得仔细研读。

引用


  1. Seven Failure Points When Engineering a Retrieval Augmented Generation System ↩︎

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

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

相关文章

【LeetCode】2187. 完成旅途的最少时间

1. 题意 2. 分析 二分法有一个关键特征:如果答案answer满足题意,那么对于任何整数i,如果有i>answer,那么i也会是一个存在的解,只不过不是最优解。 本题想要找出一个达到 totalTrips 趟需要的最少时间成本t&#x…

如何入门单片机嵌入式?

入门单片机嵌入式系统开发可以按照以下步骤进行。我收集归类了一份嵌入式学习包,对于新手而言简直不要太棒,里面包括了新手各个时期的学习方向编程教学、问题视频讲解、毕设800套和语言类教学,敲个22就可以免费获得。 选择单片机开发板&…

FakeNewsGPT4:通过知识增强的大规模视觉语言模型推进多模态假新闻检测

FakeNewsGPT4: Advancing Multimodal Fake News Detection through Knowledge-Augmented LVLMs 论文地址:https://arxiv.org/abs/2403.01988https://arxiv.org/abs/2403.01988 1.概述 当前,多模态假新闻的大量涌现导致了显著的分布差异,这一现状亟需我们开发具备广泛适用性…

input 输入框,带清空图标

https://andi.cn/page/621495.html

虚幻引擎ue5游戏运行界面白茫茫一片,怎么处理

根剧下图顺序即可调节游戏运行界面光照问题: 在大纲里找到post,然后选中它,找到Exposure 把最低亮度和最高亮度的0改为1即可

【算法】代码随想录之链表(更新中)

文章目录 前言 一、移除链表元素(LeetCode--203) 前言 跟随代码随想录,学习链表相关的算法题目,记录学习过程中的tips。 一、移除链表元素(LeetCode--203) 【1】题目描述: 【2】解决思想&am…

JS登录页源码 —— 可一键复制抱走

前期回顾 https://blog.csdn.net/m0_57904695/article/details/139838176?spm1001.2014.3001.5501https://blog.csdn.net/m0_57904695/article/details/139838176?spm1001.2014.3001.5501 登录页预览效果 <!DOCTYPE html> <html lang"en"><head…

el-table 动态添加删除 -- 鼠标移入移出显隐删除图标

<el-table class"list-box" :data"replaceDataList" border><el-table-column label"原始值" prop"original" align"center" ><template slot-scope"scope"><div mouseenter"showClick…

电脑如何重新分盘——保姆级教程

方法一&#xff1a; 通过此电脑&#xff0c;鼠标右键点击此电脑&#xff0c;点击管理 点击磁盘管理进入 二&#xff0c;磁盘分区 我这里选择的是“磁盘0”的C盘进行操作&#xff0c;一般新电脑拿到手的时候都处于这么一个状态&#xff0c;只有一个磁盘分区。现在我要把C盘拆分…

翻译语音识别在线的软件,分享4款实用的软件!

在全球化日益加速的今天&#xff0c;语言沟通已成为人们生活中不可或缺的一部分。无论是商务洽谈、学术交流还是日常交流&#xff0c;翻译语音识别技术都扮演着举足轻重的角色。今天&#xff0c;我们就来揭秘一下&#xff0c;那些能让你在语言沟通中如虎添翼的翻译语音识别软件…

LCM通讯的使用

本文主要介绍LCM通讯的基本使用&#xff0c;内容主要整理自官网 https://lcm-proj.github.io/lcm/index.html LCM&#xff0c;即Library for Communication and Marshalling&#xff0c;是一组用于消息传递与数据封装的库和工具&#xff0c;它主要的面向对象是要求高带宽、低延…

[Elasticsearch]ES近似实时搜索的原因|ES非实时搜索的原因|ES Near real-time search

Elasticsearch-专栏&#x1f448;️ 往期回顾&#xff1a; ES单一查询定义&#x1f448;️ ES深分页问题&#x1f448;️ ES商城搜索实战&#x1f448;️ ES环境搭建:单节点模式/集群模式&#x1f448;️ ES开启认证&#x1f448;️ 近似实时搜索&#xff08;Near real-t…

稀疏辅助信号平滑方法在一维信号降噪和旋转机械故障诊断中的应用(MATLAB)

基于形态成分分析理论&#xff08;MCA&#xff09;的稀疏辅助信号分解方法是由信号的形态多样性来分解信号中添加性的混合信号成分&#xff0c;它最早被应用在图像处理领域&#xff0c;后来被引入到一维信号的处理中。在基于MCA稀疏辅助的信号分析模型中&#xff0c;总变差方法…

自定义“请求头”

请求头是HTTP请求的重要部分&#xff0c;可以用“头部字典”按需定制请求头。 (笔记模板由python脚本于2024年07月12日 19:28:44创建&#xff0c;本篇笔记适合喜欢钻研web知识点的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free…

JavaDS —— 栈 Stack 和 队列 Queue

栈的概念 栈是一种先进后出的线性表&#xff0c;只允许在固定的一端进行插入和删除操作。 进行插入和删除操作的一端被称为栈顶&#xff0c;另一端被称为栈底 栈的插入操作叫做进栈/压栈/入栈 栈的删除操作叫做出栈 现实生活中栈的例子&#xff1a; 栈的模拟实现 下面是Jav…

mysql和oracle数据库的备份和迁移

本文主要讲述了mysql数据库的备份和迁移&#xff1b;oracle的肯定是备份和数据迁移&#xff0c;同时介绍了linux的定时任务。 一、mysql Docker容器下mysql备份方法 1、数据库备份 # 进入容器docker exec -it 《containerId容器id》 /bin/bash# mysqldump命令备份并生成数据…

02MFC画笔/画刷/画椭圆/圆/(延时)文字

文章目录 画实心矩形自定义画布设计及使用连续画线及自定义定义变量扇形画椭圆/圆输出颜色文本定时器与定时事件 画实心矩形 自定义画布设计及使用 连续画线及自定义定义变量 扇形 画椭圆/圆 输出颜色文本 定时器与定时事件

近期matlab学习笔记,学习是一个记录,反复的过程

近期matlab学习笔记&#xff0c;学习是一个记录&#xff0c;反复的过程 matlab的mlx文件在运行的时候&#xff0c;不需要在文件夹路径下&#xff0c;也能运行&#xff0c;但是需要调用子函数时&#xff0c;就需要在文件所在路径下运行 那就先运行子函数&#xff0c;把路径换过来…

【STM32CubeMX安装教程】

【STM32CubeMX安装教程】 1. 前言2. 下载软件3. 安装配置4. 测试5. 小结 1. 前言 STM32CubeMX是一款图形化工具&#xff0c;可以非常轻松地配置STM32微控制器和微处理器&#xff0c;以及为Arm Cortex-M内核生成相应的初始化C代码&#xff0c;或为Arm Cortex-A内核生成部分Linu…

电子签章 签到 互动 打卡 创意印章 支持小程序 H5 App

电子签章 签到 互动 打卡 创意印章 支持小程序 H5 App 定制化