知识图谱与 LLM 的实战应用——基于大型语言模型构建知识图谱

14 阅读17分钟

本章涵盖

  • 将档案转化为知识图谱
  • 图建模
  • 数据归一化与清洗
  • 实体解析
  • 分析智识网络

在上一章中,我们讨论了如何利用最先进的机器学习(ML)技术——包括大型语言模型(LLM)——从非结构化数据中抽取复杂的关系型知识。更具体地说,我们考察了如何从洛克菲勒档案中心(Rockefeller Archive Center,RAC)的历史打字文档中抽取知识。简要回顾一下,这些文档详细记录了洛克菲勒基金会(Rockefeller Foundation,RF)项目官员与来自众多大学及其他机构的研究人员之间的谈话内容。RF 利用这些会谈中收集到的信息,来决定是否资助某项研究项目。关于 RAC 这一用例以及该项目目标的详细说明,请回看第 5 章。

正如图 6.1 中的心理模型所强调的那样,我们将从上章结束的地方继续:我们已经从文本文件中抽取出了知识,现在将进一步探索如何把这些知识转化为知识图谱(KG),以及如何让组织从该 KG 中受益。

image.png

图 6.1 从领域特定的非结构化文本数据走向 KG 洞察的路径。
这些步骤依赖于最先进的 ML 模型,例如用于文档数字化的光学字符识别、命名实体识别与关系抽取系统、实体解析,以及 GraphML。

6.1 将档案转化为 KG

下面列出了在这个项目中我们仍需处理的一些挑战:

模拟打字文档——这些模拟文档需要先进行扫描,并通过光学字符识别(OCR)系统处理,才能生成数字化文本语料。可用的 OCR 技术有很多,包括来自 Amazon、Microsoft 等云服务提供商的方案,以及开源的 Tesseract OCR 库。

历史文档——文档中讨论的许多研究学科如今已不再继续开展。因此,我们几乎不可能编制出一个足够全面的命名实体识别(NER)词典或知识库,用来作为消歧与实体解析的参考。

不常见的语言约定——这些项目官员有自己特定的书写风格。例如,他们有时会用缩写来指代人物和组织,比如用 “S.” 代替 “J. R. Smith”,或者用 “U.Cal.” 代替 “University of California”。我们测试过的现成共指消解模型都无法把这些简写名称解析为规范形式。然而,GPT 却能够在响应我们的 prompt 时,成功地隐式完成 NER、实体解析和关系抽取(RE)任务。

领域特定命名实体——我们处理的是自然科学领域研究项目的描述。最主要的自定义命名实体是 Occupations,它包括研究学科、技术、治疗方法和疾病,而且粒度并不统一。针对这些实体(疾病除外),并没有现成的传统 NER 模型可用。不过,我们可以实现一个基于 ML 的定制 NER,然后进一步设计例如无监督实体解析系统,把语义相近的 occupation 聚类起来,以支持后续更深入的分析。

高关系复杂度——这些文档中的关系型知识既密集又复杂。单页内容中就可能包含几十条相关关系。正确定义 RE schema 至关重要,否则我们既可能提取到无用知识,也可能错失进一步提升准确率的机会。这一点在人工标注大规模数据集来训练 RE 模型时尤其重要;而在利用 RE schema 来引导 LLM 执行该任务时,同样如此。

KG 归一化、清洗、实体解析与消歧——这些工作都需要投入大量精力。例如,同一个名字在不同文档中可能会使用不同变体;有些谈话会有多个参与者,他们用语义相近却又不完全相同的措辞来讨论各自研究;而且这些谈话往往还是延续数月甚至数年的长链的一部分。很遗憾,这类分析超出了本书的范围;在这里,我们将聚焦于交互网络的构建与分析。

匹配/链接多个非结构化数据源——理想情况下,我们希望能够把从项目官员日记中抽取出的知识,与另一类数据源——董事会会议纪要——统一对齐到一个 KG 中。这样一来,我们就能识别出哪些谈话最终对应了哪些资助,并回答诸如“某个想法在获得资助之前,通常是否会出现某些模式?”之类的问题。这个话题同样超出了本书范围,但它足以说明:一旦我们利用起非结构化数据源,前方还存在怎样的可能性。

尽管这些挑战看起来令人望而生畏,但我们可以说自己很幸运,活在了 LLM 时代。在不算久远的过去,我们本来需要耗费大量资源,去构建传统 ML 模型和配套策略,才能克服这些障碍。而今天,正如本章余下部分将要展示的,其中许多问题都可以通过正确选择知识表示系统、LLM 模型,以及做好提示工程来解决。

6.1.1 图建模

RAC 项目的 KG schema 如图 6.2 所示(为适应本书做了简化)。我们将重点关注 KG 的一个方面:影响力网络。也就是 RF 代表采访过的人之间的关系,例如谁和谁谈过,以及他们谈到了谁。

image.png

图 6.2 洛克菲勒档案中心项目的简化 KG schema

我们决定把这个图设计为三层结构:

文档层(Document-level layer) ——初始数据摄取的结果。每个日记文件都表示为一个 File 节点,具有文件名、位置、作者等属性;而每个 Page 节点则表示 OCR 模型从文件中抽取出来的页面结果,带有该页最终清洗后的文本等属性。

元图层(Metagraph layer) ——未合并的 GPT 实体(Entity 节点)及其相互关系,以及它们与原始抽取页面之间的连接关系。

KG 层(KG layer) ——最终经过归一化、清洗和解析后的实体(Person、Title、Organization、Occupation)以及它们之间的关系(WORKS_ON、WORKS_FOR 等)。

正如我们已经讨论过的,LLM 会尽力生成我们想要的输出,但它不能被直接用来生成 KG。首先,我们必须完成归一化和实体解析步骤,而这个 schema 正是为这些步骤提供支持的。

6.1.2 创建元图

下面我们简要讨论如何创建元图。在处理长度超过几页的文本时,第一步是定义一个切分(chunking)策略,以避免触发最大 token 限制,或者因为文本过长而导致处理质量下降。这里我们展示最简单的一种方法:按页切分。

注意
在这个项目中,我们总共处理了 10,000 多页文档,但在本例中,我们选取了 Warren Weaver 日记中的一个 150 页子集。你可以在本书代码仓库中找到经过 OCR 处理的数据集以及完整的数据摄取代码。这些文档是打字稿,时间可追溯到 1939 年,因此数字化过程中可能会把某些实体名称拼错。

每处理完一页,我们就会创建该页中识别出的所有实体提及(注意是 create,而不是 merge!),这些节点在 schema 中都叫作 Entity,并具有 name 属性;随后将它们与所属页面相连接,并创建从该页抽取出的关系(在 schema 中称为 RELATED_TO_ENTITY,其中 type 属性表示关系类别)。这样一来,我们就可以基于关于每个实体提及的知识,继续做归一化与实体解析。

之后,在创建最终 KG 时,我们就能够很方便地聚合所有页面中关于所有已解析实体提及的知识,同时仍然保留这些实体与关系的来源信息。这样做还有一个重要好处:它使我们能够以高度可解释的方式来设计图可视化平台,因为当用户选中某个实体或关系时,我们可以按需展示识别出它们的原始文本片段。对于维护 KG 系统的数据科学家来说,这种设计同样很有用:他们可以轻松追踪图中节点与关系的来源,并在需要时继续微调实体解析策略,因为最终 KG 可以随时根据元图重新生成。

6.1.3 归一化与清洗

一旦元图创建完成,我们就可以检查一些统计信息,比如每个类别中最常见的实体、最常见的关系类别等等。这能帮助我们快速了解知识结构。除此之外,如果我们发现有机会增强未来图的连通性,也会将其实现出来:例如,如果大小写对含义没有影响(比如 Occupations),就可以统一把实体名称转成小写。这类归一化对于确保数据(KG)的一致性,以及跨文档的高效整合非常重要。

类似地,GPT 有时会把一个人的头衔也包含进其姓名中,尽管我们已经指示它应将二者分开处理。因此,我们实现了一种清洗策略:从人名中剥离无关 token,以避免同一个人在 KG 中被多个节点表示(一次带头衔,一次不带头衔)。用于修正这些情况的 Cypher 查询如下所示。

代码清单 6.1 人名与 occupation 的归一化

from neo4j import GraphDatabase

URI = "bolt://localhost:7687"
AUTH = ("neo4j", "password")
NEO4J_DB = "neo4j"

REMOVE_TITLES = ["dr.", "prof.", "dean", "president", "pres.", "sir", 
↪"mr.", "mrs."] 
QUERY_NORM_PERSONS = """  #1
↪ MATCH (e:Entity {label: "Person"})
↪ WITH e, CASE WHEN ANY(title IN $remove_titles WHERE toLower(e.name)
↪ STARTS WITH title) THEN apoc.text.join(split(e.name, " ")[1..], " ")
↪ ELSE e.name END AS name
↪ SET e.name_normalized = name
↪"""

QUERY_NORM_OCCUPATIONS = """   #2
↪MATCH (e:Entity {label: "Occupation"})
↪ET e.name_normalized = toLower(e.name)
↪"""

if __name__ == "__main__":
  with GraphDatabase.driver(URI, auth=AUTH) as driver:
    with driver.session(database=NEO4J_DB) as session:   #3
      print("Normalizing Person names")
      session.run(QUERY_NORM_PERSONS, remove_titles=REMOVE_TITLES)
      print("Normalizing Occupations")
      session.run(QUERY_NORM_OCCUPATIONS)
#1 Cleans Person names: removes titles/degrees
#2 Lowercases Occupation entity names
#3 Executes the queries

#1 清洗人名:移除头衔/学位信息
#2 将 Occupation 实体名称转为小写
#3 执行查询

我们会创建新的节点属性 name_normalized,之后在与 KG 层中的最终节点建立连接时,将使用它来代替未经归一化的 name 属性。

6.1.4 基于图的实体解析

LLM 的生成式特性有助于生成更干净、更准确的 KG。其中一个原因在于,与传统 NER 和 RE 模型不同,只要通过 prompt 或微调给予恰当引导,它们就会直接返回完整、干净的实体名称。你可以把这理解为:共指消解——这一传统 NLP 流水线中的关键任务——被隐式完成了,因此减少了对实体解析的需求。

是减少,而不是彻底消除。我们仍然需要能够跨文档做实体解析:例如,一份文档里的 “Eleanor Smith”,和另一份文档里的 “E. Smith”,是否是同一个人?因此,任何 KG 构建流程中的关键一环,依然是实体解析,甚至是实体消歧:把每个主体链接到知识库中的某个具体概念。

在这里,我们将利用图结构,设计一个基于图的实体解析系统。完整讨论超出了本章范围,但我们会概述其总体思路和一个初始 baseline。元图层中的大多数实体提及,都与其他提及存在一条或多条关系,而这些关系中的绝大多数都可用于实体解析。以 WORKS_FOR 关系为例:如果两个名字在字符串上有很高相似度(比如 “Eleanor Smith” 和 “E. Smith”),并且二者都在同一所大学工作,那么这就是一个强信号。同理,名字完全相同或高度相似的人,不太可能恰巧在做同一个研究主题。如果我们能够积累多种这样的信号,那么我们对“它们是同一个实体”的判断就会更有把握。

这种方法首先依赖于基于字符串相似性,在元图层中初步建立节点连接。我们会在两个字符串表示相同或非常相近的节点之间创建 META_SIMILAR 关系。定义相似度阈值时,我们还会利用领域知识。例如,我们知道一个人的姓名通常由名、中间名(可能有多个)和姓构成。中间名往往会被缩写或直接省略;名也是如此。但如果只依赖姓氏,又会带来大量误报。把姓氏和至少名字(或其缩写)结合起来,才能更有把握地认为两个名字可能指向同一人。基于这些考虑,我们可以定义一组规则,用于在表示人物姓名提及的节点之间创建 META_SIMILAR 边。类似的思路也可以应用于其他实体,比如 Organization。

提示
有时名称里会包含一些通用词。例如,许多基金会的组织名称中都带有 Foundation 这个关键词,如果仅凭这个词来建立相似关系,反而适得其反。因此,在创建 SIMILAR 关系之前,务必先分析实际情况,并定义停用词列表。不同数据集和领域都需要采用相应调整过的方法。

说了这么多假设,下面来看图 6.3 展示的具体案例。我们可以看到核物理学家 Ernest Lawrence(因发明回旋加速器而获得诺贝尔奖)在第 26、99 和 126 页上有三个不同提及形式:Ernest Orlando Lawrence、Ernest O. Lawrence 和 Lawrence。

image.png

图 6.3 基于图的实体解析示例

我们怎么知道这三个名字指的是同一个人?首先,基于前面提到的规则和模式,它们在字符串上就具有较强相似性。其次,我们还能看到 Ernest Orlando Lawrence 和 Ernest O. Lawrence 在图上只相隔三跳,因为在这两种情况下,他们都被识别为 University of California 的员工。类似地,我们也可以通过 WORKS_ON 关系,以及 occupation “cyclotron” 与 “100,000,000 to 200,000,000 volt cyclotron” 之间的相似性,把最后那个提及 Lawrence 也连接起来。不过需要注意的是,Ernest Orlando Lawrence 和 Lawrence 在图上相隔六跳:这种遍历,在关系数据库里会困难得多。

还想来点更“图味儿”的方法吗?比如利用智识网络关系——TALKED_ABOUT 和 TALKED_WITH——再运行图社区发现算法,例如 Louvain,来识别那些彼此互动、或者更广义上彼此相连的人群簇。这里的 reasoning 是:从事南极海事研究的 John Doe,极有可能属于一个不同于专攻宇宙学的 John Doe 的互动网络。一个实体所在社区的信息,又为我们判断“他们是不是同一个人”提供了一个新的信号。

那如果再加上 ML 呢?一个很直接的选择,是设计一种语义相似度方法,用于识别相似的 Occupations。即便字符串层面完全没有相似性,我们也可以在语义高度相关的主题之间创建 META_SIMILAR 关系,比如 fertility 和 human ovulation。常见做法是使用 GPT 提供的 embeddings,并基于相似度对其进行聚类(我们通过凝聚层次聚类取得了很好的结果)。

基于图的实体解析有很多种方案;我们这里只是揭开了表面。为了完成这个针对人物解析的 baseline,我们还需要最后几个要素:

  • 在满足我们定义标准的人物提及之间创建 META_PERSONS_SIMILAR 关系(标准包括字符串相似性,以及通过 RE 输出体现出的相关性)。
  • META_PERSONS_SIMILAR 元图上运行 weakly connected components(WCC)算法,以识别那些应被解析为同一个 KG 实体(最终图层)的提及组。
  • 对于每个 WCC 分组,选出一个统一名称作为表示形式:我们选择最长的那个(在前述例子中,就是 Ernest Orlando Lawrence)。
  • 构建包含完整解析实体的最终 KG 层。

这些任务都很直接;完整流程请参阅我们的代码仓库。

6.2 智识网络分析:图的价值

我们终于到达目标了:一个 KG。接下来呢?我们如何利用它?到这个阶段,KG 的总体价值应该已经很清楚了,因此我们将进一步探索其分析层面的价值:图数据科学

KG 的某些部分特别适合图分析,尤其是由 TALKED_ABOUT、TALKED_WITH、WORKS_WITH 和 STUDENT_OF 关系构成的人物(科学家)智识网络。我们使用 Neo4j 的 Graph Data Science 库,借助 PageRank、Eigenvector centrality、节点度数、betweenness centrality 等图算法,对该网络进行了分析,以识别以下角色:

  • Influencers——那些在推荐他人研究工作方面表现突出的人
  • Influencees——他人推荐(或职业八卦)中的热门对象
  • Bridges——在不同人物社区之间起连接作用的人

我们还可以设计不同的可视化风格,以引导探索与分析。

图 6.4 展示了抽取出的智识网络中最大的连通分量,并采用了基于 betweenness centrality 的样式:如果某个节点出现在任意节点对之间的更多最短路径上,它就会被显示得更大。这种样式能突出那些在不同子图之间充当桥梁的人——这些子图代表研究人员群体,如果没有这些桥梁,它们之间原本联系极弱,甚至彼此断开。毫不意外,Niels Bohr(原子物理学之父)和 Ernest Lawrence(发明了一种名为 cyclotron 的粒子加速器)这样的著名科学家位列其中;但也有一些不那么知名的人同样被高亮了出来,而这又引出了其他值得进一步调查、甚至可能出人意料的洞见。

image.png

图 6.4 智识影响力网络由 TALKED_ABOUT、TALKED_WITH、WORKS_WITH 和 STUDENT_OF 关系构成。节点样式基于其 betweenness centrality 分数。

我们还可以利用智识网络回答更具体的问题,例如:“在与 cyclotron 研究及其资助相关的过程中,谁扮演了重要角色?”这个问题可以通过一个简单的少跳查询来回答(见清单 6.2)。

代码清单 6.2 展示与 cyclotron 研究相关的影响力网络

MATCH path = ()<-[:WORKS_ON|WORKS_FOR]-(p2:Person)
↪-[:TALKED_ABOUT|TALKED_WITH|WORKS_WITH|STUDENT_OF*1..2]->
(p:Person)-[:WORKS_ON]->()-[:SIMILAR_OCCUPATION*0..1]-(o:Occupation)
WHERE o.name = toLower($occupation) ANDNOT ANY(x IN nodes(path1) WHERE x.name = "WW")
RETURN path

在匹配到的路径中,我们允许“从事 cyclotron 研究的人”与“其他人物”之间的距离最多为两跳。这样我们就能探索更复杂的推荐模式。图 6.5 展示了这一与 cyclotron 研究相关的影响力网络图,同时还加入了职业主题和大学隶属信息。节点大小则采用在完整影响力网络图上计算出的 PageRank centrality 进行缩放。我们可以看到,除了 Ernest Lawrence 和 Niels Bohr 之外,附近还出现了其他重要人物,包括天文学家、哈佛大学天文台负责人 Harlow Shapley,以及有机化学家、哈佛大学第 23 任校长 James B. Conant(哈佛曾建造过一台 cyclotron,而在与 Leslie Groves 将军秘密协商后,Conant 校长后来以 1 美元的价格将其卖给美国政府,以协助第一颗原子弹的研制)。

image.png

图 6.5 在 cyclotron 研究两跳邻域内的影响力网络。Person 节点大小基于全局 PageRank centrality,以突出图中的高人气节点。

这里面还有一点出人意料的地方。请注意 Laurence Irving 的出现(GPT 把他的名字误写成了 Lawrence——显然是因为同一页中同时出现了 Ernest Lawrence 而导致混淆),他是比较生理学的先驱。难道他真的在 cyclotron 发明的影响力网络中扮演了某种角色?这听起来很反常。进一步查看后可以发现,这其实是 RE 任务中的一个失败示例:他本不应该出现在这个子图中。这再次提醒我们,LLM 并不是什么魔法工具;它们确实会犯错,有时甚至会犯很蠢的错误。因此,在你的 KG 应用中,设计一个反馈闭环非常重要,让分析人员能够验证或否定图中的内容。

最后再看一个例子。假设一位在特定领域具有经验的人——在我们的案例中是项目官员 Warren Weaver——离开了岗位,新人接替了他。这个新人被要求处理一个跨越 Johns Hopkins University 和 Harvard University 的物理研究项目。那么,他应该先找谁接触?他需要先私下试探一个人,理想情况下,这个人既熟悉物理领域,又与 Johns Hopkins 和 Harvard 两边都有接触。这个问题可以通过检查影响力网络中相关部分来回答:我们先取出两所大学的所有员工(通过 WORKS_FOR 关系),然后在他们之间搜索任何连接(TALKED_ABOUT、TALKED_WITH、WORKS_WITH、STUDENT_OF 关系),限制在三跳以内,并要求其中至少有一人从事物理研究。结果如图 6.6 所示。

image.png

图 6.6 连接 Johns Hopkins University 与 Harvard University 的物理研究影响力网络,人物间距离不超过三跳

如果这是一个更大的网络,我们可以在这个子图上运行 betweenness centrality 算法,以帮助识别重要的连接者;但在这里,这只是一个简单任务。乍一看,只有少数几个人显得是这两所大学之间的有用连接点。一个不错的起点可能是 Irving Langmuir(化学家、物理学家和工程师,1932 年诺贝尔化学奖获得者):他曾积极评价 Dorothy M. Wrinch(研究胰岛素和蛋白质 X 射线结构),而且与两所大学都存在直接的一跳连接。注意,这位科学家在图中被表示成两个节点:Irving Langmuir 和 Langmuir,因为有一次页面中只提到了他的姓氏,而且没有额外关系可用于实体解析。

此外,通过查看带有情感属性的 TALKED_ABOUT 关系,我们还发现 Bernal 对 Dorothy Wrinch 持负面态度,而 Irving Langmuir 对 Bernal 持负面态度。为了获得更加平衡的洞察,我们可能需要把两个人都采访一下。

6.3 洛克菲勒档案中心项目的后续步骤

上一节中的结果仅基于一个更大数据源中的 150 页内容,但它们已经展示了这个 KG 惊人的复杂性。在一个真正达到生产质量的完整项目中,我们还需要做更多工作:

改进知识抽取——进一步迭代提示工程,或对 LLM 进行微调,能够提升 KG 的准确性。

处理多页文档——每本日记都有数百页,但我们能发送给 LLM 并从中取回的数据量受到 token 上限限制。在 RAC 项目中,我们使用 ChatGPT-3.5-Turbo 来识别单篇日记条目的边界——这些条目通常少于三页——并对其进行联合处理。

执行实体解析——我们可以改进本章提出的 baseline 方法,把它扩展到其他实体类型,并结合针对 WikiData 或类似知识库的实体消歧。

加入 grants——从董事会会议纪要中挖掘 RF 已授予资助的细节,并把这些 grant 与日记中的谈话关联起来,这将使我们能够回答诸如“获批项目是否通常会经过有影响力科学家或既有受资助者的推荐?”之类的问题。

对 Occupations 做实体解析——这些命名实体的粒度差异很大。例如,我们会同时看到 nuclear physics、isotopes 和 heavy nitrogen,但 isotopes 和 heavy nitrogen 都属于 nuclear physics,而 heavy nitrogen 又是 nitrogen 的一种 isotope。要回答复杂问题,我们就必须能够把它们彼此关联(解析)起来,从而获取该主题的完整历史。我们取得最好效果的方法,是先为 Occupations 创建 embeddings(使用 SentenceBERT 或 GPT),然后通过凝聚式层次聚类来完成聚类。

创建 conversations——我们可以借助高质量 RE 以及其他信息,创建 Conversation 节点:一个 Conversation 需要包含日期、采访者、被采访者以及主题(即被采访者的 Occupations)。一旦拥有了 Conversation,我们就能识别其后续链条,并把它们与 grants 关联起来。而这两项任务,都可以借助 occupation 的无监督解析来实现。

到这里,RAC 项目的完整面貌已经清晰可见:从历史打字文档中做前沿知识挖掘、对齐多个非结构化数据源、构建实体解析系统、进行图建模、图数据科学分析、复杂可视化与样式设计——它有挑战,够艰难,但更重要的是,它真的很有趣!

6.4 LLM 时代中知识图谱的价值

你可能会问:既然现在有能力超强的大型语言模型,为什么我们还要构建 KG,而不是直接把数据喂给这些模型,然后跳过中间步骤,直接向它提问呢?这个问题的答案很复杂,而整本书——也就是我们对 KG 的“辩护书”——其实就是一个宏大的回答。但我们也可以给出一个与本章相关的、更简洁的答案,总结如下:

可解释性(Explainability) ——基于精心设计的 KG 的应用,有一个巨大优势:它天然具备可解释性。它为用户提供了检查和验证底层数据与推理过程的工具;并且在需要时,还能被配置为处理相互冲突的信息来源,同时给出完整的“思考”链条。

去神秘化 / 去黑箱化(Demystification / de-black-boxing) ——人们往往把高级 ML 模型视为黑箱,仿佛只能盲目相信它们。如果我们只是基于自己的数据集对一个 LLM 进行了微调,然后直接向它提问,我们就没有办法评估回答的置信度。更关键的是,我们又怎么能确定,这个“AI”不会遗漏数据中的某个关键信息?相较之下,利用这些模型强大的语言理解能力,从文档中抽取具体的事实性信息并构建一个 KG,则能让我们对最终生成的洞察更有信心。

民主化(Democratization) ——LLM 是庞然大物,训练和微调成本都非常高。我们可以把 KG 视为一种“民主化”使用 LLM 的方式:即便没有雄厚资金的组织,也可以从中获益。我们只需要让昂贵的大模型出手一次,用来生成 KG;随后就可以长期使用这个 KG(或只是偶尔做一些低成本的批量更新)来支持下游任务和分析。

可探索性(Explorability) ——图让用户能够从全新的角度去“看见”和“触摸”自己的关系型数据。它既支持全局视角,也支持逐层钻取调查。而 KG 的可视化与可探索性,会激发人们提出假设,然后再去验证或证伪这些假设。

高级分析(Advanced analytics) ——也许最重要的是,KG 能赋予数据科学家和分析师开展下游图分析与图 ML 的能力,同时让他们对“如何生成面向用户问题的答案”保持完全控制,而不必过度依赖 LLM 这类黑箱工具。

小结

  • 知识图谱 schema 设计,也就是图建模,能够确保信息以最适合具体用例的方式存储。设计良好的 schema 可以简化 KG 的构建、实体与关系的清洗、归一化与解析,并确保下游分析与洞察发现的高效开展。
  • 从文本文档中抽取高质量的实体关系,有助于我们设计一种无监督的、基于图的实体解析方法。
  • 各种图数据科学与图机器学习技术,能够帮助我们分析模式并从 KG 中提取洞察,而不必过度依赖像 LLM 这样的黑箱工具。