? ? ? ?知识图谱(KG)或任何图都包括节点和边,其中每个节点表示一个概念,每个边表示一对概念之间的关系。本文介绍一种将任何文本语料库转换为知识图谱的技术,本文演示的知识图谱可以替换其他专业知识图谱。
? ? ? ?知识图谱表示了任意两个实体之间的关系,在这个结构中,节点表示着诸如人、地点或事件之类的实体,而边表示这些实体之间的连接。知识图谱还包含了第三个元素,通常被称为谓词或边缘标签,它阐明了关系的性质。
? ? ? ?知识图谱就像智能网络一样,显示了现实世界中的事物是如何连接的。它存储在图形数据库中,并可视化为图形结构,形成我们所说的“知识图”。用户可以像实时聊天机器人对话一样使用graph数据进行聊天。
? ? ? ?知识图谱有多种用途。通过应用图算法,我们可以计算任何节点的中心度,从而深入了解一个概念在一系列工作中的重要性。分析连接和断开的概念集,或确定概念群落,可以提供对主题的全面理解。知识图谱使我们能够揭示看似不相关的概念之间的联系。
? ? ? ?此外,知识图谱可以用于图检索增强生成(GRAG或GAG),并促进与文档的对话交互。与具有固有局限性的传统版本的RAG相比,这种方法通常产生优越的结果。例如,依赖简单的语义相似性搜索进行上下文检索可能并不总是有效的,尤其是当查询缺乏足够的上下文时,或者当相关信息分散在庞大的文本语料库中时。
使用矢量数据库编码文档;
使用sentence transformer将查询转换为向量;
基于输入的查询从矢量数据库中检索相关上下文;
利用查询和检索到的上下文来激发LLM。
? ? ? ?RAG的一个主要缺点是它很难对复杂而细微差别的查询提供精确的响应。这种限制源于几个因素:
理解用户意图:RAG系统可能很难完全掌握用户查询背后的确切意图,这是向LLM提供准确信息的关键方面。
对矢量嵌入的依赖性:RAG在很大程度上依赖矢量嵌入来解释查询并将其与相关信息匹配。虽然这些嵌入是有效的,但它们并不是万无一失的,有时会导致理解查询上下文的不准确或过于简单化。
黑盒性质:生成和比较矢量嵌入的过程是复杂的,而且往往是不透明的。考虑到嵌入可能具有多个维度,在语义搜索中破译其结构并理解其对相似性得分的影响是一个挑战。
通用训练数据:嵌入模型通常在通用数据集上进行训练,可能会错过某些查询所必需的特定细微差别或上下文。这可能导致在不同的内容片段之间绘制出表面上的相似之处。
百科全书式KGs:这种常见类型通过整合百科全书、数据库和专家见解等不同来源的信息来获取一般知识。例如,Wikidata汇编了维基百科文章中的大量知识,产生了大量多样的KGs,其中包含数百万个实体和多种语言的关系。
常识性KGs:这些KGs专注于日常知识,包含有关对象、事件及其关系的信息。它们有助于理解我们日常生活中使用的基本知识,通常是隐含的知识。例如,ConceptNet包括常识性的概念和关系,帮助计算机更自然地掌握人类语言。
特定领域的KGs:这些KGs针对医学、金融或生物学等特定领域量身定制,体积较小,但高度精确和可靠。例如,医学领域的UMLS包含详细的生物医学概念和关系,以满足专业知识需求。
多模态KGs:超越文本,这些KGs包含图像、声音和视频,用于图像-文本匹配或视觉问答等目的。像IMGpedia和MMKG这样的例子无缝地融合了文本和视觉信息,以实现全面的知识表示。
? ? ? ?在搜索引擎领域,KGs在提高搜索精度和相关性方面起着关键作用。通过理解KGs中嵌入的关系和上下文,搜索引擎超越了单纯的关键词匹配,深入研究了用户查询背后的意图和深刻意义。这种演变导致搜索结果不仅更直观,而且与上下文相适应,从根本上改变了我们在线获取信息的方式。
? ? ? 数据来源于各种渠道,包括非结构化数据、平面文件、带有XML或JSON数据库的结构化数据、传统SQL数据库等。通过从这些不同的数据源提取实体和关系来构建知识图谱。与ETL传统方法不同,现在使用生成人工智能自动提取实体和关系,还可以生成Neo4j cipher查询语言。最终将这些元素自动集成到Neo4j数据库中,如下图的左侧所示。
? ? ? ?生成人工智能通过将这些问题转换为数据库查询语言Cipher而发挥作用。对数据库执行查询,获得结果,然后进行另一轮生成人工智能处理,将其转换回自然语言。
? ? ? ?在中间层,图数据库将基于语料库数据生成知识图谱schema,并使用节点和边缘将其生成概念图。当您连接这些节点时,您可以看到节点和边的关系,如下所示。
? ? ? ?构建知识图谱有如下四个步骤,但这将根据业务需求和用例场景而有所不同。
从内容中识别和捕获概念和实体。这些元素表示系统中的节点;
识别概念之间的关系,形成结构的边缘;
使用已识别的节点(概念)和边(关系)填充图形数据结构或图形数据库;
将构建的图形可视化,以获得分析见解和潜在的艺术享受。
? ? ? 语料库数据流图如下所示,此流将根据您使用的数据库模型而有所不同。例如,如果您使用图形数据库和数据科学数据库,数据将存储在后端系统中。如果你使用内存中的占位符,那么你可以使用Pandas DataFrame等。
? ? ?在初始阶段,首先对文本语料库进行分段,每个片段被分配一个唯一的chunk_id。在此之后,使用语言模型(LLM)从每个文本块中提取概念及其语义关系,为这些关系分配W1的权重。需要注意的是,同一对概念之间可能存在多种关系。
? ? ? 随后,考虑同一文本块内的上下文相关度,从而在概念之间建立权重为W2的附加关系。不同块中相同的概念对也可以建立权重为W2的附加关系。为了简化数据,对相似的对进行分组,它们的权重进行求和,并把它们的关系进行拼接。结果是一个统一的表示,每个不同的概念对都有一条边,并以特定的权重和关系列表作为其标识符。
? ? ? ?现在,让我们对DataFrame的每个文本块运行这个GenAI模型,并将json转换为Pandas DataFrame,如下所示。
? ? ? ? 如果您使用的是后端数据库,那么实体如下所示:
? ? ? ?每一行表示一对概念之间的关系,充当连接图中两个节点的边。同一对概念之间可能存在多个边或关系。data frame的count表示权重,任意设置为4。
? ? ? ?知识图谱(KGs)与大型语言模型(LLM)的集成有望显著增强检索增强生成(RAG)过程,从而改进知识表示和推理。这种协作方法有助于动态知识融合,确保真实世界的知识保持最新,并与文本空间不同。因此,在推理过程中提供的信息仍然是最新的和相关的。
? ? ? ?将知识图谱(KG)视为大型语言模型(LLM)可访问的动态数据库,用于查询最新的相关信息。事实证明,这种方法在回答问题等任务中非常有效,在这些任务中,保持最新信息至关重要。这些知识与LLM的集成是通过高级架构实现的,促进了文本标记和KG实体之间的深刻交互。这通过结构化的事实数据丰富了LLM的响应,提高了生成信息的质量。
? ? ? ?使用知识图谱提升RAG技术包括在知识图谱中搜索相关事实,并将其作为上下文信息呈现给LLM。这种方法能够生成精确、多样和真实的内容。例如,当LLM的任务是对最近的事件做出回应时,它可以在制定回复之前先咨询KG了解最新的事实。
? ? ? 此外,LLM在制作准确描述KG信息的高质量文本方面发挥了重要作用。这对于产生真实的叙事、对话和故事具有巨大的潜力。无论是通过利用LLM的知识还是构建广泛的KG文本语料库,这一过程都显著增强了KG到文本的生成,特别是在训练数据有限的情况下。
? ? ? ?LLM和KGs的协同效应在推理任务中变得尤为明显。使用LLM来解释文本问题并促进对KGs的推理,建立了文本信息和结构信息之间的联系,增强了可解释性和推理能力。这种连贯的方法适用于各个领域,从对话系统中的个性化建议到通过结合领域知识图来加强特定任务的培训程序。
? ? ? ?可视化阶段为这项练习增加了一个令人愉快的维度,提供了一种独特的艺术满足感。我们已经确定了影响其大小的边权重,为节点社区指定了颜色,并建立了节点度来确定其大小。
? ? ? ?探索放大和缩小、操作节点和边以及使用页面底部的滑块面板调整图形物理特性的灵活性。看看这个动态图是如何帮助提出有见地的问题并提高对主题的理解的!
? ? ? ?当需要混合结构化和非结构化数据来推动RAG应用时,知识图谱被证明是非常有效的。这篇博客文章指导你在graph DB中使用语料库、医学或任何文本上的GenAI函数构建知识图。GenAI/模型功能的输出结构整齐,是提取有组织信息的理想选择。为了在图构建中获得LLM的最佳体验,请详细定义图模式,并在提取后加入实体消歧步骤。希望RAG-KG图支持图增强检索的发展,为整体RAG管道的改进做出贡献。
? ? ? ?将知识图谱(KGs)纳入检索增强生成(RAG)系统具有巨大的潜力。通过利用KGs中结构化和互连的数据,我们可以大大提高现有RAG系统的推理能力。这种强有力的融合有望缓解当前RAG管道中固有的局限性,提供更准确、更具上下文意识和细微差别的响应。
? ? ? ?KGs是LLM可访问的强大信息库,使他们不仅能够检索事实,而且能够理解与这些事实相关的关系和潜在背景。这种理解水平的提高对于人工智能系统的发展至关重要,该系统能够与用户进行更有效的交互,提供不仅相关而且深刻见解的信息。
[1]?https://regupathit.medium.com/gen-ai-vilimiai-rag-with-knowledge-graph-8a8a6bdcd222
[2]?https://knowledge.vilimin.com/
[3]?https://vilimin.com/
[4]?https://vilimingpt.com/