当前位置: 首页 > news >正文

多模态RAG演进-MRAG1.0->MRAG2.0->MRAG3.0

MRAG1.0

MRAG1.0是MRAG框架的初始阶段,通常被称为“伪MRAG”。它是对RAG范式的简单扩展,支持多模态数据。MRAG1.0通过利用现有的基于文本的检索和生成机制,实现了从RAG到MRAG的平稳过渡。

MRAG1.0的架构

MRAG1.0的架构包括三个关键组件:

  1. 文档解析和索引:

    源:多模态GraphRAG初探:文档智能+知识图谱+大模型结合范式,https://mp.weixin.qq.com/s/coMc5jNPJldPk9X74tDAbA

    • 使用《文档智能解析技术》处理多模态文档(如Word、Excel、PDF、HTML),使用OCR或特定格式的解析技术提取文本内容。

    • 使用文档布局检测模型将文档分割成结构化元素(如标题、段落、图像、视频、表格、页脚)。

    • 对于多模态数据,使用专门的模型生成描述图像、视频和其他非文本元素的标题。

    • 索引阶段:将这些块和标题编码成向量表示,并存储在向量数据库中。

  2. 检索:

    使用与索引相同的嵌入模型将用户查询编码成向量表示。如:余弦相似度、BGE等进行相似度计算从向量数据库中检索最相关的块和标题。合并重复或重叠的信息,形成外部知识的综合集合,并将其集成到生成阶段的提示中。

  3. 生成:

    将用户查询和检索到的文档合成为一个连贯的提示。结合其参数化知识和检索到的外部信息,使用LLM生成答案。在多轮对话中,系统将对话历史记录集成到提示中,实现上下文感知和无缝交互。

局限性

  • 文档解析繁琐:将多模态数据转换为文本描述增加了系统的复杂性,并导致模态特定信息的丢失。

  • 检索瓶颈:文本向量检索技术虽然成熟,但在处理多模态数据时存在挑战,导致检索精度不高。

  • 生成挑战:处理多模态数据和图像标题等需要有效组织这些元素,同时最小化冗余并保留相关信息。

MRAG2.0

MRAG2.0的架构

与MRAG1.0不同,MRAG2.0不仅支持多模态输入的查询,还在知识库中保留了原始的多模态数据。

MRAG2.0的架构包括几个关键的优化:

  1. MLLMs Captions:
    利用MLLMs的表示能力,特别是Captions任务的能力,使用单个或多个MLLM从多模态文档中提取Captions。这种方法简化了文档解析模块,减少了其复杂性。

  2. 多模态检索:增强检索模块以支持多模态用户输入,保留原始多模态数据并实现跨模态检索。允许基于文本的查询直接检索相关的多模态数据,结合基于字幕的召回和跨模态搜索能力。

  3. 多模态生成:增强生成模块以处理多模态数据,通过集成MLLMs实现用户查询和检索结果的合成。当检索结果准确且输入包含原始多模态数据时,生成模块减少了模态转换中的信息损失。

局限性

  • 多模态数据输入的准确性:整合多模态数据输入可能会降低传统文本查询描述的准确性。

  • 数据格式的多样性:生成模块需要高效地组织这些多样化的数据形式,并清晰地定义生成输入。

MRAG3.0

MRAG3.0架构图

MRAG3.0是MRAG的重大演变,引入了结构和功能上的创新,增强了其在多个维度上的能力。

MRAG3.0的创新主要体现在三个方面:

  1. 增强的文档解析:在解析过程中保留文档页面截图,最小化数据库存储中的信息损失。使用MLLMs对文档截图进行向量化并索引,实现基于用户查询的相关文档截图的高效检索。

  2. 真正的端到端多模态:在知识库构建和系统输入中强调多模态能力的同时,MRAG3.0引入了多模态输出能力,完成了端到端的多模态框架。

  3. 场景扩展:超越传统的理解能力,MRAG3.0通过模块调整和添加,将理解和生成能力结合起来。这种统一显著拓宽了系统的适用性,涵盖了视觉问答(VQA)、多模态生成和融合多模态输出等场景。

MRAG3.0支持多种场景:

  1. 检索增强场景:通过从外部知识库中检索相关内容来提供准确的答案。
  2. VQA场景:通过动态路由和检索来最小化不必要的搜索和不相关信息。
  3. 多模态生成场景:扩展生成任务的能力,通过检索增强(RA)显著提高生成任务的性能。
  4. 融合多模态输出场景:生成包含多种模态的输出,如文本、图像或视频。

修改模块

  1. 文档解析和索引模块:使用MLLMs对文档截图进行向量化并索引,确保高效检索相关文档截图。通过保留文档截图,解决了信息损失问题,并提高了知识库的可靠性。

  2. 生成:集成理解和生成能力,通过多模态输出增强子模块实现从文本到多模态输出的转变。包括原生MLLM-based输出和增强多模态输出两种方法。

新模块

多模态搜索规划:解决MRAG系统中的关键决策挑战,包括检索分类和查询重构。检索分类确定最优的检索策略,查询重构通过整合视觉信息和历史检索结果来优化查询。

前面两个阶段的流程前期内容都有相关介绍,下面来详细看下MRAG3.0的整体过程,也就是这张架构图。

MRAG3.0架构图

1. 文档解析(Documents Parsing)
  • 输入:系统接受多种类型的文档(如PDF、HTML等)。
  • 处理
    • Extractive-Based Module (Same with MRA2.0):使用提取模块(可能是基于MRA2.0的模型)将文档解析为纯文本数据(Plain Text Data)和多模态数据(Multimodal Data)。
    • 纯文本数据:包括文本块(Text Chunks)。
    • 多模态数据:包括图像(Image)、表格(Table)、屏幕截图(Screenshots)等。
    • 图像处理:图像会生成对应的描述(Image Captions)。
  • 输出:解析后的数据分为纯文本和多模态数据,准备进入索引阶段。

2. 索引(Indexing)
  • 目的:将解析后的数据存储到数据库中,以便后续检索。
  • 处理
    • 文本嵌入(Text Embedding Model):将纯文本数据嵌入为向量,存储到文本向量数据库(Text Vector DB)。
    • 多模态嵌入(Multimodal Embedding Model):将多模态数据(包括图像、表格等)嵌入为向量,存储到多模态向量数据库(Multimodal Vector DB)。
    • 屏幕截图嵌入(Documents/Screenshots Embedding Model):单独处理文档和屏幕截图,嵌入后存储到屏幕截图向量数据库(Documents/Screenshots Vector DB)。
  • 输出:三个向量数据库(Text Vector DB、Multimodal Vector DB、Documents/Screenshots Vector DB)存储了嵌入后的数据。

3. 多模态检索规划(Multimodal Search Planning)
  • 输入:用户查询(Query)及其历史数据(History)。
  • 处理
    • 检索分类(Retrieval Classification):判断查询是否需要检索外部数据。
      • 如果不需要(No),直接生成多模态提示(Multimodal Prompt,No search)。
      • 如果需要(Yes),进一步判断是否为纯文本查询(Text Only?)。
        • 纯文本查询(Yes):生成纯文本提示(Text Only Prompt)。
          • 如果需要检索(With search),生成带检索的纯文本提示(Text Only Prompt, With search)。
          • 如果不需要检索(No search),生成不带检索的纯文本提示(Text Only Prompt, No search)。
        • 非纯文本查询(No):生成多模态提示(Multimodal Prompt, With search)。
    • 查询重构(Query Reformation):根据需要重构查询,生成新的查询(New Query)。
  • 输出:生成适合检索的提示(Prompt)或重构后的新查询。

4. 检索(Retrieval)
  • 输入:多模态提示(Multimodal Prompt)或纯文本提示(Text Only Prompt)。
  • 处理
    • 根据提示类型,从对应的向量数据库中检索相关数据:
      • 纯文本提示:从Text Vector DB中检索。
      • 多模态提示:从Multimodal Vector DB和Documents/Screenshots Vector DB中检索。
    • 检索结果包括:
      • Position Identification:确定相关数据的位置。
      • Candidate Set Retrieval:获取候选数据集合。
      • Matching and Insertion:将检索到的数据与查询匹配并插入。
  • 输出:增强的多模态输出(Augmented Multimodal Output),包含检索到的相关数据。

5. 生成(Generation)
  • 输入:增强的多模态输出。
  • 处理
    • 判断是否为纯文本查询(Text Only?)
      • 如果是(Yes),直接交给大语言模型(LLMs)生成纯文本回答。
      • 如果不是(No),交给多模态大语言模型(MLLMs)生成多模态回答。
  • 输出:最终的多模态回答(Multimodal Answer),可能包含文本、图像、表格等。

6. 输出(Multimodal Answer)
  • 形式:生成的回答可能是纯文本,也可能是多模态内容(例如文本+图像+表格)。
  • 示例:图中展示了一个包含文本、图像和图表的回答。

参考文献:A Survey on Multimodal Retrieval-Augmented Generation,https://arxiv.org/pdf/2504.08748

相关文章:

多模态RAG演进-MRAG1.0->MRAG2.0->MRAG3.0

MRAG1.0 MRAG1.0是MRAG框架的初始阶段,通常被称为“伪MRAG”。它是对RAG范式的简单扩展,支持多模态数据。MRAG1.0通过利用现有的基于文本的检索和生成机制,实现了从RAG到MRAG的平稳过渡。 MRAG1.0的架构包括三个关键组件: 文档解…...

超预期!淘宝闪购提前开放全国全量,联合饿了么扭转外卖战局

饿了么由守转攻。 作者|景行 编辑|杨舟 淘宝饿了么,终于落子,“淘宝闪购”,横空出世,仅仅2天,业务加速。 4月30日上午,当外卖战场陷入沉寂时,淘宝宣布将即时零售业务“小时达”升级为“淘宝闪…...

Proxmox VE 8.4 显卡直通完整指南:NVIDIA 2080 Ti 实战

背景: PCIe Passthrough 技术允许虚拟机直接访问物理GPU设备,绕过宿主机系统,从而获得接近原生性能的图形处理能力. 参照:从Proxmox VE开始:安装与配置指南。在R740服务器完成了proxmox的安装,并且安装了一…...

算法技巧——打表

什么是打表? 打表,是一个信息学专用术语,意指对一些题目,通过打表技巧获得一个有序表或常量表,来执行程序某一部分,优化时间复杂度。这种算法也可用于在对某种题目没有最优解法时,用来得到分数的…...

JavaScript基础-逻辑运算符

在JavaScript编程中,逻辑运算符用于判断表达式的真假,并根据结果执行特定的操作。掌握逻辑运算符是理解条件控制结构的关键之一。本文将详细介绍JavaScript中的三种主要逻辑运算符:&&(逻辑与)、||(…...

P20:Inception v3算法实战与解析

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 使用InceptionV3实现天气识别 一、模型结构 Inception v3是Google团队在2015年提出的第三代Inception模型,属于卷积神经网络(CNN&…...

C++ - 数据容器之 list(创建与初始化、元素访问、容量判断、元素遍历、添加元素、删除元素)

一、创建与初始化 引入 <list> 并使用 std 命名空间 #include <list>using namespace std;创建一个空 list list<int> my_list;创建一个包含 5 个元素&#xff0c;每个元素初始化为 0 的 list list<int> my_list(5);创建一个包含 5 个元素&#xf…...

deepseek 技巧整理

1、导出word 和excel 功能&#xff0c;在使用以下提示词。 请帮我列出减肥期间可以吃的水果&#xff0c;并分析该水果含有的营养元素&#xff0c;以表格的形式星现。1.要以html的方式输出 2.要可以直接运行 3.页面要提供可以直接下载word和excel功能...

柔性PZT压电薄膜多维力传感器在微创手术机器人的应用

随着医疗技术的迅速发展&#xff0c;微创手术机器人正在成为外科手术的重要助手。与传统开放式手术相比&#xff0c;微创手术创伤小、恢复快、感染率低&#xff0c;对手术器械的精细操控性和感知能力提出了更高要求。多维力传感器作为机器人“触觉”的核心部件&#xff0c;对提…...

Java学习手册:Spring Boot 自动配置与快速开发

一、Spring Boot 自动配置概述 Spring Boot 的自动配置是其核心特性之一&#xff0c;它能够根据项目的依赖和配置自动地进行 Spring 应用程序的配置。自动配置的工作流程如下&#xff1a; SpringBootApplication 注解 &#xff1a;这是自动配置的起点&#xff0c;它是一个组合…...

ValueError: expected sequence of length 8 at dim 2 (got 0)

问题描述 在PyCharm中使用强化学习运行Python代码时报错ValueError: expected sequence of length 8 at dim 2 (got 0)。 问题原因 实际上原因就是gym中的env对象的reset、step等方法的返回值作了改动 解决方法 1、第一步&#xff1a; 将代码块中的&#xff08;记得改的需…...

AI赋能新媒体运营:效率提升与能力突破实战指南

AI赋能新媒体运营&#xff1a;效率提升与能力突破实战指南 在信息爆炸的新媒体时代&#xff0c;运营人员面临着内容产出压力大、数据分析复杂、用户互动需求高等多重挑战。AI技术的迅猛发展为新媒体运营带来了革命性的变革可能。本文将为您揭示如何利用AI工具提升工作效率、培…...

单词规律(简单)

思路和同构字符串那道题一样。、但是这道题要注意的地方就是&#xff0c;检查 pattern 和 s 的单词数量是否一致以及在进行字符串比较的时候应该用equals来进行比较&#xff0c;而不能用“&#xff01;”&#xff0c;“&#xff01;”比较的是对象引用而非内容。 class Soluti…...

QGraphicsView QGraphicsScene QGraphicsItem 的关系

在Qt的图形视图框架中&#xff0c;QGraphicsView、QGraphicsScene和QGraphicsItem 三者协同工作&#xff0c;构成一个分层的结构&#xff0c;用于高效管理和显示复杂的图形界面。以下是它们的关系和职责的详细说明&#xff1a; 1. 核心角色 类名职责类比QGraphicsItem场景中的…...

re题(52)BUUCTF-[FlareOn5]Minesweeper Championship Registration

BUUCTF在线评测 jadx打开if条件就是flag...

c++环境和vscode常用的一些有用插件

环境 WSL需要安装cmake 编译器g14 应该是包含了所有std:c23把好像包含部分c26 vscode 需要插件cmake vscode clangd 方便提示吧 File Watch 插件目的在保存.h/.cpp文件时候自动执行vscode 的cmake吧 error lens 方便每次显示错误和警告的提示懒得每次点击去看错误 Edit Sugge…...

UE自动索敌插件Target System Component

https://www.fab.com/zh-cn/listings/9088334d-3bde-4e10-a937-baeb780f880f ​ 一个完全用 C 编写的 UE插件&#xff0c;添加了对简单相机锁定/瞄准系统的支持。它最初​​在蓝图中开发和测试&#xff0c;然后转换并重写为 C 模块和插件。 特征&#xff1a; 可通过一组可在…...

从括号匹配看栈:数据结构入门的实战与原理

在计算机科学的世界里&#xff0c;数据结构是程序员的 “瑞士军刀”&#xff0c;不同的数据结构适用于不同的场景&#xff0c;能高效解决各类问题。其中&#xff0c;栈作为一种简单却强大的数据结构&#xff0c;在很多实际应用中发挥着关键作用。今天&#xff0c;我们就通过一个…...

ReLU函数及其Python实现

ReLU函数及其Python实现 文章目录 ReLU函数及其Python实现1. ReLU函数定义2. Python实现3. 在深度学习中的应用总结 1. ReLU函数定义 ReLU&#xff08;Rectified Linear Unit&#xff0c;修正线性单元&#xff09;函数是深度学习中常用的激活函数之一。它的定义非常简单&#…...

Rain World 雨世界 [DLC 解锁] [Steam Epic] [Windows SteamOS]

Rain World 雨世界 [DLC 解锁] [Steam & Epic] [Windows & SteamOS] 需要有游戏正版基础本体&#xff0c;安装路径不能带有中文&#xff0c;或其它非常规拉丁字符&#xff1b; DLC 版本 至最新全部 DLC 后续可能无法及时更新文章&#xff0c;具体最新版本见下载文件说明…...

n8n 工作流画布上下左右移动的操作方法

n8n 工作流画布上下左右移动的操作方法 1. n8n 工作流画布上下移动2. n8n 工作流画布左右移动3. n8n 工作流画布扩大和缩小4. n8n 工作流画布缩放到适合 1. n8n 工作流画布上下移动 鼠标滚轮向上滚动是向上移动鼠标滚轮向下滚动是向下移动 2. n8n 工作流画布左右移动 按照Shi…...

Linux 常用命令合集

一、用户权限管理 切换管理员身份 sudo su&#xff1a;普通用户临时获取 root 权限&#xff0c;需输入当前用户密码。管理员提示符&#xff1a;root主机名:路径#。退出管理员&#xff1a;exit&#xff0c;返回普通用户状态。 以管理员身份执行命令 sudo 命令 参数&#xff1a;…...

B站Michale_ee——ESP32_IDF SDK——FreeRTOS_7 流数据缓冲区、消息缓冲区

一、Stream Buffer流数据缓冲区 流数据缓冲区用来处理像音频之类的流数据&#xff1b; 1.API简介 &#xff08;1&#xff09;创建流数据缓冲区 &#xff08;2&#xff09;向流数据缓冲区中发送数据 &#xff08;3&#xff09;从流数据缓冲区中接收数据 2.示例代码及运行结果…...

HCL(HashiCorp Configuration Language)是一种结构化配置语言

HCL&#xff08;HashiCorp Configuration Language&#xff09;是一种结构化配置语言&#xff0c;语法简洁且可读性强&#xff0c;广泛用于 Docker Buildx Bake、Terraform、Nomad 等工具的配置。以下是其核心语法规则和示例&#xff1a; 1. 基础结构 HCL 使用 块&#xff08;…...

k9s 一个基于终端的 Kubernetes 集群管理工具(TUI)

k9s 是一个基于终端的 Kubernetes 集群管理工具&#xff08;TUI&#xff09;&#xff0c;通过快捷键和交互式命令快速操作资源。以下是其核心用法和常见场景&#xff1a; 1. 基本命令 启动 k9s k9s # 默认连接当前 kubeconfig 配置的集群k9s -n <namespace> # 指定命…...

高等数学-第七版-下册 选做记录 习题10-1

1. 4. 5....

DBeaver连接人大金仓数据库V9

1、官网下载驱动jdbc 打开官网地址&#xff0c;找到下面的V9R1-JDBC&#xff0c;点击后面的下载即可&#xff0c;保存到本地 2、解压最新版的驱动程序 3、把***_JDBC文件夹内的驱动程序复制到DBeaver安装目录下的plugins文件夹里 4、打开dbeaver程序&#xff0c;增加kingbase…...

跟韩学AiOps系列之2025学MySQL系列_如何在MySQL中开启和提交事务?!

跟韩学AiOps系列之2025学MySQL系列_如何在MySQL中开启和提交事务&#xff1f;! 文章目录 一、事务的基本操作1. 开启事务2. 执行事务内操作3. 提交事务4. 回滚事务 二、验证示例&#xff08;适用于 MySQL 5.7&#xff09;步骤 1&#xff1a;准备测试表和数据步骤 2&#xff1a…...

【KWDB 创作者计划】利用KWDB解决工业物联网场景中的海量数据管理难题的思考

利用KWDB解决工业物联网场景中的海量数据管理难题 一、什么是KWDB&#xff1f;二、工业物联网场景中的数据管理痛点2.1 数据量大且增长迅速2.2 数据多样性2.3 实时性需求2.4 数据分析复杂性 三、KWDB 的技术优势与架构解读3.1 时间序列数据的高效管理3.2 高吞吐写入性能3.3 灵活…...

分享国产AI工作流集成数据库完成业务处理

在现代企业应用中&#xff0c;业务流程的自动化和数据管理是提高效率的关键。Taskflow 作为一个强大的任务流管理工具&#xff0c;可以通过集成数据库实现复杂业务逻辑的处理。本文将分享如何利用 Taskflow 集成数据库&#xff0c;优化业务流程&#xff0c;并展示一个实际案例。…...

【每日八股】复习 Redis Day5:集群(上)

文章目录 复习昨日内容缓存雪崩、击穿、穿透的问题描述及解决方案如何保证数据库和缓存的一致性普通方案进阶方案 如何保证缓存删除一定成功&#xff1f;针对业务一致性要求高的场景&#xff0c;如何确保缓存与数据库的一致性&#xff1f;如何避免缓存失效&#xff1f;如何实现…...

linux进程的复制和替换

Linux 进程的复制与替换 一、主函数参数 在 C 语言里&#xff0c;main 函数能够接收参数&#xff0c;其标准形式如下&#xff1a; int main(int argc, char* argv[], char* envp[]);argc&#xff1a;代表命令行参数的数量&#xff0c;为整数类型。argv&#xff1a;是一个字符…...

【质量管理】现代TRIZ问题识别中的功能分析——相互接触分析

在文章【质量管理】现代TRIZ中问题识别中的功能分析——组件分析-CSDN博客中我们知道了如何对产品进行组件分析&#xff0c;那么组件分析出来有什么作用呢&#xff1f;组件分析就是为了接下来相互接触分析使用的。 什么是相互接触 相互接触分析是功能分析的一部分&#xff0c;…...

一种快速计算OTA PSRR的方法(Ⅱ)

1.仿真验证 1.1仿真设置 1.1.1 Test-bench原理 1.1.2 管子参数设置 为了公平地比较性能&#xff0c;设置所有OTA 的输入晶体管M1和M2为相同的gm和偏置电流1uA。 具体晶体管宽长比设置参见5.参考资料中的论文2。 1.2仿真验证 1.2.1 CM OTA 1&#xff09;小信号参数 M1 M…...

【C++】通过红黑树封装map和set

前言&#xff1a; 通过之前的学习&#xff0c;我们已经学会了红黑树和map、set。这次我们要实现自己的map和set&#xff0c;对&#xff0c;使用红黑树进行封装&#xff01; 当然&#xff0c;红黑树内容这里就不在赘述&#xff0c;我们会复用红黑树的代码&#xff0c;所以先将…...

【Java IO流】字节输入流FileInputStream、字节输出流FileOutputStream

目录 0.前言 1.FileInputStream 1.1 概述 1.2 构造方法 1.3 成员方法 1.4 FileInputStream读取文件案例演示 2.FileOutputStream 2.1 概述 2.2 构造方法 2.3 成员方法 2.4 写入文本文件案例演示 3.FileInputStream FileOutputStream拷贝文件 0.前言 本文讲解的是…...

信息收集新利器:SSearch Chrome 插件来了

SSearch 下载地址 SSearch &#x1f623;用途 每次谷歌语法搜索时还得自己写&#xff0c;我想省事一点&#xff0c;弄了一个插件&#xff0c;先加了几个常用的语法&#xff0c;点击后会跳转到对应搜索页面&#xff0c;也可以直接在搜索框微调 后续也会加些其他语法 &#…...

【AI面试准备】AI误判案例知识库优化方案

面试题&#xff1a;建立内部知识库&#xff1a;收集AI误判案例训练领域专属模型。 在回答关于“建立内部知识库收集AI误判案例训练领域专属模型”的面试问题时&#xff0c;建议从以下结构化框架展开&#xff0c;既能体现专业性&#xff0c;又能展现解决问题的系统性和实际落地…...

从零开始讲DDR(8)——AXI 接口MIG 使用(1)

一、前言 在之前的系列文章中&#xff0c;我们已经讨论过了MIG ip的接口内容&#xff0c;配置方式和modelsim独立仿真相关的内容&#xff0c;因此&#xff0c;本文对于之前已经讨论过的相关内容只做简单描述&#xff0c;着重介绍AXI 接口MIG使用上与普通ui接口的不同之处。感兴…...

字符和编码(python)

位数&#xff1a;英文字符使用 1 个字节表示&#xff0c;中文字符通常使用 3 个字节。示例&#xff1a;汉字 “汉” 的 UTF-8 编码是 \xE6\xB1\x89。优点&#xff1a;兼容 ASCII&#xff0c;广泛用于网络传输和文件存储。 Python 中的字符串类型 在 Python 中&#xff0c;字…...

【STM32】定时器输入捕获

STM32 定时器输入捕获功能笔记 一、什么是输入捕获&#xff08;Input Capture&#xff09; 输入捕获是利用定时器的输入通道&#xff0c;在检测到信号电平变化&#xff08;如上升沿或下降沿&#xff09;时&#xff0c;立即将当前计数器的值捕获并保存到捕获寄存器&#xff08…...

spring-ai集成langfuse

1、pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.…...

SALOME源码分析: ParaVis

本文分析SALOME中ParaVis模块。 注1&#xff1a;限于研究水平&#xff0c;分析难免不当&#xff0c;欢迎批评指正。注2&#xff1a;文章内容会不定期更新。 一、核心组件 二、关键流程 三、FAQs 网络资料 SALOME Scientific visualisationPARAVIS Module - Architecture …...

Ubuntu 安装 MySQL8

在 Ubuntu 下安装 MySQL 服务&#xff0c;推荐使用 apt install 官方的 APT 仓库安装方式&#xff0c;这种方式最安全、最稳定、能自动处理依赖关系&#xff0c;也支持后续升级。不推荐在官网手动下载 .deb 包的方式。 配置 Ubuntu 服务器 1. 确认 Ubuntu 系统版本 使用如下命…...

MATLAB图像加密案例

下面是一个使用 MATLAB 编写的简单图像块置乱加密/解密程序,主要利用了函数来组织代码。 这个程序通过将图像分割成小块,然后根据一个密钥(用于随机数生成器种子)打乱这些块的顺序来实现加密。解密过程则使用相同的密钥恢复原始块顺序。 核心思想: 分块: 将图像划分为 …...

同构字符串(简单)

新建两个哈希表&#xff0c;构建s到t中的字母的映射以及t到s中的字母的映射。 class Solution {public boolean isIsomorphic(String s, String t) {Map<Character,Character> s2tnew HashMap<Character,Character>();Map<Character,Character> t2snew Hash…...

红米Note9 4G版拆开后盖操作细节

先把sim卡槽整个拔出 然后如下图做试&#xff0c;4个箭头的位置塞塑料片或者指甲插入&#xff0c;弄开&#xff0c;然后从图中右侧抠开&#xff08;左侧不行&#xff0c;有排线连着后面手机主板&#xff09; 如果不按照这种办法&#xff0c;会把后盖很多地方抠烂...

Qt通过QXlsx库文件写入到excl文件,读取excl文件

第一&#xff1a;下载QXlsx库文件 https://download.csdn.net/download/qq_32663053/90739425 第二&#xff1a;在Qt项目中引入QXlsx库&#xff0c;需要把QXlsx库文件放在项目文件夹下 第三&#xff1a;将tableview中的数据存入到excl文件 代码&#xff1a; void MainWindow…...

ESP32 在Platform Arduino平台驱动外部PSAM,进行内存管理

一&#xff0c;基本介绍 本文中主要介绍ESP32、ESP32S3系列单片机&#xff0c;基于Vscode Platform Arduino和Arduino框架下如何使用外部PSAM&#xff0c;以及必要的API调用函数进行内存分配和管理。 使用前提是开发板有外部PSRAM。 二&#xff0c;平台配置 2.1 Arduino平台 …...

【AI论文】WebThinker:赋予大型推理模型深度研究能力

摘要&#xff1a;大型推理模型&#xff08;LRMs&#xff09;&#xff0c;如OpenAI-o1和DeepSeek-R1&#xff0c;展示了令人印象深刻的长期推理能力。 然而&#xff0c;他们对静态内部知识的依赖限制了他们在复杂的知识密集型任务上的表现&#xff0c;并阻碍了他们生成需要综合各…...