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

引言

今天带来一篇构建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 ↩︎

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

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

相关文章

爬虫-requests和Selenium

1、了解requests的功能 1.1 使用post和get发送请求 HTTP中常见发送网络请求的方式有两种,GET和POST。GET是从指定的资源请求数据,POST是向指定的资源提交要被处理的数据。 GET的用法: import requestsr requests.get("https://www.…

随机过程基础:2.Markov (马尔可夫)过程(2)

纯生过程和纯灭过程 纯生过程:想象一下一个生物种群,比如一群兔子,在没有天敌的理想环境中,食物充足,疾病不存在。在这样的环境下,兔子的种群只会增加,不会减少。纯生过程模型就是用来描述这种情…

Android使用ANativeWindow更新surfaceView内容最简Demo

SurfaceView简介 SurfaceView对比View的区别 安卓的普通VIew,都依赖于当前Activity的Window的surface,这个surface用于承载view树从底到顶绘制出来的所有内容,因此任何一个view需要更新时,都需要把所有view中底到顶进行更新,即使使…

人工智能算法工程师(中级)课程12-PyTorch神经网络之LSTM和GRU网络与代码详解1

大家好,我是微学AI,今天给大家介绍一下人工智能算法工程师(中级)课程12-PyTorch神经网络之LSTM和GRU网络与代码详解。在深度学习领域,循环神经网络(RNN)因其处理序列数据的能力而备受关注。然而,传统的RNN存在梯度消失和梯度爆炸的问题,这使得它在长序列任务中的表现不尽…

【Diffusion学习】【生成式AI】淺談圖像生成模型 Diffusion Model 原理

文章目录 Diffusion Model 是如何运作的?吃额外的1个数字:stepDenoise 模组内部实际做的事情:预测noise如何训练 Noise Predictor Text-to-ImageDDPM 算法 from: https://www.youtube.com/watch?vazBugJzmz-o&listPLJV_el3uV…

深入剖析 Android 开源库 EventBus 的源码详解

文章目录 前言一、EventBus 简介EventBus 三要素EventBus 线程模型 二、EventBus 使用1.添加依赖2.EventBus 基本使用2.1 定义事件类2.2 注册 EventBus2.3 EventBus 发起通知 三、EventBus 源码详解1.Subscribe 注解2.注册事件订阅方法2.1 EventBus 实例2.2 EventBus 注册2.2.1…

无人机之电动系统篇

无人机的动能系统为无人机提供了动力,使无人机能够进行飞行活动。电动系统是无人机动力系统的其中一种。电力系统是将化学能转化为电能,再转化为机械能,为无人机飞行提供动力的系统。电力系统有电池、电调、电机和螺旋桨四个部分组成。 电池…

论文阅读【时间序列】TimeMixer (ICLR2024)

【时间序列】TimeMixer (ICLR2024) 原文链接:TIMEMIXER: DECOMPOSABLE MULTISCALE MIXING FOR TIME SERIES FORECASTING 代码仓库:https://github.com/kwuking/TimeMixer 符号定义 符号含义P用于预测的历史序列长度(seq_len)F预测…

第七天 SpringBoot与SpringCloud微服务项目交付

Spring Cloud微服务项目交付 微服务扫盲篇 微服务并没有一个官方的定义,想要直接描述微服务比较困难,我们可以通过对比传统WEB应用,来理解什么是微服务。 单体应用架构 如下是传统打车软件架构图: 这种单体应用比较适合于小项…

LVS+Keepalive高可用

1、keepalive 调度器的高可用 vip地址主备之间的切换,主在工作时,vip地址只在主上,vip漂移到备服务器。 在主备的优先级不变的情况下,主恢复工作,vip会飘回到住服务器 1、配优先级 2、配置vip和真实服务器 3、主…

基于hive数据库的泰坦尼克号幸存者数据分析

进入 ./beeline -u jdbc:hive2://node2:10000 -n root -p 查询 SHOW TABLES; 删除 DROP TABLE IF EXISTS tidanic; 上传数据 hdfs dfs -put train.csv /user/hive/warehouse/mytrain.db/tidanic 《泰坦尼克号幸存者数据分析》 1、原始数据介绍 泰坦尼克号是当时世界上…

PyTorch人脸识别

新书速览|PyTorch深度学习与企业级项目实战-CSDN博客 一套基本的人脸识别系统主要包含三部分:检测器、识别器和分类器,流程架构如图11-3所示: 图11-5 检测器负责检测图片中的人脸,再将检测出来的人脸感兴趣区域(Reg…

音视频入门基础:H.264专题(13)——FFmpeg源码中通过SPS属性获取视频色彩格式的实现

一、引言 通过FFmpeg命令可以获取到H.264裸流文件的色彩格式(又译作色度采样结构、像素格式): 在vlc中也可以获取到色彩格式(vlc底层也使用了FFmpeg进行解码): 这个色彩格式就是之前的文章《音视频入门基础…

2024年初级注册安全工程师职业资格考试首次开考!

​2024年初级注册安全工程师考试首次开考(注:该考试由各省人事考试局组织考试)。目前未取得中级注册安全工程师证书的各位同学,可以关注该考试,毕竟初级考证相对较容易,先去考一个。 目前初安开考地区汇总…

【Diffusion学习】【生成式AI】Stable Diffusion、DALL-E、Imagen 背後共同的套路

文章目录 图片生成Framework 需要3个组件:相关论文【Stable Diffusion,DALL-E,Imagen】 具体介绍三个组件1. Text encoder介绍【结论:文字的encoder重要,Diffusion的模型不是很重要!】评估指标:…

大数据面试SQL题-笔记01【运算符、条件查询、语法顺序、表连接】

大数据面试SQL题复习思路一网打尽!(文档见评论区)_哔哩哔哩_bilibiliHive SQL 大厂必考常用窗口函数及相关面试题 大数据面试SQL题-笔记01【运算符、条件查询、语法顺序、表连接】大数据面试SQL题-笔记02【...】 目录 01、力扣网-sql题 1、高频SQL50题&#xff08…

基于Java的斗地主游戏案例开发(做牌、洗牌、发牌、看牌

package Game;import java.util.ArrayList; import java.util.Collections;public class PokerGame01 {//牌盒//♥3 ♣3static ArrayList<String> list new ArrayList<>();//静态代码块//特点&#xff1a;随着类的加载而在加载的&#xff0c;而且只执行一次。stat…

【C语言】深入解析选择排序

文章目录 什么是选择排序&#xff1f;选择排序的基本实现代码解释选择排序的优化选择排序的性能分析选择排序的实际应用结论 在C语言编程中&#xff0c;选择排序是一种简单且直观的排序算法。尽管它在处理大型数据集时效率不高&#xff0c;但由于其实现简单&#xff0c;常常用于…

2024-07-15 Unity插件 Odin Inspector4 —— Collection Attributes

文章目录 1 说明2 集合相关特性2.1 DictionaryDrawerSettings2.2 ListDrawerSettings2.3 TableColumnWidth2.4 TableList2.5 TableMatrix 1 说明 ​ 本文介绍 Odin Inspector 插件中集合&#xff08;Dictionary、List&#xff09;相关特性的使用方法。 2 集合相关特性 2.1 D…

直播美颜工具开发教学:视频美颜SDK集成详解

本篇文章&#xff0c;笔者将详细介绍如何在直播应用中集成视频美颜SDK&#xff0c;让你的直播画面焕然一新。 一、什么是视频美颜SDK&#xff1f; 视频美颜SDK是一种软件开发工具包&#xff0c;提供了视频处理和图像增强功能。通过集成视频美颜SDK&#xff0c;开发者可以轻松…