使用 Elasticsearch 导航检索增强生成图表
作者:来自 Elastic Louis Jourdain 及 Ivan Monnier
了解如何使用知识图谱来增强 RAG 结果,同时在 Elasticsearch 中高效存储图谱。本指南探讨了根据用户查询动态生成知识子图的详细策略。
检索增强生成 (RAG) 通过将大型语言模型 (LLM) 的输出基于事实数据来增强其性能,但传统的基于文档的 RAG 面临着诸如上下文窗口狭窄和数据不连贯等限制。一个有前途的解决方案是利用知识图谱,它将数据结构化为实体(entities)和关系(relationships),以实现更深入、更具上下文的检索。本文探讨了如何调整 Elasticsearch 以有效实现基于图的 RAG。通过动态构建和修剪针对用户查询的知识子图,并将它们线性化以用于 LLMs,这种混合方法无需额外的基础设施即可实现可扩展性和精确度,为基于事实的 AI 应用开辟了新的可能性。
背景
自 2022 年以来,随着大型语言模型 (LLMs) 的兴起及其令人印象深刻的语言生成能力,将它们集成到众多任务和应用程序中的需求日益增长。然而,由于 LLM 主要接受下一个单词预测的训练,因此它们容易产生幻觉,产生的输出有时可能不可靠且不基于事实信息。
为了解决这一限制,出现了一种称为检索增强生成 (Retrieval-Augmented Generation - RAG) 的新架构。RAG 旨在通过将 LLM 的输出建立在相关的特定领域数据上来确保其可靠性。尽管 RAG 的传统文档驱动方法前景光明,但它存在明显的局限性。具体来说,它只能利用数据库的一小部分 —— 通常是适合模型上下文窗口的少数文档。这种对数据的受限访问限制了它在需要更广泛地了解信息的情况下的有效性。
为了克服这一限制,研究人员提出利用知识图谱来增强 RAG 性能。与基于文档的方法不同,知识图谱允许实体之间存在结构化关系,从而实现更深入、更具上下文的检索。然而,将知识图谱无缝集成到 RAG 中仍然是一个挑战,尤其是在使用 Elasticsearch 等工具时,虽然 Elasticsearch 对于基于文档的 RAG 非常有效,但尚未为基于图的实现而设计。
在本文中,我们将探讨 Graph RAG 背后的直觉,以及如何创造性地重新利用 Elasticsearch 来实现它。我们将首先讨论传统的基于文档的 RAG 架构及其局限性。接下来,我们将研究在知识图谱上实现 RAG 的各种策略,以确定与我们的特定用例最相关的方法。最后,我们将深入解释如何使用 Elasticsearch 来存储和查询图结构,从而实现快速且可扩展的 Graph RAG 实现。
I)基于文档的 RAG:原理及其不足之处
A) RAG 架构入门
RAG(检索增强生成)背后的关键思想是根据与用户查询的相似性从数据存储中检索相关文档或文档片段(称为块 - chunk)。可选地,在重新排序阶段(可显著提高检索的精度)之后,将检索到的文档集成为 LLM 的上下文,以生成对用户查询的事实答案。

B)基于文档的 RAG 的局限性
虽然这种架构在学术界和企业界都引起了热情,并且显著帮助减少了幻觉,但在应用于大型(超过 10,000 个文档)和特定领域的数据集时,它往往无法产生正确的答案。这主要是由于以下几个因素:
- 查询依赖性:检索阶段高度依赖于用户的查询。格式不正确或不清楚的查询将无法产生最相关的文档。
- 特定领域的嵌入问题:在通用数据上训练的嵌入通常无法捕捉特定于特定领域的实体的含义。当所有文档都关注类似主题时,检索的精度会降低。
- 上下文窗口限制:经典 RAG 是短视的,因为它只能访问 LLM 上下文窗口中提供的文档的有限内容。
- 数据本身缺乏联系:文本文档通常不明确包含用户问题的答案,因为相关信息分散在多个文档中,这使得基于文本的检索器很难重建谜题。
因此,除非两个概念明确出现在同一个文档中,否则经典 RAG 系统很难识别不同实体之间的联系。这些琐碎的情况没有考虑到用户查询的全部范围,导致召回性能不佳。
例如,考虑以下查询:
“List some startups that were founded by former employees of Google. - 列出一些由谷歌前员工创立的初创公司。”
经典 RAG 只会检索最明确的文档,例如:
“Ben Silbermann, one of Pinterest's founders, previously worked at Google before launching the now-iconic visual discovery platform Pinterest. - Pinterest 的创始人之一 Ben Silbermann 曾在谷歌工作,之后推出了现在标志性的视觉发现平台 Pinterest。”
但是,关键信息可能存在于数据库中,但分散在多个文档中。例如:
- “Ben Silbermann, hired at Google … - Ben Silbermann,受雇于 Google……”
- “Pinterest was founded by Ben Silbermann… - Pinterest 由 Ben Silbermann 创立……”
在这种情况下,检索阶段将错过连接,因为查询的两个组成部分(“former Google employee - 前 Google 员工” 和 “startup founder - 初创公司创始人”)不会同时出现在单个文档中。
相比之下,数据库的其他表示形式(例如知识图谱)可以无缝链接这些概念,从而提供全面而准确的响应。
II)如何用知识图谱聊天?
A) 什么是知识图谱?
知识图谱 (Knowledge Graph - KG) 由 Google 等公司推广,是一种以最精细的级别表示信息的工具。从数学上讲,知识图谱是一种图,其中:
- 节点(nodes)表示重要实体或概念(可以包括其他字段或属性)。
- 边(edges)表示这些实体之间的关系。这些关系可以来自特定本体中的预定义列表(例如,“connects_to”、“is_located_in”),也可以更加开放和灵活。
知识图谱可以表示为三元组列表,形式如下:
(实体 1、关系、实体 2)
然后可以有效地将这些三元组存储在各种类型的数据库中(Elasticsearch 仅引用其中一种...)。
有几种常用的方法可以从文本数据库构建 KG,要么使用传统的 NLP 技术(命名实体识别 (Named Entity Recognition - NER) 来识别实体,基于规则的系统来提取关系,信息提取模型来提取三元组),要么使用大型语言模型 (Large Language Models - LLMs)。
构建 KG 有几个优点:
- 统一表示(Unified Representation):整个数据库中的信息被合并为一个对象。
- 细粒度数据(Fine-Grained Data:):KG 捕获精确、细粒度的信息,减少噪声内容和不相关的数据。
- 数学运算(Mathematical Operations):图形结构允许进行强大的数学运算,例如节点聚类、最短路径识别或模块度估计。
这些属性使知识图谱特别适合于确定实体之间的联系、提出相关见解以及丰富对用户查询的响应。
B) Graph RAG 与 Document RAG
出于上述所有原因,利用知识图谱 (Knowledge Graphs - KG) 代替或结合经典 RAG 方法似乎是克服基于文档的系统局限性的有希望的解决方案。
与传统的基于文档的方法相比,基于图形的 RAG 可以提供几个优势:与仅基于单个文档检索信息的传统 RAG 不同,Graph RAG 可以突出显示实体之间的关系,即使它们不在同一文档中同时出现。这对于发现隐式连接特别有用。通过依赖结构化三元组(实体、关系、实体),KG 提供了数据库的合成和无噪声版本。这增加了 RAG 系统的召回率,因为相关连接不限于文档边界。
例如,想象一下问:“Tell me all you know about Nancy Pelosi - 告诉我你所知道的关于南希·佩洛西的一切”。在经典的 RAG 设置中,最相关的检索文档可能会关注她作为政治家的角色。这种冗余信息往往会导致信息重复,并忽略她生活的其他方面,例如她的教育或私人生活。相比之下,知识图谱会显示更多样化和结构化的信息,例如:
- (Nancy Pelosi, is_a, Politician)
- (Nancy Pelosi, studied_at, Trinity College)
- (Nancy Pelosi, born_in, Baltimore)
这种结构化数据消除了嘈杂的内容,同时提供了对查询实体的更全面的视图。
尽管在概念上听起来很相似,但 Graph RAG 和 Document RAG 在技术上却截然不同。
Document-Based RAG | Graph-Based RAG |
---|---|
易于实施 | 原理简单/实现起来不简单 如何检索以及检索什么?如何将其提供给 LLM? |
仅限于提供有限数量的上下文(上下文窗口的技术限制) | 专注于三元组。能够在提示中提供更大比例的知识库 |
无法连接超过 k 个文档的信息 | 能够(参见图的数学性质)轻松确定命名实体之间的链接(或不存在的链接)并使用来自所有文档的信息。 |
C)实现图 RAG 的不同方案
最近的研究探索了几种将知识图谱与大型语言模型 (LLMs) 连接起来的方法。以下是最有前途的策略:
1) 节点和关系提取
此方法嵌入知识图谱的组件、其顶点(节点)和边(关系,使用与查询所用的嵌入方法一致的相关嵌入技术)。然后根据向量相似性检索这些嵌入。例如,在研究“Graph Reasoning for Question: Answering with Triplet Retrieval - 问题的图推理:使用三元组检索回答”(Li 等人,2023 年)中,作者提出将 KG 三元组线性化为句子并嵌入它们以检索最相关的三元组。然而,这种方法与经典的 RAG 非常相似,其中 KG 三元组充当 “块”。它未能充分利用知识图谱独特的数学和结构属性,例如关系路径和图遍历。
2) 图形聚类和聚类汇总 (Microsoft:https://arxiv.org/abs/2404.1613)
此技术涉及将相似节点分组为聚类(clusters)并选择最相关的聚类(clusters)来回答查询。通过汇总聚类,系统在与 LLM 交互之前降低了图形的复杂性。虽然具有创新性,但这种方法在计算上很昂贵,尤其是对于具有高维数据的大规模图形。
3) 将查询转换为图形查询
受文本到 SQL (text-to-SQL)技术的启发,这种方法将用户的自然语言查询转换为图形数据库查询(例如,使用 Cypher for Neo4j)。然后执行图形查询以提取最相关的子图以供 LLM 处理。
不幸的是,这种方法仅适用于可以有效转换为数据库样式查询的查询。它需要将数据存储在能够执行此类查询的图形数据库中,这就需要为混合 RAG 架构维护两个单独的数据存储(一个用于文档,一个用于图形)。
虽然这些策略很有前景,但它们也面临着重大挑战,例如计算成本、有限的可扩展性和基础设施复杂性。我们希望从知识图谱的强大属性中受益,同时确保可扩展性和效率,并且不使存储基础设施翻倍。希望我们能想出创造性的方法来使用 Elasticsearch 来实现这一目标。
III)使用 Elastic 存储图谱:操作方法?
总体而言,包含 10 万个文档的数据存储可以转换为具有大约 200 万个关系的知识图谱 (knowledge graph - KG)。这些庞大的图谱结构难以理解,操作起来也非常耗费资源。但是,两个简单的观察可以帮助我们重新表述和简化任务:
- 用户理解(User Comprehension):最终用户只对他们能理解的内容感兴趣。具有几十个节点的图谱是可管理的,而具有数百万个节点的图谱则毫无用处。
- 六度原则(The Six Degrees Principle):根据匈牙利科学家 Frigyes Karinthy(以 “Kevin Bacon - 凯文·培根” 游戏而闻名)的说法,每个人与其他人最多握手六次。在受限环境中,这个数字会进一步下降。同样的原则适用于实体和概念:我们不需要关注整个图谱来回答特定问题。
因此,关键思想是提取与用户问题相关的连贯知识子图。这是可以实现的,因为 KG 在文本数据库中以三元组(源 - source、目标 - destination、关系 - relation)的形式存储。三元组可以选择性地包含文档中说明关系的句子。
A) 将你的 KG 提供给信息饥渴的 LLM 的四步流程
假设我们想在一个专注于法国外交政治的大型数据库中找出 Nancy Pelosi 和 Rachida Dati(法国最无礼的政治家之一)之间的关系。经典 RAG 无法找到相关联系,因为这两个实体没有出现在数据库中的同一篇文档中。我们能在图中恢复这两个女人之间的联系吗?这实际上可以通过四个步骤实现:
1)从用户查询中提取相关节点
使用命名实体识别 (named entity recognition - NER) 管道,我们从用户查询中提取主要实体和概念。

2)使用 Elastic 生成相关知识子图
由于我们已经从用户的问题中提取了最相关的实体,如果有多个实体,我们可以查询该图以确定它们是否紧密相关。虽然查询具有数百万个节点的图形数据库并计算最短路径的成本可能非常高,但使用对源和目标的过滤搜索,提取存储在 Elastic 中的三元组的节点非常简单。我们利用此功能使用以下过程从查询实体中迭代扩展搜索:
要检查两个实体是否连接:
- 我们首先检查两者之间是否有直接关系。
- 如果没有,则使用过滤查询检索连接到这两个实体之一的节点列表。
- 利用 Elastic 堆叠布尔查询的能力,我们检查关系存储是否包含链接到第一个实体的任何元素与链接到第二个实体的任何元素之间的至少一个连接。
- 如果发现连接,我们将停止图形扩展。
- 否则,我们重复该过程,检查连接到第一个和第二个实体的节点的所有直接邻居。
- 我们将迭代次数限制为三次,因为两个通过超过六跳连接的实体仅具有松散的关系。

我们动态生成的子图的大小很难预测,完全取决于查询和数据集的内容。在动态图生成过程中,我们强制执行的唯一约束是,我们不会为每个节点收集超过 100 个邻居。因此,在最佳情况下,如果两个实体之间存在直接连接,则该图将包含最多 2 个(主要实体)+ 2 x 100 = 202 个(主要实体的直接邻居)节点和 201 条边。除此之外,由于查询的 Elastic 10 000 结果默认限制(我们认为这是合理的,因此没有为此进行扩展),每个扩展阶段最多可以带来 10 000 个新节点,因此在最坏情况下,对于具有两个实体的查询,该图可能包含 3(nb_of_hops)x 2(扩展过程的两侧)x 10 000 = 60 002 个节点。
但实际上这样的数字永远无法达到,主要是由于知识图谱的固有拓扑结构,通常显示少量中心(具有高基数的节点),并且有许多节点只有一个邻居(数据库中唯一的实体),这不会扩大搜索范围。数据库中最常见的实体的基数约为 24700,而像 “Rachida Dati” 这样的 “适度” 实体只有 60。每个节点的平均连接数为 16.75。即使在过程中捕获了一些高基数实体,将每个实体的邻居数量限制为 100 个关系也可以确保生成的子图很少大于 1000 个节点。这也是因为枢纽通常与所有其他枢纽相连,因此如果我们想要连接与枢纽相连的实体,路径会非常短(跳数越少,邻居数量的指数漂移就越小),但如果我们想要连接连接不太紧密的节点,路径会更长,但只能遍历基数较低的实体,确保图的大小不会膨胀。
此策略允许我们动态生成仅包含与用户查询相关的节点和边的子图。最后将两位政客联系起来。
3) 图修剪 - Graph pruning
这个子图(几百个关系)足够小,可以进行非常便宜的图操作,但仍然太大,无法直接输入到 LLM 来生成答案。因此,我们需要一个启发式方法来简化它:
- 第一步:仅选择感兴趣的实体之间最短路径上的关系,从而避免嘈杂的三元组。
- 第二步:如果剩余的关系集仍然太大,我们将应用图修剪算法。该算法减少了关系的数量,同时最小化了删除的最短路径的数量并保留了出现在这些路径上的实体的多样性。

此修剪操作将极大地限制图的大小,仅保留查询实体的直接邻居(100 x nb_entity 节点)和出现在最短路径上的节点。我们无法提前预测有多少条最短路径,因为这取决于图的拓扑结构,但最小化循环可确保在最坏情况下仅保留 100 x nb_entity + nb_shortest_paths x 7(3 跳 x 2 + 1 个连接)节点。
4) 图形文本线性化
为了回答用户的查询,我们选择了图形的相关部分,但需要将其转换为可以输入到 LLM 以生成最终答案的格式。我们选择将图形线性化为文本格式,从图形中生成两种类型的 “pseudo-documents - 伪文档”。

这些伪文档是通过将 KG 的三元组连接成可读格式而创建的。文档存储中说明每个三元组的句子也包括在内,从而增强了可读性并提供了支持证据。然后,这些文档被输入到 LLM,作为经典 RAG 检索器检索到的文档的替代或补充。

B) 利用 Elasticsearch 可塑性的时间优化策略
利用 Elasticsearch (ES) 对文本数据的高效检索功能,我们可以动态构建、简化和线性化图形,其时间相当于传统 RAG 管道中文档检索和重新排序所需的时间。这是在最终答案生成之前无需调用 LLM 甚至使用嵌入模型即可实现的。
这种节俭的方法可以在包含超过 10 万个文档的语料库上无缝扩展,在最坏的情况下只需不到 2 秒即可连接多个实体。以下 ES 功能使这成为可能:
- 组合过滤布尔查询:用于限制构建图形所需的查询数量,最多 10 个 ES 查询用于构建具有三个扩展阶段的 KG(我们在这里不包括任何查询,因为它们可能比实际文章占用更多位置)。
- 过滤 KNN 查询:应用于根据三元组与用户查询的相似性有效地重新排序三元组。

由于实体可以与不同的关系相关联,因此可以通过从关系索引中派生出第二个索引(称为聚合关系索引)来实现进一步的优化。由于每个实体平均有 17 个关系,因此使用聚合关系索引除以 17 可以减少检索过程某些步骤的延迟。
此索引仅存储两个实体之间每个链接的来源、目的地和出现次数。通过这样做:
- 仅保留一个对象来表示实体 A 和 B 之间的链接。
- 计算复杂度降低,特别是对于基数较高的节点。

我们使用三重 ES 索引结构,使用单个数据库引擎实现了基于文档和图形的混合 RAG 系统。这种方法无需额外的基础设施即可实现高效的图形构建和检索。

结论
使用知识图谱增强检索增强生成 (Retrieval-Augmented Generation - RAG) 是一项快速发展且前景光明的事业。虽然研究人员和从业者提出了各种策略,但许多实现都缺乏实际大规模应用所需的简单性和可扩展性。
本文概述的方法展示了如何利用 Elasticsearch 的向量数据库功能来动态生成针对每个用户查询量身定制的相关子图。通过专注于知识图谱中最重要的部分,此方法避免了对单独的图形数据存储的需求,降低了基础设施的复杂性,同时有效地扩展到数百万个文档和关系。
想要获得 Elastic 认证?了解下一次 Elasticsearch 工程师培训的时间!
Elasticsearch 包含许多新功能,可帮助你为你的用例构建最佳搜索解决方案。深入了解我们的示例笔记本以了解更多信息,开始免费云试用,或立即在你的本地机器上试用 Elastic。
原文:Navigating graphs for Retrieval-Augmented Generation using Elasticsearch - Elasticsearch Labs
相关文章:
使用 Elasticsearch 导航检索增强生成图表
作者:来自 Elastic Louis Jourdain 及 Ivan Monnier 了解如何使用知识图谱来增强 RAG 结果,同时在 Elasticsearch 中高效存储图谱。本指南探讨了根据用户查询动态生成知识子图的详细策略。 检索增强生成 (RAG) 通过将大型语言模型 (LLM) 的输出基于事实数…...
Flutter调用HarmonyOS NEXT原生相机拍摄相册选择照片视频
目录 1.项目背景 2.遇到的问题 3.开发准备 4.开发过程 首先创建注册调用鸿蒙原生的渠道 创建并初始化插件 绑定通道完成插件中的功能 5.具体步骤 根据传值判断是相册选取还是打开相机 相册选取照片或视频 相机拍摄照片或视频 调用picker拍摄接口获取拍摄的结果 视频…...
浅析云场景SSD实时迁移技术
在数据中心的运营管理中,负载均衡和系统容错是确保高效稳定运行的关键。SSD实时迁移技术,为解决这些问题提供了创新方案,成为数据中心技术发展的重要驱动力。 以AI训练任务为例,其运行时间长且无需用户频繁交互。数据中心的负载会…...
WordPress Hunk Companion插件节点逻辑缺陷导致Rce漏洞复现(CVE-2024-9707)(附脚本)
免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x0…...
BGP分解实验·11——路由聚合与条件性通告(3)
续接上(2)的实验。其拓扑如下: 路由聚合的负向也就是拆分,在有双出口的情况下,在多出口做流量分担是优选方法之一。 BGP可以根据指定来源而聚合路由,在产生该聚合路由的范围内的条目注入到本地BGP表后再向…...
SQL Server 使用SELECT INTO实现表备份
在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误。在 SQL Server 中,可以使用 SELECT INTO 语句将数据从一个表备份到另一个表。 备份表的 SQL 语法: SELECT * INTO 【备份表名】 FROM 【要备份的表】 SEL…...
RPC是什么?和HTTP区别?
RPC 是什么?HTTP 是什么? 作为一个程序员,假设我们需要从A电脑的进程发送一段数据到B电脑的进程,我们一般会在代码中使用 Socket 进行编程。 此时,可选性一般就是 TCP 和 UDP 二选一,由于 TCP 可靠、UDP 不…...
西藏酥油茶:高原上的醇香温暖
西藏酥油茶:高原上的醇香温暖 在西藏高原,有一种饮品,它不仅滋养了一代又一代的藏民,还承载着丰富的文化与历史,它就是西藏酥油茶。酥油茶,藏语称为“恰苏玛”,意为搅动的茶,是藏族人民日常生活中不可或缺的一部分,更是待客、祭祀等活动中的重要礼仪物品。 历史与文化渊源 酥…...
十、VUE中的CSS
一、vue中解决样式不冲突的两种方式 scoped方式 在App.vue中引入Helloworld子组件 在Helloworld子组件中再次引入我们编写Demo子组件 解释: 这种方式是在style上加了个scoped,限制了样式的使用范围。 动态类名方式 二、vue构建打包 npm run build...
论文阅读 AlphaFold 2
用AlphaFold进行非常精确的蛋白质结构的预测(AlphaFold2) 发表于2021年07月15日 NatureDOI: 10.1038/s41586-021-03819-2自然和科学杂志评选为2021年最重要的科学突破之一2021年AI在科学界最大的突破 前言 2020年11月30号, deepmind博客说AlphaFold解决了50年以来生物学的大挑…...
PVE 虚拟机安装 Debian 无图形化界面服务器
Debian 安装 Debian 镜像下载 找一个Debian镜像服务器,根据需要的版本和自己硬件选择。 iso-cd/:较小,仅包含安装所需的基础组件,可能需要网络访问来完成安装。有镜像 debian-12.9.0-amd64-netinst.isoiso-dvd/:较…...
讯飞星火大模型将超越chatgpt?
讯飞星火大模型真的能超越ChatGPT吗? 在人工智能的世界里,新技术层出不穷,而科大讯飞最近发布的讯飞星火大模型3.0引发了不少讨论。有些人甚至大胆猜测:这个模型是否能够在某些方面超越如今广受欢迎的ChatGPT?今天,我们就来深入探讨一下这个话题,分析讯飞星火大模型3.0…...
Linux解决输入法卡死问题
说明:在Ubuntu系统中,如果您需要重启输入法服务(比如fcitx或ibus),您可以按照以下步骤操作。这些步骤适用于大多数基于Ubuntu的发行版,例如Ubuntu、Linux Mint等。 一、重启Fcitx输入法服务 1、使用Ctrl …...
PPT自动化 python-pptx -7: 占位符(placeholder)
占位符(placeholder)是演示文稿中用于容纳内容的预格式化容器。它们通过让模板设计者定义格式选项,简化了创建视觉一致幻灯片的过程,同时让最终用户专注于添加内容。这加快了演示文稿的开发速度,并确保幻灯片之间的外观…...
“AI视觉贴装系统:智能贴装,精准无忧
嘿,朋友们!今天我要跟你们聊聊一个特别厉害的技术——AI视觉贴装系统。这可不是普通的贴装设备,它可是融合了人工智能、计算机视觉和自动化控制等前沿科技的“智能贴装大师”。有了它,那些繁琐、复杂的贴装工作变得轻松又精准。来…...
【Efficient AIGC】SiTo: Similarity-based Token Pruning (AAAI-2025)
文章目录 SiTo: Training-Free and Hardware-Friendly Acceleration for Diffusion Models via Similarity-based Token Pruning背景介绍方法结果消融 文章目录 SiTo: Training-Free and Hardware-Friendly Acceleration for Diffusion Models via Similarity-based Token Prun…...
音频入门(一):音频基础知识与分类的基本流程
音频信号和图像信号在做分类时的基本流程类似,区别就在于预处理部分存在不同;本文简单介绍了下音频处理的方法,以及利用深度学习模型分类的基本流程。 目录 一、音频信号简介 1. 什么是音频信号 2. 音频信号长什么样 二、音频的深度学习分…...
mac 通过 Homebrew 安装 git 遇到的问题
问题真多啊 !!! 解决方式 见 1. / 2. / 3 . / 4. / 5. remote: Enumerating objects: 290323, done. remote: Counting objects: 100% (473/473), done. remote: Compressing objects: 100% (253/253), done. error: RPC failed; curl 92 H…...
Flutter android debug 编译报错问题。插件编译报错
下面相关内容 都以 Mac 电脑为例子。 一、问题 起因:(更新 Android studio 2024.2.2.13、 Flutter SDK 3.27.2) 最近 2025年 1 月 左右,我更新了 Android studio 和 Flutter SDK 再运行就会出现下面的问题。当然 下面的提示只是其…...
【信息系统项目管理师-选择真题】2018上半年综合知识答案和详解
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 【第1题】【第2题】【第3题】【第4题】【第5题】【第6题】【第7题】【第8题】【第9题】【第10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16题】【第17题】【第18题】【第19题】【第20题】【第…...
探究 Facebook 隐私安全发展方向,未来走向何方?
随着社交媒体的普及,隐私和数据安全问题成为了全球关注的焦点。Facebook,作为全球最大的社交平台之一,其隐私安全问题尤其引人注目。近年来,随着用户数据泄露事件的不断发生,Facebook 不断调整其隐私政策,探…...
漏洞修复:Apache Tomcat 安全漏洞(CVE-2024-50379) | Apache Tomcat 安全漏洞(CVE-2024-52318)
文章目录 引言I Apache Tomcat 安全漏洞(CVE-2024-50379)漏洞描述修复建议升级Tomcat教程II Apache Tomcat 安全漏洞(CVE-2024-52318)漏洞描述修复建议III 安全警告引言 解决方案:升级到最新版Tomcat https://blog.csdn.net/z929118967/article/details/142934649 service in…...
Leecode刷题C语言之购买水果需要的最小金币数
执行结果:通过 执行用时和内存消耗如下: int dp(int* prices, int pricesSize, int index, int* memo) {if (2 * index 2 > pricesSize) {return prices[index];}if (memo[index] -1) {int minValue INT_MAX;for (int i index 1; i < 2 * index 2; i) …...
【27】Word:徐雅雯-艺术史文章❗
目录 题目 NO1.2 NO3 NO4 NO5 NO6.7 NO8.9 NO10.11 注意:修改样式的字体颜色/字号,若中英文一致,选择所有脚本。格式相似的文本→检查多选/漏选格式刷F4重复上一步操作请❗每一步检查和保存 题目 NO1.2 F12另存为布局→行号布局…...
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
文章目录 一、前言1.1 MySQL体系结构1.2 MySQL日志分类1.3 其他几种日志1.3.1 查询日志1.3.2 慢查询日志1.3.3 错误日志 二、bin log 二进制日志2.1 bin log简介2.2 binlog日志格式2.3 日志删除2.4 写入/刷盘机制 三、undo log 回滚日志3.1 undo log简介3.2 隐藏字段 —— 事务…...
数字MIC PDM接口
在音频采样中,我们经常会用到PCM,PDM这种方式,它们之间也是有一些区别的。 1:PDM 工作原理: PDM使用远高于PCM采样率的时钟采样调制模拟分量,每次采样结果只有1位输出(0或1&…...
dfs专题五:FloodFill算法
1.图像渲染 link:733. 图像渲染 - 力扣(LeetCode) code class Solution { public:int prev;vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int color) {if(image[sr][sc] color) return …...
笔试-二维数组
应用 快递业务有N个站点,1<N<10000;站点0、站点1可达,记作0-1;如果0-1、1-2,则站点0、站点2可达,记作0-2;s[i][j]1表示i-j可达,反之s[i][j]0表示i-j不可达;s[i][j…...
大模型GUI系列论文阅读 DAY2续:《一个具备规划、长上下文理解和程序合成能力的真实世界Web代理》
摘要 预训练的大语言模型(LLMs)近年来在自主网页自动化方面实现了更好的泛化能力和样本效率。然而,在真实世界的网站上,其性能仍然受到以下问题的影响:(1) 开放领域的复杂性,(2) 有限的上下文长度ÿ…...
如何提升IP地址查询数据服务的安全?
随着网络科技深入人们的生活之中,数据相关服务顺时代浪潮应运而生。而在数据查询相关服务之中,数据安全乃是重中之重。而如何部署数据查询服务安全,今天让我们来大致了解一下: 数据加密 数据加密是数据查询服务安全的核心技术之…...
【Leetcode】--- 接雨水
题目传送门 方法一: 前缀和后缀和 算法原理 需要两个数组。 第一个数组存储最左边到第 i 个位置的最大高度(前缀最大值) 第二个数组存储最右边到第 i 个位置的最大高度(后缀最大值) 最终第 i 个位置的 接水量 min&am…...
深入探索Math.NET:开启高效数值计算之旅
一、引言 在当今数字化时代,数值计算已然成为科学研究、工程设计、金融分析等众多领域的核心驱动力。从探索宇宙奥秘的物理学计算,到优化建筑结构的土木工程设计,再到预测市场趋势的金融建模,数值计算的身影无处不在,…...
案例研究丨浪潮云洲通过DataEase推进多维度数据可视化建设
浪潮云洲工业互联网有限公司(以下简称为“浪潮云洲”)成立于2018年,定位于工业数字基础设施建设商、具有国际影响力的工业互联网平台运营商、生产性互联网头部服务商。截至目前,浪潮云洲工业互联网平台连续五年入选跨行业跨领域工…...
Logback日志文件详细配置
完整版Logback.xml文件 放在Resources目录下即可 Mac用户更改一下日志文件存放地点即可 <FileNamePattern>/Users/***/***/tlias-%d{yyyy-MM-dd}-%i.log</FileNamePattern> <?xml version"1.0" encoding"UTF-8"?> <configurati…...
TDengine 与上海电气工业互联网平台完成兼容性认证
在工业数字化转型和智能化升级的浪潮中,企业对高效、可靠的数据管理解决方案的需求日益增长。特别是在风电智能运维、火电远程运维、机床售后服务等复杂多样的工业场景下,如何实现海量设备和时序数据的高效管理,已经成为推动行业升级的关键。…...
VMware虚拟机安装macOS11
1.安装虚拟机 如果尚未安装虚拟机,请先进行安装。地址:VMware17下载地址 2、下载苹果镜像文件 macOS Big Sur 11.0.1 (20B29) 3、下载unlock文件(目的是开启VMware的macOS选项功能) https://download.csdn.net/d…...
PostgreSQL中级专家是什么意思?
数据库技术领域,PostgreSQL 作为一种广泛使用的开源关系型数据库管理系统,吸引了众多技术人员深入学习和研究。“PostgreSQL 中级专家” 是对掌握该数据库特定技能层次的一种描述。 知识储备 中级专家深入理解 PostgreSQL 的体系结构,包括进程…...
ubuntu20使用apt安装mysql8
目录 ubuntu20使用apt安装mysql8报错列表参考链接首先删除旧mysql 一、下载配置mysql8库索引下载apt包解压包配置更新apt库索引 二、下载安装mysql8三、启动mysql服务配置开机自启动,忽略 本地登录远程登录查看mysql的所有用户使用客户端远程登陆如果报错完成 参考链…...
FastDFS的安装及使用
分布式存储发展历程 前段时间 618 活动火热进行,正是购物的好时机。当我们访问这些电 商网站的时候,每一个商品都会有各式各样的图片展示介绍,这些图 片一张两张可以随便丢在服务器的某个文件夹中,可是电商网站如此 大体量的…...
二叉树(了解)c++
二叉树是一种特殊的树型结构,它的特点是: 每个结点至多只有2棵子树(即二叉树中不存在度大于2的结点) 并且二叉树的子树有左右之分,其次序不能任意颠倒,因此是一颗有序树 以A结点为例,左边的B是它的左孩子,右边的C是…...
头像生成小程序搭建(免费分享)
如下图为小程序页面的基本效果,下面将介绍该小程序的功能 页面template代码如下: <template><view class"avatar-containner"><block v-if"!showCropper"><image class"pageback" src"../../s…...
Alluxio 联手 Solidigm 推出针对 AI 工作负载的高级缓存解决方案
作者:Wayne Gao, Yi Wang, Jie Chen, Sarika Mehta Alluxio 作为全球领先的 AI 缓存解决方案供应商, 提供针对 GPU 驱动 AI 负载的高速缓存。其可扩展架构支持数万个节点,能显著降低存储带宽的消耗。Alluxio 在解决 AI 存储挑战方面的前沿技…...
【ComfyUI专栏】ComfyUI 部署Kolors
什么是Kolors?我相信一定会有朋友可能第一次听说这个生图的模型,开始我也很难想象,这竟然是快手推出的可灵AI的项目,我们可以直接利用模型来生成图片和视频。 大家可以通过直接访问可灵AI的网址获取到可灵的项目,但是对于我们来说我们需要基于ComfyUI来生成必要的图片和视…...
HBase的原理
一、什么是HBase HBase是一个分布式,版本化,面向列的数据库,依赖Hadoop和Zookeeper (1)HBase的优点 提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统 (2) HBase 表的特性 Region包含多行 列族包含多…...
Spring Boot中如何实现异步处理
在 Spring Boot 中实现异步处理可以通过使用 Async 注解和 EnableAsync 注解来实现。以下是如何配置和使用异步处理的步骤和示例代码。 步骤: 启用异步支持: 在 Spring Boot 配置类上使用 EnableAsync 注解启用异步处理。使用 Async 注解异步方法&…...
SSM电子商城系统
🍅点赞收藏关注 → 添加文档最下方联系方式咨询本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅 项目视频 电…...
新版IDEA创建数据库表
这是老版本的IDEA创建数据库表,下面可以自己勾选Not null(非空),Auto inc(自增长),Unique(唯一标识)和Primary key(主键) 这是新版的IDEA创建数据库表,Not null和Auto inc可以看得到,但Unique和Primary key…...
二叉树的存储(下)c++
链式存储 我们可以创建两个数组L[N]、r[N],分别存储i 号结点的左右孩子的编号,这样就可以通过数组下标实现链式访问。 本质上还是孩子表示法,存储的是左右孩子的信息 #include <iostream>using namespace std;const int N 1e6 10; …...
Flutter中PlatformView在鸿蒙中的使用
Flutter中PlatformView在鸿蒙中的使用 概述在Flutter中的处理鸿蒙端创建内嵌的鸿蒙视图创建PlatformView创建PlatformViewFactory创建plugin,注册platformview注册插件 概述 集成平台视图(后称为平台视图)允许将原生视图嵌入到 Flutter 应用…...
Docker—搭建Harbor和阿里云私有仓库
Harbor概述 Harbor是一个开源的企业级Docker Registry管理项目,由VMware公司开发。它的主要用途是帮助用户迅速搭建一个企业级的Docker Registry服务,提供比Docker官方公共镜像仓库更为丰富和安全的功能,特别适合企业环境使用。12 Harb…...