由近期 RAGFlow 的火爆看 RAG 的现状与未来

news2024/11/23 19:00:41

4 月 1 日,InfiniFlow (英飞流)的端到端 RAG 解决方案 RAGFlow 正式开源,首日即获得了 github 千星,目前已接近 3000 star。在这之前,InfiniFlow 还开源了专门用于 RAG 场景的 AI 原生数据库 Infinity,一个是 AI Infra基础组件,一个是端到端应用,在回答 InfiniFlow 为什么要连续开源这样两款产品之前, 先来总结一下这两款产品应用的主要场景 RAG (基于检索增强的内容生成)、现状以及未来。

RAG 技术从提出到成为共识,经历了不短也不长的时间。它最早浮出水面,是在 2023 年 3 月的英伟达 GTC 大会上,老黄当众点名了向量数据库,紧接着 OpenAI 自身也发布了信息检索插件解锁了让大模型访问私有数据的能力,由此,让向量数据库作为大模型的外挂记忆体存在,提供外挂知识库的产品功能,成为 RAG 最早为大众所知的使用姿势,就是下边这张图展现的应用架构:

图片

在很长一段时间内,RAG 在行业的代名词都叫知识库,上述的应用架构,不仅带火了向量数据库,也带火了以LangChain,LlamaIndex 为代表的中间件,它们负责处理上图中各个箭头背后的工作流。具体包括:

1、把用户的文档进行切分,然后再调用一个 Embedding 模型把切分好的文档生成为向量。   

2、把生成好的向量连同原始文档写入到向量数据库中。

3、查询时,将用户的提问也根据相同的 Embedding 模型生成向量,然后查询向量数据库返回 Top K 结果。

4、把 Top K 结果对应的文本拼成提示词交由大模型做最终的摘要和内容完成。

因此,整个架构图里核心部分是两个:

1、向量数据库:负责基于向量对用户的文档进行查询召回。

2、中间件:负责对文档的切分,并转成适合的向量。

采用向量这种形式是因为向量可以提供语义召回,用户只要提问,最终能按照相似度高低返回最接近的答案而无需考虑问题是否真的有哪些关键词匹配到了文档。即使没有匹配,也依然可以根据语义相似度返回答案。之所以需要对用户文档进行切分,是因为向量表征的语义比较含糊,不仅一篇文章可以表征为一个向量,一个单词也可以表征为一个向量,这就导致文字块跟向量对应的粒度很难控制:粒度过粗,用一条向量对应一大段话,对这些文字的细节很难表征;粒度过细,那么一大段文字会对应一堆向量,而每个向量又仅仅代表几个词的语义,因此无法简单根据相似度来找到符合语义的向量。因此,需要对文档进行“恰当”的切分,这就是 LangChain,LlamaIndex 等中间件的核心工作。

那么,如何定义“恰当”呢?通常会采取一些简单的策略:例如先根据文字间的空白将文档切分成不同的段落,这些段落表征的粒度相对比较适合。随后通常会把一些标题(通常需要根据一些规则来判断)跟这些段落合并,让这些只包含局部文字的段落也能体现整篇文章或者部分章节的语义。

因此,有了这类组件就可以快速搭建一套 RAG 系统。不过,自从这种应用架构从 23 年 4 月开始流行,就一直面临一个争论:“把用户的数据微调进大模型直接回答问题更好,而无需 RAG 这一整套基于检索的架构”。这类争论伴随了整个 2023 年。直到今天,这类争论的声音才渐渐淡去。因为,很显然,无论是实时性还是成本等方面, 采用 RAG 是碾压对 LLM 进行微调的方案的。支持微调的拥护者所最看重的问答质量,但更多评测发现,两者差距并不大,而逐渐得出了两者需要搭配使用的结论。并且,这种所谓搭配使用的方案,随着开源 LLM 不断快速迭代推陈出新,也导致实际真正采用微调的已寥寥无几。

上述这种 RAG 架构,也被一些 LLM 厂商所采纳,典型代表是 2023 年 11 月初 OpenAI 推出的 GPT4 Turbo,根据一些出错的日志截图,可以看出 OpenAI 正是可能采用了以向量数据库 qdrant 为基础搭建的 RAG 架构,从而提供了让用户自行上传文档并进行问答的个人知识库服务。    

图片

今年 2 月以来, AI 领域连续出了很多重磅热点,除了最火热的 Sora 之外,另一个热点就是长上下文 LLM ,例如 Claude 3、 Gemini 1.5,当然也包含国产的月之暗面。 Sora 的本质是针对视频提供更加可控的生成能力,这其实是解锁未来多模态 RAG 热潮的一个必要条件;而长上下文 LLM ,却引发了更多针对 RAG 的争论,因为这些 LLM 可以支持用户随时上传 PDF,甚至上传几十个 PDF,然后针对这些 PDF 提供问答,同时还具备强大的“大海捞针”能力。所谓“大海捞针”测试,就是针对长上下文窗口内的细节进行提问,看 LLM 是否可以准确地回答。

用 RAG 来实现大海捞针是轻而易举的,然而上边列举的这些 LLM,它们不是基于 RAG 来提供这种能力,却也都可以达到很高的召回。长上下文技术在2023年底就已经有很多了,代表工作是 StreamLLM,其本质是滑动窗口,只保留对最近上下文的注意力,窗口滑过,内容即会被逐渐“遗忘”,因此“大海捞针”测试表现不佳。而今年的这些新出现的长上下文 LLM,却彻底解决了这个问题,其中的若干产品,效果确实非常好,上传一个 PDF,甚至可以针对里边的复杂图表给出精确的回答。因此,这引发了新的一轮关于长上下文 LLM 和 RAG 的争论,许多人评价 “RAG 已死”,而 RAG 拥护者则认为,长上下文 LLM 并不能满足用户海量数据的需求,成本高,速度也不够快,也只能针对长文本、图片等数据提问。

随着长上下文 LLM 为更多用户接纳,近期各家国产 LLM 都快速推出了这个产品特性,除月之暗面外,其他家大多基于 RAG 来实现,下表是两者的基本对比:

                  

模型派

RAG 派

大海捞针

一般

成本

性能

数据量

百万 Token

无限

数据多样性

一般


这里要额外说明一下为何 RAG 派的大海捞针能力一般,这并不是 RAG 本身的问题,而是依靠纯向量数据库去构建 RAG,并不能保证对精确数据和细节的准确召回。以上的对比,其实并没有完全解答 RAG 的必要性,因为至少就目前 RAG 最普遍的场景——个人知识库问答而言,确实很多情况下只需要 LLM 就足够了。至于成本性能等因素,这些问题是会随着时间推演,逐渐得到缓解的。    

因此,RAG 的未来,似乎并不是那么乐观。而 InfiniFlow 则认为,LLM 的长上下文能力,对于 RAG 来说是很大的促进。这里先用 OpenAI 联创 Andrej Karpathy 的一张图做个类比,他把 LLM 比喻为一台计算机的 CPU, 把上下文类比为计算机的内存,那么以向量为代表的数据库,就可以看作是这台计算机的硬盘。

图片

下边进一步来说明,为什么即使有了“大海捞针”能力,RAG 仍然必不可少。RAG 从提出到为业界广泛接纳,经历了一年多时间,当下的 RAG 产品已经并不稀缺,然而在实际应用中,却普遍得出了“ RAG 属于上手容易,但真正落地却很难”的结论。究其原因,这里边主要包含两个方面:

其一是来自 LLM 自身。由于 RAG 的工作流程是针对从数据库返回的结果进行回答,这样的话,对于 RAG 来说,LLM 最基础也是最重要的能力其实包含:

1、摘要能力;

2、可控性:即 LLM 是否听话,是否会不按照提示要求的内容自由发挥产生幻觉;

3、翻译能力:这对于跨语言 RAG 是必备的。

遗憾的是,在过去,国内可以用到的 LLM 中,在这三点上表现良好的并不多。至于所谓高级的能力,例如逻辑推理,以及各类 Agent 要求的自主决策能力等,都建构在以上基础能力之上。基础不好,这些也都是空中楼阁。

其二,则是来自于 RAG 系统本身。在前文中已经可以看到:RAG 系统是一条完整的链路,包括数据准备,数据写入,乃至从数据库查询和返回结果排序。在整条链路中,最大的难点来自于两个方面:一是如何应对复杂多变的数据,这些数据包含各种格式,更复杂的还包含各类图表等,如果在没有理解这些语义的基础之上直接提供 RAG 方案,例如简单的根据文字空白就来切分段落,就会导致语义丢失从而让最终查询的结果也是混乱不堪。二是如何查询和排序。当下的主流 RAG 都是采用向量数据库作为支撑,然而在 InfiniFlow 多次实际的应用中已经看到了单纯依靠向量数据库很难满足 RAG 要求。原因就在于,当下的 RAG 大都是服务面向个人的知识库这样的简单场景的,这些场景的用户数据,基本都是文档,那么个人用户对于文档的提问,大体上都是围绕着摘要来做的,有个看上去差不多的答案就可以了。然而在面向企业端的时候,简单依赖向量的 RAG 就显得力不从心,这是由向量的本质决定的:向量只能表征语义而无法对精确信息召回,更甚者,只有向量是无法跟企业内部的信息系统集成的。举几个典型场景:把符合要求的简历筛出,筛选条件包含工作技能(需要向量 + 全文搜索),某类行业的工作经验(基于向量的分组聚合),期望收入,学历,地域(结构化数据)等;基于对话推荐符合个人要求的产品,可以采用多列向量来描述个人偏好,不同的列代表了用户对不同类目产品的过往使用偏好。在推荐过程中,除了采用基于用户的偏好向量进行搜索之外,还需要结合产品的过滤条件:包括是否过期,是否有优惠券,是否符合权限要求,是否有合规要求,该用户是否近期已经购买或者阅读过,等等。简单地讲,在大多数情况下,都必须引入多路召回和重排序,才能保证数据查询的准确度。

假如不去专注于解决这两类问题,那么就很容易陷入让 RAG 去和长上下文 LLM 反复对比的情况:RAG 仅仅提供数据的简单解析,然后直接转化为向量,最后用单一向量做召回,这除了成本,以及私有化场景里所要求的安全等优势之外,在核心对话能力上并没有显著地跟长上下文 LLM 区分开来,甚至还有所不及。

正是基于这些 RAG 本身的痛点,InfiniFlow 先后推出了两个开源项目,旨在解锁 RAG 面向各类场景的服务能力,在当下长上下文 LLM 能力越来越强的前提下,如果把 RAG 自身的痛点也解决掉,那么就可以让更多企业都真正把 LLM 用起来,而不是总是停留在浅层的知识库对话。

第一个是 AI 原生数据库 Infinity。解决的是如何解锁 RAG 面临 B 端场景的复杂查询:如何跟企业已有的数据——包括但不限于非结构化的文档、图片,还包括结构化的信息系统来结合,并解决多路召回和最终融合排序的问题。

如下图所示的基于 RAG 的推荐系统,企业内部已有数据包含用户表,日志表,产品描述表等等,这些数据都可以进入 Infinity,但并不是 1:1 同步,而是增加了若干向量列。这些企业数据,如果仅用向量数据库来建模,是无法表征的:向量数据库只包含一些用于过滤的“标量”字段,而这个系统需要的查询,是多向量,多表 + 全文搜索的复杂查询,采用向量数据库,那么产品的开发是极其复杂的:因为这需要引入额外的 ETL,从而产生一些“标量”过滤字段,这带来了维护性,以及更严重的数据一致性的问题。RAG 面临的是最终用户的使用场景,它是需要业务乃至 LLM 发起请求,就立刻得到答案的,因此不能像数据中台一样仅仅为了一张报表就可以搭建一整套数据管道体系去做宽表这种额外逻辑。因此,Infinity 实际上等于向量数据库 + 搜索引擎 + 普通结构化数据查询,并保证三者的高并发和融合排序。

图片

第二个就是端到端的 RAG 引擎 RAGFlow。它解决数据的问题:因为如果不对用户数据加以区分和清洗,识别其中的语义,就容易导致 Garbage In Garbage Out。RAGFlow 包含了如下的完整 RAG 流程,确保数据从 Garbage In Garbage Out 变为 Quality In Quality Out。   

图片

具体来说, RAGFlow 的最大特色,就是多样化的文档智能处理,因此它没有采用现成的 RAG 中间件,而是完全重新研发了一套智能文档理解系统,并以此为依托构建 RAG 任务编排体系。这个系统的特点包含:

1、它是一套基于 AI 模型的智能文档处理系统:对于用户上传的文档,它需要自动识别文档的布局,包括标题、段落、换行等,还包含难度很大的图片和表格。对于表格来说,不仅仅要识别出文档中存在表格,还会针对表格的布局做进一步识别,包括内部每一个单元格,多行文字是否需要合并成一个单元格等。并且表格的内容还会结合表头信息处理,确保以合适的形式送到数据库,从而完成 RAG 针对这些细节数字的“大海捞针”。

2、它是一套包含各种不同模板的智能文档处理系统:不同行业不同岗位所用到的文档不同,行文格式不同,对文档查阅的需求也不同。比如:

a. 会计一般最常接触到的凭证、发票、Excel 报表;查询的一般都是数字,如:看一下上月十五号发生哪些凭证,总额多少?上季度资产负债表里面净资产总额多少?合同台账中下个月有哪些应付应收?

b. 作为一个 HR 平时接触最庞杂的便是候选人简历,且查询最多的是列表查询,如:人才库中 985/211 的三到五年的算法工程师有哪些?985 硕士以上学历的人员有哪些?赵玉田的微信号多少?香秀哪个学校的来着?

c. 作为科研工作者接触到最多的可能是就是论文了,快速阅读和理解论文,梳理论文和引文之间的关系成了他们的痛点。

这样看来凭证/报表、简历、论文的文档结构是不一样的,查询需求也是不一样的,那处理方式肯定是不一样。因此 RAGFlow 在处理文档时,给了不少的选择:Q&A、Resume、Paper、Manual、Table、Book、Law、通用等等。当然,这些分类还在不断继续扩展中,处理过程还有待完善。他们也会抽象出更多共通的东西,使各种定制化的处理更加容易。   

图片

3、智能文档处理的可视化和可解释性:用户上传的文档到底被处理成啥样了,如:分割了多少片,各种图表处理成啥样了,毕竟任何基于 AI 的系统只能保证大概率正确,作为系统有必要给出这样的空间让用户进行适当的干预,作为用户也有把控的需求,黑箱不敌白箱。特别是对于 PDF,行文多种多样,变化多端,而且广泛流行于各行各业,对于它的把控尤为重要,RAGFlow 不仅给出了处理结果,而且可以让用户查看文档解析结果并一次点击定位到原文,对比和原文的差异,可增可减可改可查,如下图所示:   

图片

图片

    

4、RAGFlow 是一个完整的 RAG 系统,而目前开源的 RAG,大都忽视了 RAG 本身的最大优势之一:可以让 LLM 以可控的方式回答问题,或者换种说法:有理有据、消除幻觉。大家都知道,随着模型能力的不同,LLM 多少都会有概率会出现幻觉,在这种情况下, 一款 RAG 产品应该随时随地给用户以参考,让用户随时查看 LLM 是基于哪些原文来生成答案的,这需要同时生成原文的引用链接,并允许用户的鼠标 hover 上去即可调出原文的内容,甚至包含图表。如果还不能确定,再点一下便能定位到原文,如下图所示:

图片

         

接下来讲讲,RAGFlow 具体是如何利用文档结构识别模型来处理数据的。所谓文档结构模型,如下所示,是针对文档的布局进行目标识别,然后根据布局再做文字切分。这些布局识别的目标包括文档的标题,段落,语义文字块等等,尤其还会包含文档当中的图表。   

图片

在识别出这些目标之后,还需要分别对这些目标做相应处理:对于文字来说,需要首先判断文字的换行信息——这对于文字的语义理解也会产生干扰;其次需要对文字内容进行一些整理,这些整理会随着 RAGFlow 模板的不同有所区分;针对表格来说,还需要进一步识别它的内部结构,这在 AI 领域有个专门的研究课题,叫做 TSR(Table Structure Recognition 表格结构识别) 。

TSR 任务其实相对比较复杂,因为表格的定义是多种多样的,表格内部可能会出现有线条或者没有线条的情况,对于不同行的文字,判断它们是否是一个单元格是存在很大挑战的,单元格判断失误,很可能就会让表格的数字跟表格列的对应关系弄错,从而影响了对单元格内文字和数字语义的理解。因此他们花了很多时间来提升 TSR 的能力,最早是利用现成的 OCR 开源模型,后边也尝试过微软研究院专门针对 TSR 任务的 Transformer 模型,但是发觉这些模型处理 TSR 任务的鲁棒性依然非常不足,最后他们还是训练了自己的模型,从而让 TSR 任务表现良好。这个模型比较简单,就是基于 CNN 的目标检测模型,但是它的效果却比上边提到的其他模型都要好。为了降低对硬件的依赖和开销,甚至切换到用 YOLOv8 来做目标检测,使得仅仅利用 CPU 也可以运行文档结构识别。

关于这些,其实也有很多业内人士建议直接走 LLM 的路子,用 LLM 来做文档语义理解,从长期来看这肯定是个趋势,然而在当下来说,让 LLM 在文档结构识别上表现良好,还需要大量的数据才可以。这从他们放弃了基于 Transformer 的 TSR 模型就可以看出:同样的任务下,基于 Transformer 的模型需要更多的数据才可以表现更好,在有限数据下,不得不退回到传统 CNN 模型,如果是 LLM ,它需要的数据和算力更多——他们之前曾经尝试过基于多模态 LLM 进行识别的努力,相比专用小模型,

它的效果还是差别比较大。   

解锁对于非结构化数据的深度语义理解是 RAGFlow 追求的目标之一,InfiniFlow 希望在未来能够将更加 scalable 的文档结构识别模型应用到系统中。不仅如此, RAGFlow 的设计目标是让 RAG 逐渐承接起更多的复杂场景尤其是 B 端场景,因此在未来,它会接入企业的各类数据源,比如 MySQL 的 binlog,数据湖的 ETL,乃至外部的爬虫等。只有这些都被纳入 RAG 的范畴,他们才能实现如下的愿景:

图片

再回过来看 RAG 的未来以及 RAG 跟长上下文 LLM 之争,这种争论其实没有必要,显然两者一定是合作的长上下文 LLM 当下已经逐步具备了 RAG 最不可或缺的基础能力,随着它自身逻辑推理能力地增强,再结合来自数据库,还有数据方面的改进,一定能加速 LLM 的 B 端场景走出婴儿期的进程。

RAGFlow 近期更新:将提供类似文件管理的功能,这样 RAG 可以跟企业内部文档以更灵活的方式整合。RAGFlow 中期更新,将提供面向企业级数据接入的低代码平台,同时提供问答对话之外的高级内容生成,比如长文生成等等。   

Infinity 近期更新:Infinity 将于近期发布第一个正式版本,届时将提供业界最快的多路召回与融合排序能力。

欢迎大家关注他们的开源社区,并提出反馈意见!

项目开源地址:

Infinity : https://github.com/infiniflow/infinity

RAGFlow:https://github.com/infiniflow/ragflow

RAGFlow 在线Demo:https://demo.ragflow.io/  

END

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

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

相关文章

Emacs之实现复制当前已打开文件buffer(一百三十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

网络安全---非对称数据加密签名验证

一、课题描述 三位同学一组完成数据的非对称加密和数字签名验证传输。 三位同学分别扮演图中 Alice、Bob 和 CA 三个角色,Bob 和 Alice 从 CA 中获得数字证书、Bob 向 Alice 发送秘密发送一段加密并签名后的信息,Alice 获取 Bob 发送的加密信息&#x…

LeetCode 994—— 腐烂的橘子

阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 1.记录下初始新鲜橘子的位置到 notRotting,我们按照行把二维数组拉成一维,所以,一个vector 就可以实现了;2.如果没有新鲜橘子,那么第 0 分钟所有橘子已经…

创建个人百度百科需要什么条件?

互联网时代,创建百度百科词条可以给个人带来更多的曝光和展现,相当于一个镀金的网络名片,人人都想上百度百科,但并不是人人都能创建上去的。 个人百度百科词条的创建需要满足一定的条件,今天伯乐网络传媒就来给大家聊聊…

Scrapy 爬取m3u8视频

Scrapy 爬取m3u8视频 【一】效果展示 爬取ts文件样式 合成的MP4文件 【二】分析m3u8文件路径 视频地址:[在线播放我独自升级 第03集 - 高清资源](https://www.physkan.com/ph/175552-8-3.html) 【1】找到m3u8文件 这里任务目标很明确 就是找m3u8文件 打开浏览器…

featup入坑笔记

一、新建环境 在conda中建立一个虚拟环境featup, conda create -n featup python3.9 二、开始配置: 我是先下载了FeatUp,之后 pip install -e . -i https://mirrors.aliyun.com/pypi/simple/ 但是,突然出错了,说无法…

Day:004(4) | Python爬虫:高效数据抓取的编程技术(数据解析)

XPath工具 浏览器-元素-CtrlF 浏览器-控制台- $x(表达式) Xpath helper (安装包需要科学上网) 问题 使用离线安装包 出现 程序包无效 解决方案 使用修改安装包的后缀名为 rar,解压文件到一个文件夹,再用 加载文件夹的方式安装即可 安装 python若使用…

【2024年5月备考新增】《软考案例分析答题技巧(3)质量、资源》

2.5 项目质量管理 质量管理过程 质量管理过程:规划质量管理-管理质量-控制质量。 管理质量意义: ① 通过执行有关产品特定方面的设计准则,设计出最优的成熟产品; ② 建立信心,相信通过质量保证工具和技术(如质量审计和故障分析)可以使未来输出在完工时满足特定的需求…

动态规划刷题(2)之杨辉三角(详细解释)

最近在自学动态规划,网上到处找资料学习: 在这里记录我的刷题历史: 题目都是在力扣里面刷的!! 这里,我放一个刷动态规划的链接在这里:动态规划知识点题库 - 力扣(LeetCode) 力扣 在这里附加动态规划相关知识点:动态规划(DP)-CSDN博客文章浏览阅读197次。动态规划…

postgresql uuid

示例数据库版本PG16,对于参照官方文档截图,可以在最上方切换到对应版本查看,相差不大。 方法一:自带函数 select gen_random_uuid(); 去掉四个斜杠,简化成32位 select replace(gen_random_uuid()::text, -, ); 官网介绍…

从数据中台到上层应用全景架构示例

一、前言 对于大型企业而言,数据已经成为基本的生产资料,但是有很多公司还是值关心上层应用,而忽略了数据的治理,从而并不能很好的发挥公司的数据资产效益。比如博主自己是做后端的,主要是做应用层,也就是…

(源码+部署+讲解)基于Spring Boot + Vue编程学习平台的设计与实现

前言 💗博主介绍:✌专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 2024年Java精品实战案例《100套》 🍅文末获取源码联系🍅 🌟…

HDFS [MSST‘10] 论文阅读笔记

原论文:The Hadoop Distributed File System (MSST’10) HDFS关键技术要点概览 设计目标:HDFS旨在可靠地存储大型数据集,并以高带宽流式传输这些数据集到用户应用程序。它通过在大量服务器上分布存储和计算资源,使得资源可以随着需求的增长而扩展,同时保持经济高效。架构组…

Day:004(3) | Python爬虫:高效数据抓取的编程技术(数据解析)

BS4实战-人民网 人民网_网上的人民日报 (people.com.cn)http://www.people.com.cn/ import requests from fake_useragent import UserAgent from bs4 import BeautifulSoupurl http://www.people.com.cn/ headers {User-Agent:UserAgent().chrome} # 发送请求 resp request…

前端入门:极简登录网页的制作(未使用JavaScript制作互动逻辑)

必备工具:vscode Visual Studio Code - Code Editing. Redefined 目录 前言 准备 HTML源文件的编写(构建) head部分 body部分 网页背景设置 网页主体构建 CSS源文件的编写(设计) 结果展示 前言 博主稍稍自…

基于ES-EKF的LiDAR/GNSS/IMU传感器融合轨迹估计(附项目源码)

基于改进EKF的LiDAR/GNSS/IMU传感器融合轨迹估计(附项目源码) 算法概述PredictionCorrectionES-EKF算法融合算法实现轨迹估计实验结果 最近在研究传感器融合,看到一个很好的开源项目,适合小白学习,为以后做传感器融合、…

Vue3 + Vite 构建组件库发布到 npm

你有构建完组件库后,因为不知道如何发布到 npm 的烦恼吗?本教程手把手教你用 Vite 构建组件库发布到 npm 搭建项目 这里我们使用 Vite 初始化项目,执行命令: pnpm create vite my-vue-app --template vue这里以我的项目 vue3-xm…

Rocky(Centos)数据库等高并发或高io应用,linux应调优系统

一、系统参数优化 默认的最大打开文件数是1024.不满足生产环境的要求。按照如下配置: 1、修改 systemctl管理的 servie 资源限制 编辑/etc/systemd/system.conf # 全局的打开文件数 DefaultLimitNOFILE2097152 # 全局打开进程数 DefaultLimitNPROC655352、调整系…

GitHub 仓库 (repository) Watch - Star - Fork - Follow

GitHub 仓库 [repository] Watch - Star - Fork - Follow References 眼睛图标旁边写着 Watch 字样。点击这个按钮就可以 Watch 该仓库,今后该仓库的更新信息会显示在用户的公开活动中。Star 旁边的数字表示给这个仓库添加 Star 的人数。这个数越高,代表…

(源码+部署+讲解)基于Spring Boot + Vue的车位租赁系统设计与实现

前言 💗博主介绍:✌专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 2024年Java精品实战案例《100套》 🍅文末获取源码联系🍅 🌟…