如何在企业级同时实施知识图谱 (KG) 和大型语言模型 (LLM)
大型语言模型(LLM)和知识图谱(KG)是让更多人访问数据的不同方法。知识图谱使用语义学将数据集通过其含义(即它们所代表的实体)连接起来。LLM 使用向量和深度神经网络来预测自然语言。它们通常都以 "解锁 "数据为目标。对于实施 KGs 的企业来说,最终目标通常是建立数据市场、语义层、使数据 FAIR 化或使企业更加以数据为中心。这些都是不同的解决方案,但最终目标是相同的:让更多数据更快地提供给合适的人。对于实施 LLM 或其他类似 GenAI 解决方案的企业来说,其目标往往是相似的:为员工或客户提供一个 "数字助理",以便更快地将正确的信息提供给正确的人。这种潜在的共生关系是显而易见的:LLM 的一些主要弱点,即它们是黑盒模型,难以处理事实知识,而这正是 KG 的一些最大优势。从本质上讲,KG 是事实的集合,而且完全可以解释。但是,在企业中,KGs 和 LLMs 究竟应该如何结合使用呢?
去年找工作时,我不得不写很多封求职信。我用 ChatGPT 来帮忙--我把已有的求职信复制到提示窗口,再加上我的简历和应聘职位的职位描述,然后让 ChatGPT 来完成剩下的工作。ChatGPT 帮我写出了几份相当不错的初稿,为我赢得了动力,但如果不加选择,它还会给我提供我没有的多年工作经验,并声称我上过我从未上过的学校。
我之所以提到我的求职信,是因为:
1)我认为这是一个很好的例子,说明了 LLM 的优缺点,以及为什么 KG 是实施 LLM 的重要组成部分;
2)这个用例与许多大型企业目前使用 LLM 的用途并无太大区别:自动生成报告。只要在提示中明确包含现有的求职信和职位描述,ChatGPT 就能很好地通过更改内容来重新创建求职信。确保 LLM 有正确的内容就是 KG 的作用所在。如果你只是简单地写 "为我想要的工作写一封求职信",结果肯定会让人哭笑不得。此外,求职信的例子也是 LLMs 的绝佳应用,因为它涉及到语言的总结和重组。还记得 LLM 中的第二个 L 代表什么吗?LLMs 历来专注于非结构化数据(文本),这也是他们的强项,而 KG 则擅长整合结构化和非结构化数据。您可以使用 LLM 来撰写求职信,但您应该使用 KG 来确保它具有正确的简历。
注:我不是人工智能专家,但我也不太相信任何假装自己是专家的人。这个领域变化太快,我们根本无法跟上,更不用说预测未来在企业层面实施人工智能会是什么样子了。在我看来,我将介绍目前整合 KG 和 LLM 的一些方式。这并不是一份全面的清单,我欢迎大家提出补充和建议。
知识图谱和大型语言模型的兩種關係
目前,KG 和 LLM 有两种互动方式:LLM 是构建知识图谱的工具,而知识图谱则是 LLM 或 GenAI 应用程序的输入。我们这些在知识图谱领域工作的人正处于一个奇怪的境地:我们构建的东西有望改善人工智能应用,而人工智能同时又改变了我们构建这些东西的方式。我们被期望在日常工作中将人工智能作为一种工具进行优化,同时改变我们的产出以促进人工智能的优化。这两种趋势相互关联,而且经常重叠,下面我将逐一讨论。
利用 LLMs 协助 KG 的创建和策划过程
LLM 是构建 KG 的重要工具。在整理 KG 的过程中利用 LLM 技术的一种方法是将 KG 矢量化(或嵌入)到矢量数据库中。矢量数据库(或矢量存储)是一种用于存储矢量或数字列表的数据库。矢量化即使不是驱动语言模型的核心技术组件,也是其中之一。这些模型通过大量的训练数据,学会将单词与向量联系起来。这些向量会根据训练数据中的上下文捕捉单词的语义和句法信息。通过使用使用这些海量数据训练出来的嵌入服务,我们可以在 KG 中利用这些语义和句法信息。
注意:将 KG 矢量化绝不是在 KG 整理和构建中使用 LLM 技术的唯一方法。而且,LLM 的这些应用对于 KG 创建来说都不是新鲜事。例如,NLP 用于实体提取已经有几十年的历史了,而 LLM 只是协助本体论/分类学家的一种新能力。
LLMs 可以通过以下方式帮助创建 KG:
- 实体解析:实体解析是对同一现实世界实体的记录进行对齐的过程。例如,对乙酰氨基酚是一种常见的止痛药,在美国以泰诺(Tylenol)品牌销售,而在英国则被称为扑热息痛(paracetamol),以潘那多(Panadol)品牌销售。这四个名称毫无相似之处,但如果将您的 KG 嵌入矢量数据库,矢量就能通过语义理解知道这些实体密切相关。
- 标记非结构化数据:假设您想将一些非结构化数据纳入 KG。您有一堆文件名模糊的 PDF 文件,但您知道这些文件中有重要的信息。您需要用文件类型和主题来标记这些文档。如果您已经嵌入了主题分类法和文件类型分类法,那么您只需对文件进行矢量化,矢量数据库就会从每个分类法中识别出最相关的实体。
- 实体和类提取:在非结构化数据语料库的基础上创建或增强本体或分类法等受控词汇。实体提取与标记类似,但这里的目标是增强本体,而不是将非结构化数据纳入 KG。假设您有一个地理本体,并希望在其中填充城镇、城市、省等实例。您可以使用 LLM 从文本语料库中提取实体来填充本体。同样,您也可以使用 LLM 从语料库中提取类和类之间的关系。假设您忘记在本体中包含 "资本"。LLM 可能会将其提取为一个新类或一个城市的属性。
使用 KG 驱动和管理 GenAI 管道
使用 KG 来支持和管理 GenAI 流水线和应用程序有几个原因。根据 Gartner 的报告,"到 2025 年,至少有 30% 的 GenAI 项目将在概念验证 (POC) 之后因数据质量差、风险控制不足、成本上升或业务价值不明确而被放弃"。KG 可以帮助提高数据质量、降低风险和成本。
数据管理、访问控制和法规遵从
只有经过授权的人员和应用程序才能访问某些特定目的的数据。通常,企业希望特定类型的人员(或应用程序)以良好的管理方式与特定类型的数据聊天。如何知道哪些数据应该进入 GenAI 管道?如何确保 PII 不会进入希望与所有员工聊天的数字助理?答案就是数据治理。补充几点:
- 政策和法规会发生变化,尤其是在人工智能领域。即使您的人工智能应用程序现在合规,将来也可能不合规。良好的数据治理基础可以让企业适应这些不断变化的法规。
- 有时,问题的正确答案是 "我不知道",或 "您无法获得回答该问题所需的信息",或 "我回答该问题是非法或不道德的"。回答的质量不仅关系到真实性或准确性,还关系到合规性。
- 实施或启用该解决方案的知名企业(按字母顺序排列):语义 KG 公司,如 Cambridge Semantics、data.world、PoolParty、metaphacts 和 TopQuadrant,以及数据目录公司,如 Alation、Collibra 和 Informatica(还有很多很多)。
准确性和上下文理解
KG 还有助于提高整体数据质量--如果您的文档中充斥着相互矛盾和/或虚假的陈述,那么当您的聊天机器人告诉您不一致和虚假的事情时,请不要感到惊讶。如果您的数据结构不佳,将其存储在一个地方也无济于事。数据湖的承诺就是这样变成了数据沼泽的祸害。同样,如果您的数据结构不佳,将其矢量化也不会解决您的问题,只会造成新的头痛问题:矢量化数据沼泽。但是,如果您的数据结构良好,KGs 可以为 LLM 提供额外的相关资源,通过多种方式生成更加个性化和准确的推荐。使用KG提高LLM准确性的方法多种多样,但一般都属于自然语言查询(NLQ)范畴--使用自然语言与数据库进行交互。据我所知,目前实现自然语言查询的方法有 RAG、提示查询和微调。
检索增强生成(RAG):RAG 是指用训练数据之外的其他相关信息对提示进行补充,以生成更准确的回复。虽然 LLM 已在大量数据上接受过训练,但它们尚未在您的数据上接受过训练。想想上面的求职信例子。我可以让 LLM 为茶桁写一封求职信,应聘商汤的产品管理职位",它会返回一个答案,但其中会包含幻觉。更聪明的做法是,让模型接受这一提示,检索茶桁在 LinkedIn 上的个人资料,检索商汤的空缺职位的职位描述,然后撰写求职信。目前有两种著名的检索方式:将图矢量化或将提示转化为图查询(提示到查询)。
- 基于矢量的检索:这种检索方法需要将 KG 矢量化并存储在矢量存储区中。如果您将自然语言提示矢量化,就可以在矢量存储中找到与您的提示最相似的矢量。由于这些向量与图中的实体相对应,因此您可以根据自然语言提示返回图中最 "相关 "的实体。这与上文描述的标记功能过程完全相同--我们基本上是用 KG 中的相关标记来 "标记 "提示。
- 从提示到查询的检索:或者,您也可以使用 LLM 生成 SPARQL 或 Cypher 查询,并使用该查询从图中获取最相关的数据。注意:您可以使用提示到查询方法直接查询数据库,而不使用查询结果来补充对 LLM 的提示。这不是 RAG 的应用,因为您没有 "增强 "任何东西。下面将详细介绍这种方法。
关于 RAG 和两种检索方法的其他利弊和说明:
- 根据定义,RAG 需要一个知识库。知识图谱就是一个知识库,因此支持知识图谱的人也会支持由图谱驱动的 RAG(有时称为 GraphRAG)。但是,没有知识图谱也可以实现 RAG。
- RAG 可以根据提示内容和提示中的元数据,从知识库中提取最相关的数据来补充提示。例如,我们可以根据提问者、他们可以访问的内容以及他们的其他人口统计信息来定制回答。
- 如上所述,使用基于矢量的检索方法的一个好处是,如果将 KG 嵌入到矢量数据库中进行标记和实体解析,那么困难的部分就已经完成了。查找与提示相关的最相关实体,与用 KG 中的实体标记一大段非结构化文本没有什么区别。
- RAG 在一定程度上提供了回复的可解释性。用户现在可以看到提示中的补充数据,以及问题的答案可能就在这些数据中。
- 我在上文提到,人工智能正在影响我们构建 KG 的方式,同时我们也希望构建的 KG 能够促进人工智能的发展。提示-查询方法就是一个很好的例子。KG 的模式会影响 LLM 的查询能力。如果本体论的目的是为人工智能应用提供信息,那么 "最佳 "本体论就不再是现实的反映,而是人工智能看待现实的方式的反映。
- 从理论上讲,更多相关信息应能减少幻觉,但这并不意味着 RAG 能消除幻觉。我们仍在使用语言模型来生成反应,因此仍有很大的不确定性和幻觉空间。即使有我的简历和职位描述, LLMs 也可能会夸大我的经验。对于从文本到查询的方法,我们使用 LLM 来生成 KG 查询和响应,因此实际上有两个地方可能会产生幻觉。
- 同样,RAG 也提供了一定程度的可解释性,但并非完全如此。例如,如果我们使用基于向量的检索,模型可以告诉我们它包含了哪些实体,因为它们是最相关的,但它无法解释为什么这些实体是最相关的。如果使用自动生成的 KG 查询,自动生成的查询会 "解释 "为什么某些数据会被图返回,但用户需要了解 SPARQL 或 Cypher 才能完全理解为什么这些数据会被返回。
- 这两种方法并不相互排斥,许多公司都在同时采用这两种方法。例如,Neo4j 就有通过基于向量的检索实现 RAG 以及生成提示查询的教程。我在写这篇文章之前刚刚参加了一个会议,会议主要关注生命科学领域的 KG 和 LLM 实施,我看到许多生命科学公司都在做基于向量和提示查询 RAG 的某种组合。
- 实施或启用该解决方案的著名公司(按字母顺序排列):Data.World、微软、Neo4j、Ontotext、PoolParty、SciBite、Stardog、TopQuadrant(还有很多很多)。
单独的 "提示到查询"(Prompt-to-query):使用 LLM 将自然语言查询转化为正式查询(如 SPARQL 或 Cypher)。这与上文描述的 RAG 的 "提示-查询 "检索方法相同,只是在检索数据后,我们不会将数据发送给 LLM。这里的想法是,通过使用 LLM 生成查询而不是解释数据,可以减少幻觉。不过,如上所述,LLM 生成什么并不重要,它可能包含幻觉。支持这种方法的论点是,与自动生成的响应相比,用户更容易从自动生成的查询中发现幻觉。我对此有些怀疑,因为许多使用 LLM 生成 SPARQL 查询的用户对 SPARQL 的了解可能不足以发现自动生成的查询中存在的问题。
- 任何使用提示到查询检索来实施 RAG 解决方案的人也可以单独实施提示到查询。这些解决方案包括Neo4j、Ontotext 和 Stardog。
用于微调 LLM 的 KG:使用你的 KG 为现成的 LLM 提供额外的训练。与其将 KG 数据作为查询时提示(RAG)的一部分,您还不如使用您的 KG 来训练 LLM 本身。这样做的好处是,您可以将所有数据保存在本地,而无需将提示信息发送给 OpenAI 或其他任何人。缺点是 LLM 中的第一个 L 代表大型,因此下载和微调其中一个模型需要耗费大量资源。此外,虽然根据企业或行业特定数据微调的模型会更加准确,但并不能完全消除幻觉。关于这个问题的一些其他想法:
- 一旦使用图形对模型进行微调,也就失去了使用图形进行访问控制的能力。
- 有些 LLM 已经针对不同行业进行了微调,如医疗保健行业的 MedLM 和网络安全行业的 SecLM。
- 根据使用案例的不同,可能不需要微调 LLM。例如,如果您主要使用 LLM 来总结新闻文章,那么 LLM 可能不需要特别的培训。
- 有些公司并没有使用行业特定信息对 LLM 进行微调,而是使用经过微调的 LLM 生成代码(如 Code Llama),作为其提示到查询解决方案的一部分。
- 实施或启用该解决方案的著名公司(按字母顺序排列):据我所知,Stardog 的 Voicebox 是唯一使用 KG 为客户微调 LLM 的解决方案。
关于我在这里列出的整合 KG 和 LLM 的不同方法的说明:这些类别(RAG、提示查询和微调)既不全面,也不相互排斥。实施幼稚园教育和本地学习管理还有其他方法,今后还会有更多。此外,这些解决方案之间也有相当多的重叠,你可以将它们结合起来。例如,您可以在微调模型上运行基于向量和提示查询的 RAG 混合解决方案。
效率和可扩展性
构建许多互不关联的独立应用程序是低效的,也是软件荒地。应用程序是否 "由人工智能驱动 "并不重要。孤立的应用程序会导致重复的数据和代码以及整体冗余。KGs 提供了一个基础,通过整个企业的数据顺畅流动来消除这些冗余。
许多 GenAI 项目将因成本上升而被放弃,但我不知道 KG 是否能显著降低这些成本。我不知道是否有任何研究或成本效益分析支持这种说法。为企业开发一个由 LLM 驱动的聊天机器人成本高昂,但开发一个 KG 也是如此。
我不会假装知道 "最佳 "解决方案,而且,正如我在前面所说,我认为任何假装知道人工智能未来的人都是自欺欺人。我确实相信,对于试图更快地向正确的人提供更多数据的人来说,KG 和 LLM 都是有用的工具,它们各有优缺点。使用 LLMs 来撰写求职信(或监管报告),但使用 KG 来确保提供正确的简历(或研究或期刊论文或其他)。
一般来说,我认为应尽可能使用人工智能来构建、维护和扩展知识图谱,而且对于希望采用 GenAI 技术的企业来说,知识图谱也是必要的。这有几个原因:数据治理、访问控制和法规遵从;准确性和上下文理解;效率和可扩展性。
如何在企业级同时实施知识图谱 (KG) 和大型语言模型 (LLM)