AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


【开源】大型语言模型辅助异构文档构建统一知识图谱
发布日期:2024-07-23 08:04:33 浏览次数: 1783


知识图谱

知识图谱(Knowledge Graph)是一种用于结构化地表示实体和它们之间关系的数据结构。它通常用于捕捉真实世界中事物的属性和它们之间的各种联系。知识图谱广泛应用于语义搜索、自动推理、推荐系统、自然语言处理等领域。

在知识图谱中,信息以图的形式存储,其中节点代表实体(如人、地点、事物等),边代表实体之间的关系(如“朋友”、“位于”、“拥有”等)。每个节点和边都可以附带属性,用于提供额外的信息。例如,一个代表“人”的节点可能包含姓名、年龄、性别等属性。

知识图谱的一个典型例子是谷歌的知识图谱,它用于增强搜索引擎的结果,提供与查询相关的结构化信息。例如,当你在谷歌搜索一个名人时,搜索结果旁边可能会显示一个包含该名人基本信息的小框,这些信息就来自于谷歌的知识图谱。

知识图谱的构建通常涉及信息抽取、实体识别、关系抽取、数据融合等技术,它可以帮助机器更好地理解和处理复杂的现实世界数据。

摘要

即使采用保守估计,80% 的企业数据存储在非结构化文件中,这些文件存储在能够容纳异构格式的数据湖中。传统搜索引擎已经无法满足信息检索需求,特别是当任务是浏览和探索以形成洞察时。换句话说,没有明显的搜索关键词可用。由于其自然的视觉吸引力可以减少人类认知负荷,知识图成为异构数据集成和知识表示的最佳选择。

我们介绍了 Docs2KG,这是一个新颖的框架,旨在从多样化和异构的非结构化文档中提取多模态信息,包括电子邮件、网页、PDF 文件和 Excel 文件。动态生成代表提取的关键信息的统一知识图,Docs2KG 能够实现对文档数据湖的高效查询和探索。与现有侧重于特定领域数据源或预先设计的模式的方法不同,Docs2KG 提供了一个灵活且可扩展的解决方案,可以适应各种文档结构和内容类型。所提出的框架统一了数据处理,支持多种下游任务,并提高了领域可解释性。

动机

我们认为LLM应用程序的三大支柱:

  • Data

  • RAG

  • LLM


现在市场上的大多数工具都集中在检索增强生成(RAG)管道或如何让大型语言模型(LLM)在本地运行。

典型的工具包括:Ollama、LangChain、LLamaIndex等。

然而,为了确保更广泛的社区能够从最新研究中受益,我们首先需要解决数据问题。

Wider社区包括个人用户、小企业,甚至大企业。他们中的一些人可能已经开发了数据库,而大多数人确实有很多数据,但他们都是非结构化的,分布在不同的地方。

介绍

Docs2KG是一个开源框架,旨在从各种文档格式中提取知识图谱。这个框架提供了一种方法,可以将各种数据源(例如PDF,Word,网页等)的信息转换为机器可读的形式,从而有助于进行知识获取和知识表示。

以下是一个简单的Python代码示例,展示了如何使用Docs2KG框架从PDF文件中提取知识图谱:

from docs2kg import Docs2KG
# 创建Docs2KG实例
d2k = Docs2KG()
# 加载PDF文件
pdf_path = 'example.pdf'
d2k.load_document(pdf_path, 'pdf')
# 提取知识图谱
d2k.extract_kg()
# 获取知识图谱
kg = d2k.kg
# 打印知识图谱
print(kg.serialize('turtle'))


在这个例子中,我们首先导入Docs2KG模块,然后创建一个Docs2KG实例。我们加载一个名为example.pdf的PDF文件,并提取其中的知识图谱。最后,我们获取知识图谱并以Turtle格式序列化并打印出来。

请注意,这只是一个代码示例,实际使用时可能需要根据你的具体需求进行调整。例如,你可能需要安装额外的依赖项或者进行额外的配置。此外,Docs2KG支持多种文档格式和提取方法,你可以根据你的需要选择合适的文档加载和知识提取方法。

查询示例

Can you show me all documents and their components related to events that occurred in the years 2011 and 2021?

输入

MATCH (startNode)-[*1..3]->(endNode)WHERE startNode.uuid IN ['17da8cc5-9986-4126-8752-545162ca6aa7', 'dae828f5-e968-49a7-bf03-0a9a81022434', '2cc13873-9bce-45ed-a0a3-df9765e90579', '32eb0955-b983-446f-b883-db575f304f88', 'd6735d2d-afa0-41c0-842b-c1ecb9a4b4d5', '503e64f8-1a22-44b2-be99-240578925c1f', '1b2fe6fb-2949-40ce-9ba1-61496f164a67', '1a0e5f3a-b250-442d-afc2-1f139a367e21', 'c632fceb-3af9-4b11-9082-3ce615d1fd5b', '29544460-0135-46e9-94f5-60c2b86caa53']RETURN endNode

输出

建议的解决方案

我们提出了一种在集中的地方组织数据的方法,通过统一的多模式知识图和半结构化数据。

鉴于非结构化和异构数据的性质,信息提取和知识表示提出了重大挑战。在这个软件包中,我们介绍了Docs2KG,这是一个新颖的框架,旨在从各种异构的非结构化数据源中提取多模式信息,包括电子邮件、网页、PDF文件和Excel文件。Docs2KG动态生成表示提取信息的统一知识图,从而实现对数据的高效查询和探索。与专注于特定数据源或预先设计的模式的现有方法不同,Docs2KG提供了一个灵活且可扩展的解决方案,可以适应各种文档结构和内容类型。所提出的框架不仅简化了数据处理,而且提高了模型在不同领域的可解释性。

总体步骤

数据处理

双路径数据处理

    将来自不同来源、不同格式的文档转换为Markdown、CSV、JSON等。

    统一的多模式知识图构建

GraphDB加载程序

    将统一的多模式知识图加载到GraphDB中

    我们在这个项目中使用Neo4j作为GraphDB

进一步增强

    KG模式是生成的,是动态的,在一开始不会是完美的。

    因此,我们需要进一步增强KG模式

    通过自动模式合并:基于节点标签频率的合并、基于标签语义相似性的合并

    通过人工循环:人工审查并进一步增强KG模式

下游应用

    传统的Cypher查询:NLP查询到Cypher的查询(可以在LLM的帮助下)

基于矢量的RAG:

    首先获取每个节点的嵌入。

    然后使用查询的嵌入来进行相似性搜索,以提取图中的锚节点。

    使用这些节点作为锚点节点,进行多跳信息提取以增强查询。

    使用LLM在增强查询的基础上进行最后的生成。



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询