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

day37大模型程序开发-GraphRAG理论

RAG基本回顾

  • 实现流程
    • 准备原始的知识库(一个一个的文件组成)
    • 将知识库文件内容进行读取(完整的字符串)
    • 分块处理(新知识库:一段一段的文本字符串组成)
    • 向量转换:将每一段文本chunk转换成向量(向量模型)
    • 将向量数据存储到向量数据库
    • 接受用户的提问,将用户提问转换成向量。
    • 使用用户提问内容的向量表示在向量数据库中进行相似度检索
    • 将检索出的结果结合用户提问作用到一组提示词中
    • 将完整的提示词发送给大模型

GraphRAG快速入门与原理详解

一、GraphRAG快速入门介绍

当前阶段大模型的应用落地急需解决的核心问题有一个是:如何与私域数据交互。而私域数据主要的问题是:需要有效地将企业数据整合进大语言模型中,但由于大模型的上下文处理能力有限,必须精准的选择出哪些数据在当前对话上下文中是有效的

1. 传统RAG技术实现流程与技术瓶颈

对于那些已经对 RAG(检索增强生成)有一定了解的同学而言,在实践过程中,想必都或多或少地遇到过一系列颇具挑战性的问题。下面将对这些问题进行详细的阐述和分析,以帮助大家更深入地理解它们。

上下文在文本块之间丢失

RAG 的应用中,当我们从大量的文档或数据源中检索相关信息时,往往会将这些信息以文本块的形式组合起来,然后输入到生成模型中以获取最终的回答。然而,在这个过程中,一个常见的问题就是上下文在各个文本块之间容易丢失。

随着检索到的文档的增长,性能会下降

随着我们对信息的检索需求不断增加,检索到的相关文档数量也会逐渐增多。在这种情况下,RAG 系统的性能往往会出现明显的下降趋势。

基准RAG难以连接不同的信息点

在很多实际的问答场景中,我们需要通过共享的属性将分散在不同文档或数据片段中的信息片段连接起来,从而提供新的、综合性的见解。然而,基准 RAG 在这方面往往表现不佳。

基准RAG在被要求全面理解大规模数据集或单个大型文档中总结出的语义概念时表现较差

当面对大规模的数据集或单个大型文档时,基准 RAG 在全面理解其中总结出的语义概念方面存在较大的困难。

这主要是因为基准 RAG 的模型架构和训练方法在一定程度上限制了它对复杂语义概念的理解和处理能力。它通常侧重于对局部信息的检索和简单整合,而缺乏对大规模数据或复杂文档的整体语义建模和分析能力。

2. GraphRAG技术方案提出

为了解决这些问题,2024年2月微软研究院正式提出一种基于知识图谱的RAG方法——GraphRAG,这种新方法利用LLM基于私人数据集创建知识图谱。然后,这个图谱与图机器学习技术结合,在查询时执行提示增强。

image-20250604100609672

研究报告地址:https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/

该方法一经推出就受到业内广泛关注,经过一段时间的研究,微软研究院与2024年4月正式发布名为《From Local to Global: A Graph RAG Approach to Query-Focused Summarization》的论文,详细阐述了GraphRAG方法的基本流程和卓越性能:

image-20250604101015493

论文中描述GraphRAG(Graph Retrieval-Augmented Generation)是一种结合图数据库和生成模型的技术,旨在通过构建和查询知识图谱来增强自然语言生成的能力。它通过利用知识图谱的结构化信息来为生成模型提供更精确和背景丰富的上下文,从而改进生成模型的表现,尤其在复杂问题解答和文本生成方面。

简单理解知识图谱:

知识图谱是一种将信息表示为实体(节点)和关系(边)的网络,模仿了人类结构知识的组成方式。它不仅能捕获原始信息,还能捕获跨越多个文档的高阶关系,并具备强大的推理能力。

  • 实体

    • 在知识图谱中,实体是知识图谱中的基本单元,代表具体的事物、概念或对象,比如人物、地点、事件、组织、疾病等。例如在一本关于历史的书籍中,“秦始皇”“罗马帝国”等就是实体。
  • 关系:

    • 用于描述实体之间的语义联系,比如“属于”“位于”“导致”“治疗”等。这些关系将不同的实体连接起来,形成一个复杂的网络结构,以表达各种知识。比如“糖尿病→治疗→胰岛素”就表示糖尿病和胰岛素之间存在治疗的关系。

二、GraphRAG原理详解

1.GraphRAG整体流程介绍

GraphRAG通过利用大模型从原始文本数据中提取知识图谱来满足跨上下文检索的需求。该知识图将信息表示为互连实体和关系的网络,与简单的文本片段相比,提供了更丰富的数据表示。这种结构化表示使 GraphRAG 能够擅长回答需要推理和连接不同信息的复杂问题。具体来看,GraphRAG 像传统RAG一样,GraphRAG 过程也涉及两个主要阶段:索引和查询。我们依次展开来进行讨论。

2. GraphRAG 索引阶段执行流程

Step 1. 文本切分(Text Unit Splitting)

  • GraphRAG 需要处理的是一大篇文档或语料库。首先,它会将这些文档切分为 Text Units(文本单元),这些 Text Units 是对输入文档的细分,通常是按照段落、句子或固定长度的文本块来进行切分。
  • 这样做的目的是为了便于对文本内容进行分析,尤其是当需要进行 实体识别关系抽取 时,能够精准地关联到文档中的具体上下文。

Step 2. 实体识别(Entity Extraction)

  • 在文本切分之后,GraphRAG 会使用 大模型 对每个 Text Unit 进行处理,提取其中的 实体。这些实体通常是指文档中出现的人物、地点、组织、概念等信息。
  • 实体识别的目的是构建 实体图谱(Entity Graph),将所有实体提取出来并为后续的关系挖掘和查询做准备。

Step 3. 关系挖掘(Relationship Extraction)

  • 关系挖掘是从文本中识别出实体之间的 关系,例如:谁与谁有关联、某个实体与另一个实体之间的关系是“属于”、“合作”、“对立”等。
  • 通过这种关系提取,GraphRAG 可以构建 关系图谱(Relationship Graph),这些关系将有助于后续的 查询引擎 理解和推理。

Step 4. 文本嵌入(Text Embedding)

  • 在识别了文本中的实体和关系之后,GraphRAG 会利用 嵌入模型( Embedding 模型)将文本和实体表示为向量(vectors)。这些向量不仅包括了文本的语义信息,还能为后续的检索和查询提供高效的表示。
  • 这些嵌入向量将存储在 向量数据库中,为查询时提供快速的相似度搜索。

Step 5. 构建社区和层级结构(Community and Hierarchical Clustering)

  • 通过使用 图谱聚类算法,GraphRAG 会将不同的实体和关系分组,形成多个 社区(Community)。这些社区是根据实体之间的相似度或关系的密切程度进行划分的。
  • 这种分组帮助 GraphRAG 更好地理解不同知识领域的结构,为查询时提供更具层次性的上下文信息。

Step 6. 生成索引文件(Indexing)

  • 完成上述步骤后,所有的 实体关系社区报告文本单元等信息都会存储在磁盘上的 Parquet 文件中。
  • 这些索引文件实际上就是构建好的 知识图谱,包括了文本内容、文本中涉及的实体和关系的结构化表示,并且这些文件是为后续的查询引擎和推理过程提供基础。

总的来说GraphRAG 的 索引阶段 是一个 多步骤 的过程,基本流程是:

  1. 文本切分(Text Units)
  2. 实体识别(Entity Extraction)
  3. 关系挖掘(Relationship Extraction)
  4. 文本嵌入(Text Embedding)
  5. 社区划分和层级结构(Clustering)
  6. 生成索引文件(Indexing)

整个过程的目的是将文档中的原始文本转化为可以进行检索和推理的结构化知识图谱。而 实体识别关系挖掘 通常是在文本切分之后进行的,因为需要先确保文本已经切分成足够小的单元才能进行更精细的分析和抽取。

3.GraphRAG索引阶段流程详解

  • 示例文本

《大数据时代》是一本由维克托·迈尔-舍恩伯格与肯尼斯·库克耶合著的书籍,讨论了如何在海量数据中挖掘出有价值的信息。这本书深入探讨了数据科学的应用,并阐述了数据分析和预测在各行各业中的影响力。在书中,作者举了许多实际例子,说明大数据如何改变我们的生活,甚至如何预测未来的趋势。

Step 1.文本切分

假设的切分结果(按50个token分割):

文本单元1:

  • text《大数据时代》是一本由维克托·迈尔-舍恩伯格与肯尼斯·库克耶合著的书籍,讨论了如何在海量数据中挖掘出有价值的信息。

文本单元2:

  • text这本书深入探讨了数据科学的应用,并阐述了数据分析和预测在各行各业中的影响力。

文本单元3:

  • text在书中,作者举了许多实际例子,说明大数据如何改变我们的生活,甚至如何预测未来的趋势。

然后即可将上述切分结果记录在某张表内,例如我们将其命名为TEXT_UNIT_TABLE,则表内容如下:

id human_readable_id text n_tokens document_ids
t1 text_unit_1 《大数据时代》是一本由维克托·迈尔-舍恩伯格与肯尼斯·库克耶合著的书籍,讨论了如何在海量数据中挖掘出有价值的信息。 50 doc_1
t2 text_unit_2 这本书深入探讨了数据科学的应用,并阐述了数据分析和预测在各行各业中的影响力。 50 doc_1
t3 text_unit_3 在书中,作者举了许多实际例子,说明大数据如何改变我们的生活,甚至如何预测未来的趋势。 50 doc_1
Step 2.实体识别
  • 实体的定义

在自然语言处理中,实体(Entity)通常指的是文本中具有独立存在、能够被明确识别并且具有特定意义的对象。实体通常是指一些特定的名词,它们代表现实世界中的对象或概念,可以是人、地点、组织、事件、日期、物品、概念等。

例如:

  1. 人名:维克托·迈尔-舍恩伯格、肯尼斯·库克耶
  2. 地点:北京、美国
  3. 组织名:微软公司、谷歌
  4. 事件:新冠疫情、2024东京奥运会
  5. 日期:2024年12月、2023年11月
  6. 物品:iPhone、蓝牙耳机
  7. 概念:大数据、机器学习
  • 知识图谱中的实体

在知识图谱中,每个实体都有其独特的标识符和属性(例如,姓名、类型、描述等)。这些属性和关系帮助我们理解实体在特定领域中的作用和上下文。实体识别是图谱构建的重要步骤之一。

例如,假设我们有以下句子:"维克托·迈尔-舍恩伯格是《大数据时代》一书的作者,他是大数据领域的专家。"

在这个句子中,实体包括:

  1. 维克托·迈尔-舍恩伯格(人名)
  2. 《大数据时代》(书名)
  3. 大数据领域(概念)

这些实体在知识图谱中将被标识为节点,并且可以与其他节点(如其他作者、书籍、领域等)通过关系(如“写书”,“属于领域”)连接,形成知识图谱中的一个网络结构。同时,在知识图谱中,实体是基础组成单元,它们通过关系(relationship)连接,构成一个图的结构。实体和关系是构建知识图谱的两个基本元素。实体之间的连接关系定义了图谱中的知识和数据。

  • 实体识别的作用

实体识别(Entity Recognition)是指从文本中自动识别出这些重要的实体。在GraphRAG的索引阶段中,实体识别是构建知识图谱的第一步,目标是提取出文档中的核心实体,为后续的关系抽取、文本切分等操作打下基础。

实体识别的过程通常涉及:

  1. 命名实体识别(NER,Named Entity Recognition):这是一种自然语言处理(NLP)任务,用来识别文本中具有特定意义的实体,如人名、地点、日期等。
  2. 实体分类:在识别实体之后,还需要根据其属性对实体进行分类,例如将"维克托·迈尔-舍恩伯格"分类为"人名",将"大数据"分类为"概念"。
  • GraphRAG中的实体识别

在GraphRAG的索引过程中,实体识别是与文本切分和关系挖掘同时进行的。具体来说:

  1. 实体识别:GraphRAG使用大语言模型(如GPT)识别文本中的实体,并根据其类型为每个实体赋予一个唯一标识符。
  2. 实体嵌入:GraphRAG为每个实体生成语义嵌入,即一个高维向量,来描述该实体的语义。实体嵌入可以帮助模型理解实体在不同上下文中的意义和关系。
  3. 关系挖掘:在识别实体之后,GraphRAG还会识别实体之间的关系,例如“作者是”、“属于”等。这些关系构成了知识图谱中的,实体则是图谱中的节点
  • 示例demo实体识别

假设我们使用和之前相同的示例文本《大数据时代》,并从中提取出两个实体:书籍《大数据时代》和作者维克托·迈尔-舍恩伯格。

id human_readable_id title type description text_unit_ids
e1 大数据时代 大数据时代 书籍 《大数据时代》是一本关于大数据应用的书籍,作者讨论了数据如何改变世界。 [0, 1]
e2 维克托·迈尔-舍恩伯格 维克托·迈尔-舍恩伯格 人物 维克托·迈尔-舍恩伯格是大数据领域的专家,他是《大数据时代》的合著者。 [0, 1]
e3 肯尼斯·库克耶 肯尼斯·库克耶 人物 肯尼斯·库克耶同样是大数据领域的专家,他是《大数据时代》的合著者之一。 [0, 1]
e4 数据科学 数据科学 事件 《大数据时代》讨论的核心议题,关于如何进行更有效的数据挖掘。 [1]
e5 数据分析 数据分析 事件 数据科学领域的某一种具体的实践方法,在大数据时代其价值被进一步放大。 [1, 2]

解释:

  • id:我们为每个实体分配了唯一的标识符(e1e2),这可以帮助在数据库中唯一地标识每个实体。
  • human_readable_id:我们使用易于理解的名称来表示实体,"大数据时代""维克托·迈尔-舍恩伯格",便于后续的引用和查询。
  • title:实体的标题或名称,对于书籍是 "大数据时代",对于人物是 "维克托·迈尔-舍恩伯格"
  • type:标记实体的类型,分别是 "书籍""人物""事件"
  • description:给出实体的简短描述,帮助我们理解这些实体是什么。比如对书籍的描述是这本书的主题、内容概述,对人物是他在大数据领域的影响力和背景。
  • text_unit_ids:列出了每个实体在 TEXT_UNIT_TABLE 中涉及的文本段。由于这两者实体都出现在示例文本的第0段和第1段中,因此都对应 [0, 1]

这里我们可以将这张表命名为ENTITY_EMBEDDING_TABLE

此外,我们可以创建一张名为ENTITY_TABLE的表,用于单独记录实体和关系:

id human_readable_id title community level degree x y
1 "e1" "大数据时代" - - - - -
2 "e2" "维克托·迈尔-舍恩伯格" - - - - -
3 "e3" "肯尼斯·库克耶" - - - - -
4 "e4" "数据科学" - - - - -
5 "e5" "数据分析" - - - - -

在这个表中:

  • id: 每个实体的唯一标识符,可以是数字或字符串。
  • human_readable_id: 人类可读的标识符,方便理解。
  • title: 实体的标题或名称(如文本中的人物、书籍名等)。
  • community: 实体所属的社区编号(我们假设所有实体目前都在社区-,后续聚类会更新)。
  • level: 后续解释填充。
  • degree: 后续解释填充。
  • x, y: 实体坐标,用于展示实体位置,后续可以使用图布局算法自动生成。
Step 3.关系挖掘

关系挖掘(Relationship Extraction)是构建知识图谱过程中的一个关键环节,它旨在识别文本中不同实体之间的关系。关系挖掘通常是实体识别之后的第二步,目的是将各个实体连接起来,形成一个有意义的图谱结构。在GraphRAG中,关系挖掘的过程涉及多种技术手段,包括自然语言处理(NLP)、机器学习、深度学习等方法。

  • 关系挖掘的目标

关系挖掘的目标是从文本中提取出实体之间的语义关系。这些关系可以是显式的,也可以是隐式的,通常关系的形式是“实体A实体B之间的关系”。通过挖掘这些关系,最终构建起一个实体-关系-实体的三元组(Triple),这是知识图谱的基本构成单元。

例如:

“维克托·迈尔-舍恩伯格是《大数据时代》一书的作者。”

  • 实体A:维克托·迈尔-舍恩伯格(人)
  • 实体B:《大数据时代》一书(书籍)
  • 关系:“是...的作者”

关系挖掘不仅要识别出实体A和实体B,还要准确地抽取出它们之间的语义关系“是...的作者”。这些关系将用于构建知识图谱中的边。

  • 示例文本中实体的关系挖掘过程

据此,我们可以进一步计算出实体的 leveldegree 值。这两个指标通常用于描述实体在知识图谱中的重要性连接度。它们的计算依赖于图中的实体和关系结构,通常通过图算法来计算。这些指标可以帮助系统理解每个实体在知识图谱中的角色,从而优化查询和推理。具体操作流程如下:

  1. 实体识别

从文本中识别出以下实体:

  • 大数据时代(书籍)
  • 维克托·迈尔-舍恩伯格(人名)
  • 肯尼斯·库克耶(人名)
  • 数据科学(学科领域)
  • 数据分析(学科领域)
  1. 关系抽取

从文本中识别出实体之间的关系(以三元组表示):

  • 维克托·迈尔-舍恩伯格《大数据时代》 之间的关系:“是作者”
  • 肯尼斯·库克耶《大数据时代》 之间的关系:“是作者”
  • 《大数据时代》数据科学 之间的关系:“探讨”
  • 《大数据时代》数据分析 之间的关系:“阐述”
  1. 构建关系图

根据识别出的关系,构建一个简单的图结构:

  • 大数据时代 <-> 维克托·迈尔-舍恩伯格 (是作者)
  • 大数据时代 <-> 肯尼斯·库克耶 (是作者)
  • 大数据时代 <-> 数据科学 (探讨)
  • 大数据时代 <-> 数据分析 (阐述)

这里我们已经构建了一个简单的图,节点表示实体,边表示它们之间的关系。

  1. 计算度数 (Degree)

核心概念一:度数 (Degree)

度数 (Degree) 是一个节点(实体)在图中直接相连的边的数量,表示该实体在知识图谱中的连接性。度数越高,说明该实体在图中越重要或越活跃。在知识图谱中,通常将度数作为节点的一个重要特征,表示该实体与其他实体之间的关系强度。

度数可以通过计算图中每个节点的边数来获得:

  • 大数据时代:度数为 4(它与四个实体都有关系,分别是维克托·迈尔-舍恩伯格、肯尼斯·库克耶、数据科学和数据分析)
  • 维克托·迈尔-舍恩伯格:度数为 1(它只与《大数据时代》相关)
  • 肯尼斯·库克耶:度数为 1(它只与《大数据时代》相关)
  • 数据科学:度数为 1(它只与《大数据时代》相关)
  • 数据分析:度数为 1(它只与《大数据时代》相关)
  1. 计算等级 (Level)

核心概念二:等级 (Level)

等级 (Level) 是指实体在知识图谱中的层次或深度,通常反映了实体在图谱中的“核心性”或“重要性”。这可以通过**图的中心性**算法来计算,或者通过**社区发现算法**来得出。在GraphRAG中,`level`可能是指社区发现后实体所属的社区层级或级别,反映了实体的“权重”或在特定网络中的“影响力”。

为了简化说明,我们假设“等级(Level)”是根据图中节点的度数和它们所属的社区来计算的。通过社区算法(例如Louvain算法、Girvan-Newman算法等),我们可以将节点划分到不同的社区,并为每个社区分配一个等级值。这里我们不涉及具体的图算法实现,但可以简化为以下推断:

  • 大数据时代:在这个简化的示例中,作为一个核心实体,它连接了所有其他实体,因此它的等级值(Level)会较高,可以认为它是核心社区的成员,等级为 1(核心层级)。
  • 维克托·迈尔-舍恩伯格肯尼斯·库克耶数据科学数据分析:这些实体与“《大数据时代》”相连接,因此它们在图中的位置相对较边缘,等级值较低,可以认为它们属于外部社区,等级为 2(外层级)。
  1. 总结

基于以上计算过程,我们可以得到以下结果:

实体 Degree Level
大数据时代 4 1
维克托·迈尔-舍恩伯格 1 2
肯尼斯·库克耶 1 2
数据科学 1 2
数据分析 1 2
  • 度数(Degree):表示一个实体的连接性。大数据时代作为核心实体,度数较高,而其他实体度数较低。

  • 等级(Level):表示实体在图中的重要性或中心性,大数据时代由于连接了所有其他实体,等级较高,而其他实体处于外围,等级较低。

  • 创建RELATIONSHIP_TABLE,现在我们已经从文本中识别出了以下关系:

    • 关系 1:维克托·迈尔-舍恩伯格《大数据时代》 之间的关系:“是作者”

    • 关系 2 肯尼斯·库克耶《大数据时代》 之间的关系:“是作者”

    • 关系 3 《大数据时代》数据科学 之间的关系:“探讨”

    • 关系 4 《大数据时代》数据分析 之间的关系:“阐述”

根据这些关系,我们来创建 RELATIONSHIP_TABLE表。

id human_readable_id source target description weight combined_degree text_unit_ids
1 relation_1 维克托·迈尔-舍恩伯格 《大数据时代》 作者 0.9 1 [0,1]
2 relation_2 肯尼斯·库克耶 《大数据时代》 作者 0.7 1 [1]
3 relation_3 《大数据时代》 数据科学 探讨 0.65 1 [2]
3 relation_4 《大数据时代》 数据分析 阐述 0.65 1 [2]
  • 更新ENTITY_TABLE

同时,我们将基于关系的统计结果填入实体表格中:

id human_readable_id title community level degree x y
1 "entity_1" "大数据时代" 1 1 4 0.1 0.5
2 "entity_2" "维克托·迈尔-舍恩伯格" 0 2 1 0.4 0.6
3 "entity_3" "肯尼斯·库克耶" 0 2 1 0.3 0.7
4 "entity_4" "数据科学" 0 2 1 0.6 0.4
5 "entity_5" "数据分析" 0 2 1 0.2 0.2
Step 4.创建社区报告

根据社区算法的结果,我们可以将实体划分到两个社区,并基于每个社区的特点生成社区报告。每个社区报告将描述该社区的核心内容、关联的实体、关系以及社区的重要性等信息。

社区报告的基本内容社区报告通常会包含以下几个方面的信息:

  1. 社区概述(Summary):总结社区的核心主题或共同特征。
  2. 核心实体(Entities):在该社区中,哪些实体是核心实体,即它们在该社区中的重要性较高。
  3. 重要关系(Relationships):该社区中的实体之间有哪些重要关系,关系的性质如何。
  4. 影响力与聚类分析(Influence and Clustering):社区内实体之间的相互影响和聚集情况。
  5. 社区排名与解释(Rank and Explanation):对社区中实体的排名,以及解释它们在社区中的位置或作用。

基于示例的社区报告,在我们的示例中,我们有两个社区:

  1. 社区 1(核心社区):包括 大数据时代
  2. 社区 2(外围社区):包括 维克托·迈尔-舍恩伯格肯尼斯·库克耶数据科学数据分析

创建社区报告

社区 1 - 核心社区(大数据时代):

  • 社区ID:community_1
  • level:1 (核心社区)
  • title:大数据时代的影响
  • summary:社区围绕《大数据时代》一书展开,书中探讨了数据科学、数据分析的应用,以及它们如何在各行各业产生深远影响。社区中的核心实体包括《大数据时代》,它在知识图谱中扮演着中心角色。
  • full_content:本书通过多个实际案例,分析了大数据的应用场景,重点讲解了如何通过数据预测未来趋势。书中的内容涉及各个领域的应用,尤其是数据科学和数据分析如何推动各行各业的变革。
  • rank:1 (该社区在整个知识图谱中的中心位置)
  • rank_explanation:该社区的核心实体是《大数据时代》,它与所有其他实体都有紧密关系,且覆盖了多个领域,重要性极高。
  • findings:该社区显示了大数据与数据科学、数据分析之间的深刻联系,尤其是在未来趋势预测方面的广泛应用。
  • full_content_json:以JSON格式存储书中的详细分析内容。
  • period:2024-11-27 (报告生成时间)
  • size:4 (涉及的实体数量)

社区 2 - 外围社区(其他实体):

  • 社区ID:community_2
  • level:2 (外围社区)
  • title:《大数据时代》背后的专家与理论
  • summary:本社区围绕《大数据时代》书籍的作者和相关学科展开,涉及人物维克托·迈尔-舍恩伯格、肯尼斯·库克耶,以及学科领域“数据科学”和“数据分析”。这些实体与核心社区《大数据时代》有着紧密的关系,但它们本身在知识图谱中的地位较为外围。
  • full_content:社区中包括了书籍的两位作者维克托·迈尔-舍恩伯格和肯尼斯·库克耶,他们在数据科学和数据分析领域有着深远影响。此外,数据科学和数据分析作为学科,也在本社区中占据重要位置。
  • rank:2 (该社区在整个知识图谱中的外围位置)
  • rank_explanation:该社区的实体相对来说是《大数据时代》的支持性内容,它们不直接构成图谱的核心,但在提供背景和理论支持方面仍具有重要价值。
  • findings:该社区揭示了《大数据时代》书籍的学术背景,讲解了作者和学科如何影响现代数据科学的发展。
  • full_content_json:以JSON格式存储该社区中的详细内容和分析。
  • period:2024-11-27 (报告生成时间)
  • size:4 (涉及的实体数量)

生成社区报告表格,以下是根据上述分析,创建了一份 COMMUNITY_REPORT_TABLE 表格用于进行结果记录:

id human_readable_id community level title summary full_content rank rank_explanation findings full_content_json period size
community_1 0 1 1 大数据时代的影响 社区围绕《大数据时代》一书展开,探讨了数据科学和数据分析的应用及其对各行各业的影响。核心实体是《大数据时代》。 本书通过多个实际案例分析了大数据的应用场景,重点讲解了数据如何预测未来趋势,涉及各行业的应用。 1 该社区的核心实体《大数据时代》具有极高的重要性,涉及领域广泛,中心地位明显。 社区展示了大数据与数据科学、数据分析之间的深刻联系,尤其是大数据如何改变未来趋势的预测。 2024-11-27 1
community_2 1 2 2 《大数据时代》背后的专家与理论 本社区围绕《大数据时代》的两位作者维克托·迈尔-舍恩伯格、肯尼斯·库克耶以及学科数据科学和数据分析展开。它们是本书的理论支持,位于外围位置。 社区包含了书籍的两位作者和学科领域数据科学、数据分析,分析了它们对《大数据时代》内容的支持和贡献。 2 该社区的实体位于外围,主要作为《大数据时代》的学术支持,贡献理论背景,重要性次于核心社区。 该社区揭示了数据科学和数据分析学科如何影响《大数据时代》一书的内容及其对现代数据科学发展的推动作用。 2024-11-27 4

4.查询阶段执行流程

在GraphRAG的查询阶段,核心任务是基于构建好的知识图谱来检索相关信息并生成回答。具体来说,查询阶段会利用之前在 索引阶段 构建的所有实体、关系和社区报告等信息,结合用户的查询请求,自动选择最相关的上下文,并通过大语言模型(如GPT等)生成智能化的回答。下面是GraphRAG查询阶段的执行流程详细描述:

4.1 查询阶段的执行流程
  1. 用户输入查询(User Query): 用户通过输入一个自然语言查询,表达他们需要的信息。例如:“告诉我大数据时代的背景是什么?”
  2. 创建查询上下文(Build Query Context): GraphRAG会根据查询的内容,从知识图谱中提取相关的信息并构建查询上下文。这个上下文包括了与查询相关的:
    1. 文本单元(Text Units):即与查询相关的文档片段或文本段。
    2. 实体(Entities):与查询相关的实体,如“维克托·迈尔-舍恩伯格”、“数据分析”等。
    3. 关系(Relationships):涉及到查询中的实体之间的关系,如“维克托·迈尔-舍恩伯格”与“《大数据时代》”之间的关系。
  3. 上下文构建的过程中,GraphRAG会根据预设的参数(如文本单元占比、实体数量等)来选择最相关的文本片段、实体、关系等,以便提供一个完整的上下文。
  4. 文本切分和嵌入(Text Splitting and Embedding)
    1. 对于文本,GraphRAG会按照预设的规则进行切分。例如,以每50个token为单位,将文本分割成多个文本单元。
    2. 接着,使用预训练的文本嵌入模型(如OpenAI的Embedding模型),将每个文本单元转化为一个向量表示,便于计算相似度。
    3. 对于实体和关系,也会计算其嵌入(Embedding),通常基于实体的描述、关系的文本等。
  5. 构建查询上下文(Local Context): 使用 LocalSearchMixedContext 类,GraphRAG将结合以下因素构建查询上下文:
    1. 查询相关的文本单元(即与查询最相关的文本片段);
    2. 查询相关的实体(从实体表中选取相关的实体);
    3. 查询相关的关系(从关系表中选取与查询相关的关系);
    4. 社区报告(有时也会包含相关的社区报告信息,帮助理解文本和实体的聚合关系)。
  6. 这些信息会被组合在一起,形成一个“上下文窗口”,为后续的查询提供支持。
  7. 检索并选择相关信息(Retrieve Relevant Information): 通过构建好的查询上下文,GraphRAG会检索并从中选择最相关的文本单元、实体和关系。这个过程的目的是通过“局部搜索”算法找到与用户查询最相关的信息,并确定哪些是能够提供解答的关键内容。
  8. 大语言模型生成答案(Answer Generation by LLM): 结合检索到的上下文信息,GraphRAG使用一个大型语言模型(如GPT)来生成最终的回答。模型会根据检索到的上下文生成自然语言的回应,并根据查询的需要决定回答的格式和内容,例如:
    1. 简单回答:如“维克托·迈尔-舍恩伯格是《大数据时代》的作者之一。”
    2. 详细报告:如“一、本书讨论了数据科学的应用,二、维克托·迈尔-舍恩伯格作为作者之一提出了……”
  9. 生成的答案可以根据查询的复杂度有所不同,通常会包含多段文字、按优先级排序的答案等。
  10. 返回查询结果(Return Results): 最终,GraphRAG将生成的答案返回给用户。如果设置了“返回候选上下文”(return_candidate_context=True),则还会返回所有相关候选的实体、关系和文本单元,供用户参考。
4.2查询阶段的关键技术点
  • 嵌入(Embeddings):对于文本单元、实体和关系,GraphRAG使用嵌入模型将它们转化为向量表示,从而计算相似度,选取最相关的内容。
  • 大语言模型(LLM):基于查询上下文,使用大语言模型生成自然语言回答。
  • 查询上下文构建的多样性:在不同的查询中,GraphRAG会根据具体的需求调整上下文的构建方式,例如调整文本单元和社区报告的比例,或者增加对历史对话的考虑。
4.3 查询流程实例

假设用户输入查询:“告诉我《大数据时代》的核心思想是什么?”

  1. 查询输入:用户输入自然语言查询:“告诉我《大数据时代》的核心思想是什么?”
  2. 构建查询上下文
    1. 文本单元:从《大数据时代》相关的文本单元中检索到相关内容,可能包含有关书籍背景、核心思想的描述。
    2. 实体:选择与查询相关的实体,如“维克托·迈尔-舍恩伯格”和“数据科学”。
    3. 关系:如果查询涉及的实体之间有关系,也会被提取出来,例如“维克托·迈尔-舍恩伯格”与“《大数据时代》”之间的关系。
  3. 嵌入和相似度计算:对选出的文本、实体和关系进行嵌入转换,计算与查询的相似度,找到最相关的信息。
  4. 生成答案:大语言模型会基于这些信息生成一个回答:“《大数据时代》的核心思想是数据的价值和它如何影响各个领域,特别是在未来趋势预测中的应用。”
  5. 返回结果:返回用户查询的回答。

GraphRAG的查询阶段依赖于索引阶段构建的知识图谱,利用大语言模型和嵌入技术,从大量的文本单元、实体和关系中构建出一个查询上下文,然后生成相关的答案。在查询过程中,GraphRAG不仅可以使用传统的信息检索方法(如相似度计算),还通过语言模型提供智能化的回答,增强了查询系统的智能化和灵活性。

相关文章:

day37大模型程序开发-GraphRAG理论

RAG基本回顾实现流程准备原始的知识库(一个一个的文件组成) 将知识库文件内容进行读取(完整的字符串) 分块处理(新知识库:一段一段的文本字符串组成) 向量转换:将每一段文本chunk转换成向量(向量模型) 将向量数据存储到向量数据库 接受用户的提问,将用户提问转换成向…...

G

int a[1000001]; int top=-1;//栈为空 void push(int num) { a[++top]=num; } void pop() { printf("%d ", a[top--]); }//减1出栈 int main() { int n, i; int b[1000001]={0}; int c[1000001]={0}; scanf("%d", &n); for(i=0;i<n;i++)scanf("…...

AI Compass前沿速览:Nano Bananary、MCP Registry、通义DeepResearch 、VoxCPM、InternVLAM1具身机器人

AI Compass前沿速览:Nano Bananary、MCP Registry、通义DeepResearch 、VoxCPM、InternVLAM1具身机器人AI Compass前沿速览: AI-Compass 致力于构建最全面、最实用、最前沿的AI技术学习和实践生态,通过六大核心模块的系统化组织,为不同层次的学习者和开发者提供从完整学习路…...

day3536大模型应用开发-模型微调框架

为什么需要微调? 在开始学习微调之前,大家首先还是要搞清楚为什么要微调?在什么情况下需要微调?让模型更懂“专业话”:通用模型就像一个“万事通”,它学过很多东西,但对一些特别专业的领域(比如医学、法律、金融)可能不会特别精通。通过微调,我们可以给模型“补课”,…...

使用NVM管理Node.js版本

🍁简介 在当前日常前端开发中,不同项目可能依赖于不同版本的Node.js。 一个项目可能需要Node.js 14,而另一个项目可能需要Node.js 18甚至更高版本。 直接安装和卸载不同版本的Node.js不仅繁琐,而且容易导致环境混乱。 Node Version Manager NVM 是一个命令行工具,允许在同…...

day12-Trae之一键换脸APP开发02

今日内容 1 Trae配置 # 1 之前就装过python解释器和JDK了 # 2 如果你电脑上没有任何编辑器,使用txt写代码,都可以可以运行pyton或java的项目# 3 IDE只是个快速写代码的软件,如果没装python解释器和JDK---》代码运行不了Trae Pycharm Androidstudio VScode 都叫编辑器 简称ID…...

day35大模型应用开发-模型微调

为什么需要微调? 在开始学习微调之前,大家首先还是要搞清楚为什么要微调?在什么情况下需要微调?让模型更懂“专业话”:通用模型就像一个“万事通”,它学过很多东西,但对一些特别专业的领域(比如医学、法律、金融)可能不会特别精通。通过微调,我们可以给模型“补课”,…...

P6631 [ZJOI2020] 序列 题解

很好的贪心题。 考虑从左到右枚举每个位置,每次在右边添加一个数时更行答案。 容易想到记录当前前缀可以继续向右延伸的 \(1,2,3\) 操作的个数。记当前需要添加的数为 \(i\),用 \(c,x,y\) 分别表示可以继续向右延伸(从 \(\le i-1\) 的位置)的三种操作的个数:连续区间、奇偶…...

初始化一个rust环境

初始化一个rust环境初始化一个rust环境 rust 安装工具依赖入门 - Rust 程序设计语言一门帮助每个人构建可靠且高效软件的语言。 https://www.rust-lang.org/zh-CN/learn/get-startedrustup 环境变量 RUSTUP_DIST_SERVER : https://mirrors.ustc.edu.cn/rust-static RUSTUP_UPDA…...

编程里边有好多不容易触及的知识点

可能是因为不是原生土长的内容,编程里边有很多没有办法合情理解的领域。框架是其中一个,类似的还有 窗口库,还有好多其它东西。以前刚开始学窗口的时候,总是觉得没办法进行。周围的同学大概都是 拿过来用就可以,创建一个frame增加些lable 写一些事件。这些内容,相当于引用…...

25.9.18随笔联考总结

考试 通读题面,发现前两道是签。然后开做,饭堂,最后花费大部分时间过掉。后面两道题都不会。寄寄。 估计:100+100+0+0。实际:100+100+0+0。 有人藏分,素质有待提高! 改题+总结 T3 需要看出无限制的方案数对应卡特兰数,然后我没有推出来,并且也没有去打表找规律。感觉自…...

漏洞详解--文件上传 如何花样绕过?!

一、漏洞原理 1.1 核心 文件上传漏洞,顾名思义,将攻击者将恶意文件上传到服务器,服务器将恶意文件解析,攻击就达成了。 1.2 漏洞详解 文件上传漏洞非常好理解,有三个关键点,一是上传文件,二是找到文件上传的路径,三是使恶意文件得到解析。 假设一个系统没有防御(后面会…...

使用Windows客户端访问EDA环境的NFS共享

在IC设计环境中, 也总是会有Windows操作系统的开发服务器或者客户端需要使用IC设计平台中Linux主机使用的NFS服务器。 使用者也是IC设计团队中的一员,可能出于设计工具的原因, 他/她的部分工作必须在Windows中完成, 同时也需要保持NFS目录的权限体系,不能为了这少量的Wind…...

Day03-1

public class HelloWorld { public static void main(String[] args) { String teacher = "David"; System.out.println("Hello World"); } //有趣的代码注释 //单行注释 //输出一个Hello,World! //多行注释 :可以注释一段文字 /注释/ /* 我是多行注释 我…...

使用php -S 127.0.0.1:8000 新建php服务

php -S 127.0.0.1:8000 启动服务后 当前坐在目录下的所有文件都可以在浏览器上以 http://127.0.0.1/目录/文件名称 的形式访问 比如: 浏览器访问 http://127.0.0.1/upload_files.php 就会直接调用当前目录 upload_files.php 浏览器访问 http://127.0.0.1/ims/abc.png 就会打开…...

Day03

强类型语言 所有变量都需要定义后才能使用,Java,C++ 弱类型语言 Javascript 数据类型(JAVA) 基本类型 数值类型字符类型 char 占两个字节 浮点类型(小数)float 占四个字节 double 占八个整数类型byte 占一字节 short 占两字节 int 占四字节 long 占八字节boolean类型 占一…...

完整教程:从“我店”模式看绿色积分电商平台的困境与破局

完整教程:从“我店”模式看绿色积分电商平台的困境与破局pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", m…...

Java第三周课前思考

什么样的方法应该用static修饰?不用static修饰的方法往往具有什么特性?Student的getName应该用static修饰吗?完成独立功能或创建类的实例或对类级别的属性进行操作的方法应该用static修饰。 不用static修饰的方法往往具有依赖实例状态、通过实例调用、可访问静态变量和方法、…...

Java的安装及卸载

卸载JDK删除java的安装目录 删除JAVA_HOME(环境配置中) 删除path下关于java的目录(环境配置中) cmd中查找java -version是否仍存在安装JDK百度搜索JDK8,找到下载地址 同意协议 下载电脑对应的版本 双击安装JDK 记住安装的路径 配置环境变量我的电脑-->右键-->属性 环…...

题解:P13882 [蓝桥杯 2023 省 Java A] 小蓝的旅行计划

挺可爱的反悔贪心,乍一看没看出和旅行家的预算的区别,甚至做完才发现不一样的说。 正文 首先我们可以将操作分为两个部分。分别是用油操作和加油操作。 用油 有一个简单的贪心策略,用油的时候首先使用最便宜的油,这点显然。 此外,如果当前油箱里所有油都不能到达下一站,自…...

实用指南:订阅式红队专家服务:下一代网络安全评估新模式

实用指南:订阅式红队专家服务:下一代网络安全评估新模式pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", m…...

更快的布尔矩阵乘法

这是小蝴蝶研读的第二篇论文,时间复杂度的话,原论文写的是 \(\frac{n^3}{2^{\Omega(\sqrt[7]{\log n})}}\),我感觉这个界可以精确分析出来,不过我还没看懂论文,先占个坑。...

数据结构初阶——红黑树的实现(C++) - 教程

数据结构初阶——红黑树的实现(C++) - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !im…...

CMC蒲和平3.1

例3(凑)求 \(\int\frac{dx}{\sqrt[3]{(x + 1) ^ 2(x - 1) ^ 4}}\).solution 注意到 \(d(\frac{x + 1}{x - 1}) = \frac{-2}{(x - 1) ^ 2} dx\),考虑凑微分。 \[I = \int \frac{dx}{\sqrt[3]{(\frac{x + 1}{x - 1}) ^ 2} (x - 1) ^ 2} = -\frac{1}{2}\int \frac{d(\frac{x + …...

解码C语言数组

一维数组 数组是相同类型数据元素的有序集合,通过下标(索引)访问元素,内存中连续存储。 数组名表示首元素地址,sizeof(arr) 返回整个数组的字节大小 核心特点元素类型一致:所有元素必须为同一数据类型(如 int, float)。 固定大小:数组长度在声明时确定,静态数组无法动…...

github启用Disscussions讨论功能

配置步骤 1. 设置GitHub仓库并启用Discussions功能 首先需要为你的GitHub仓库启用Discussions功能:访问你的GitHub仓库: https://github.com/KkaiFang/my_notes点击 Settings 标签页向下滚动找到 Features 部分勾选 Discussions 复选框来启用讨论功能2. 配置Giscus评论系统 访…...

RWA技术规范解读:如何实现现实世界资产的合规代币化

RWA技术规范解读:如何实现现实世界资产的合规代币化 近日,深圳市信息服务业区块链协会发布了《RWA技术规范》(T/SZBA-2025),这是国内首个针对现实世界资产代币化的团体标准。本文将深入解读该规范的核心内容,帮助读者全面了解RWA代币化的技术框架和实施要点。 1. 什么是RWA…...

干货预警!Apache SeaTunnel 助力多点 DMALL 构建数据集成平台,探索AI新零售行业应用!

🎉亲爱的社区朋友们,数据集成领域的一场知识盛宴即将来袭!9 月 30 日下午 2 点,Apache SeaTunnel 社区精心策划的又一场线上 Meetup 将准时与大家云端相见!🎉亲爱的社区朋友们,数据集成领域的一场知识盛宴即将来袭!9 月 30 日下午 2 点,Apache SeaTunnel 社区精心策…...

Apache SeaTunnel 2.3.12 发布!核心引擎升级、连接器生态再扩张

近期,Apache SeaTunnel 2.3.12 正式发版。这是继 2.3.11 之后的又一次迭代,本周期合并 82 个 PR,提供 9 项新特性、30+ 项功能增强、20+ 处文档修正,并修复 43 个 Bug。核心改进集中在 SensorsData 与 Databend 生态接入,Paimon、ClickHouse、MaxCompute 等连接器读写能力…...

详细介绍:对于牛客网—语言学习篇—C语言入门—链表的题目解析

详细介绍:对于牛客网—语言学习篇—C语言入门—链表的题目解析pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New&quo…...

Day17Arrays类的初步认识

package com.cc.array;import java.util.Arrays;public class ArrayDem6 {public static void main(String[] args) {int[] a = {12, 3, 43, 4, 235, 5, 6, 45, 7, 7};System.out.println(a);//[I@f6f4d33//打印数组元素System.out.println(Arrays.toString(a));//toString:以字…...

小学生模拟赛题解

A 正常做这题显然 \(10^{18}\) 是不可做的,所以问题一定出现在 gen 上。 注意到 \(7\mid2009\),换句话说,若 \(t_1=3k(k\in\mathbb N_+)\),那么 \(t_2=t_1+9\),这就导致 \(3\mid t_2\)。以此类推,会发现对于 \(\forall i\in[2,n]\),满足 \(t_i-t_{i-1}=9\),答案就是 \(…...

服务器安装docker、mysql、redis、nginx、nacos、jdk等

一、安装docker 1.1、安装必要工具 sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm21.2、进行仓库源设置 sudo yum-config-manager \ --add-repo \ https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo1.3、docker安装安装最新…...

StringComparer.OrdinalIgnoreCase

StringComparer.OrdinalIgnoreCase 是 .NET 提供的不区分大小写、且按 Unicode 码位排序的字符串比较器,适用于哈希表、字典、集合、排序等需要显式指定比较规则的地方。1. 核心特点特性说明比较规则 不区分大小写(A == a)排序规则 纯 Unicode 码位顺序(文化无关)性能 比文…...

LLM大模型:Qwen3-Next-80B中的next究竟是个啥?

1、近期,国内LLM头号玩家阿里发布了Qwen3-Next-80B模型,但从名字上看就和其之前发布的模型不同:多了next!这就奇怪了:为啥会多出一个next?这个next究竟是啥意思了?2、自从3年前 chatGPT 3.5发布后,AI又开始大火,就是因为效果比传统的机器学习好10倍!效果为啥好了,核…...

中了勒索病毒 peng

中了勒索病毒 peng一,中招 早上一上班,看到电脑屏幕显示这样的壁纸。 居然中招了?不敢相信。 我发现自己的网盘里的所有文件,都被加密并改名,形如 aaaa.jpg.[[VlDy9dk2RaQ1F]].[[Ruiz@firemail.cc]].peng 而且这些文件,都已同步到了网盘,通过手机app访问,也只能看到这些…...

在 WSL 中通过 Bash 函数快速转换 Windows 路径为 Ansible/WSL 路径 - 教程

在 WSL 中通过 Bash 函数快速转换 Windows 路径为 Ansible/WSL 路径 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Cour…...

金融租赁公司厂商租赁业务调研报告

厂商租赁金融租赁公司厂商租赁业务调研报告 报告摘要 本报告旨在全面、深入地分析中国金融租赁公司(下称“金租公司”)厂商租赁业务的现状、模式、市场环境、监管动态、数字化转型路径及绩效评估体系。截至2025年,厂商租赁作为一种深度绑定产业的业务模式,正日益成为金租公…...

普科科技PKC7030H交直流电流探头应用指南​​

普科PKC7030H探头支持DC-120MHz带宽、1%精度,30A连续电流测量,适用于高频大电流交直流混合信号测试。在现代电力电子、新能源及高速数字系统的设计与调试中,对复杂电流波形的精准测量是分析效率、优化性能与保障可靠性的基石。​​普科科技(PRBTEK)PKC7030H高频交直流电流…...

从“分散”到“统一”,中控技术利用SeaTunnel构建高效数据采集框架,核心数据同步任务0故障运行!

本文将深入探讨中控技术基于 Apache SeaTunnel 构建企业级数据采集框架的实践,重点分享集群高可用配置、性能调优、容错机制及数据质量监控等方面的具体思考与方案。作者 | 崔俊乐引言:对企业而言,数据采集的核心挑战从来不仅仅是“同步”,而是如何在大规模、多元异构的复杂…...

再见 Cursor,Qoder 真香!这波要改写 AI 编程格局

如果把未来 AI 编程工具的核心竞争力用一句话总结,那就是:能不能让开发者在透明化的协作中,信任它、依赖它,并且和它一起把项目养大。作者:loonggg 真心建议大家去使用一下这段时间最新推出的一款 AI 编程工具:Qoder 。 真的是太好用了,一点也不比 Cursor 差。 为什么这…...

T/B cell subtype marker - un

B cell ref: https://www.abcam.cn/primary-antibodies/b-cells-basic-immunophenotypingT cell ref: https://www.abcam.cn/primary-antibodies/t-cells-basic-immunophenotyping作者:un-define出处:https://www.cnblogs.com/mmtinfo/p/19099331本文版权归作者和博客园共有,…...

SAP FICO 完全凭证替代

GGB1 这个参数是获取所有行项目的关键USING bool_data TYPE gb002_015*&---------------------------------------------------------------------* *& Form u902 *&---------------------------------------------------------------------* * text *…...

K8s Application模式下的flink任务执行精要

本文分享自天翼云开发者社区《K8s Application模式下的flink任务执行精要》,作者:l****n 构键k8s集群在这里,我们需要搭建一个K8S环境用于提供flink任务的运行时环境。在这里推荐使用kubeadm或者一些脚本工具搭建,可参考本自动k8s脚本工具。具体过程在这里省略,可以参考上…...

从0打造一个TTS语音合成引擎:原理与实现

语音合成技术(Text-to-Speech, TTS)近年来发展迅猛,从早期机械感十足的合成音到如今几乎可以以假乱真的人声,背后是深度学习技术的巨大进步。本文将带你了解现代语音合成的基本原理,并尝试用Python实现一个简易版的TTS系统。 语音合成技术演进图1:语音合成技术发展历程,…...

莫队

Argvchs 说我不会根号算法,把之前的博客搬过来,然后再补点东西。 一种离线算法,可以用 \(O(n\sqrt n)\) 的复杂度处理区间查询问题,当然,也可以带修,下文也会提到。 关于复杂度 莫队优化的关键是排序 + 分块,将每个询问离线下来,按照左端点所在块从小到大排序,假如左端…...

0voice-2.1.1-网络io与io多路复用select/poll/epoll

测试...

Java基本语句-分支语句

Java基本语句-分支语句Day05 如何在API字典中寻找自己想要的Scanner类型 1.点击搜索 输入Scanner 2.字典中回显示各种类型的获取方式: nextByte()、nextShort()、nextInt()、nextLong()、nextdouble()、nextFloat()、next()多种引用使用。 3.调用Scanner类的相关方法,来获取指定…...

丘成桐谈AI

很多重要的科学发现,是在平凡的事情里面突然有个突破。 观念上的突破,在我看人工智能有困难做不到,现在全民学人工智能, 听起来很好听,但是师资不够, 跟数学的整个合作是刚开始, AI看见万千数据 记者:您第一次感觉到AI的冲击时什么时候 Yau:哈哈我坦白跟你讲,我从来没…...

异常检测在网络安全中的应用 - 实践

异常检测在网络安全中的应用 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; …...