在信息爆炸的时代,如何有效地从海量文本中提取结构化信息并构建知识图谱,成为了一个备受关注的问题。知识图谱是一种强大的工具,它以图的形式表示实体及其之间的关系,能够帮助我们更好地理解和利用数据。近年来,随着大型语言模型(LLM)的飞速发展,LLM Graph Transformer应运而生,它利用LLM的能力,实现了从文本中自动提取实体和关系并构建知识图谱的功能。今天我们一起了解一下LLM Graph Transformer。
一、LLM Graph Transformer介绍
LLM Graph Transformer是一种利用大型语言模型(LLM)构建知识图谱的工具。它通过提取文本中的实体和关系,将这些信息以图的形式表示出来,从而形成一个知识图谱。LLM Graph Transformer提供了两种主要的应用模式:工具基于模式和提示基于模式。这两种模式在不同的场景下各有优势,可以根据具体需求进行选择。
- 工具基于模式(默认模式):
-
工作原理:当LLM支持结构化输出或函数调用时,工具基于模式会利用LLM的内置功能来提取实体和关系。通过定义工具规范,可以确保实体和关系以结构化、预定义的方式被提取出来。
-
优势:工具基于模式减少了提示工程的工作量,因为LLM已经内置了提取结构化信息的能力。此外,这种模式还支持属性提取,可以获取更多关于实体和关系的详细信息。
-
适用场景:适用于LLM支持结构化输出或函数调用的场景。
- 提示基于模式(备用模式):
-
工作原理:在LLM不支持工具或函数调用的情况下,LLM Graph Transformer会回退到提示基于模式。这种模式使用少样本提示来定义输出格式,引导LLM以文本方式提取实体和关系。然后,通过自定义函数将LLM的输出解析为JSON格式,用于填充节点和关系。
-
优势:提示基于模式具有更高的灵活性,可以适应不同LLM的特性和输出格式。即使LLM不支持结构化输出或函数调用,也可以通过提示来引导其提取信息。
-
适用场景:适用于LLM不支持结构化输出或函数调用的场景,或者当需要更多自定义输出格式时。
二、创建知识图谱的具体步骤
(一)设置 Neo4j 环境
- 选择 Neo4j 实例
- 可以使用免费的 Neo4j Aura 云实例,它提供了便捷的云端数据库服务。或者,通过下载 Neo4j Desktop 应用程序并创建本地数据库实例来设置本地的 Neo4j 环境。
- 配置连接参数
-
使用Neo4jGraph类来配置与 Neo4j 数据库的连接。需要指定url、username(如neo4j)和password(如cables - anchors - directories)等参数,同时可以设置refresh_schema=False等其他可选参数。
-
from langchain_community.graphs import Neo4jGraph`` ``graph = Neo4jGraph(` `url="bolt://54.87.130.140:7687",` `username="neo4j",` `password="cables-anchors-directories",` `refresh_schema=False``)
(二)定义图模式(Graph Schema)
- 节点类型定义
-
使用allowed_nodes参数来约束要提取的节点类型。这样 LLM 就会专注于提取这些类型的节点,减少不必要的节点提取,提高提取的准确性和一致性。
-
allowed_nodes = ["Person", "Organization", "Location", "Award", "ResearchField"]``nodes_defined = LLMGraphTransformer(llm=llm, allowed_nodes=allowed_nodes)``data = await nodes_defined.aconvert_to_graph_documents(documents)``graph.add_graph_documents(data)
- 关系类型定义
-
可以通过allowed_relationships参数来指定允许的关系类型。最初可以使用简单的关系类型列表,如[“SPOUSE”, “AWARD”, “FIELD_OF_RESEARCH”, “WORKS_AT”, “IN_LOCATION”],但这种方式可能导致关系连接的节点不明确和方向不一致等问题。后来引入了更高级的三元组格式,如[(“Person”, “SPOUSE”, “Person”), (“Person”, “AWARD”, “Award”), (“Person”, “WORKS_AT”, “Organization”), (“Organization”, “IN_LOCATION”, “Location”), (“Person”, “FIELD_OF_RESEARCH”, “ResearchField”)],明确了关系的源节点、关系类型和目标节点,大大提高了关系提取的一致性。
-
allowed_nodes = ["Person", "Organization", "Place", "Award", "ResearchField"]``allowed_relationships = ["SPOUSE", "AWARD", "FIELD_OF_RESEARCH", "WORKS_AT", "IN_LOCATION"]``rels_defined = LLMGraphTransformer(` `llm=llm,` `allowed_nodes=allowed_nodes,` `allowed_relationships=allowed_relationships``)``data = await rels_defined.aconvert_to_graph_documents(documents)``graph.add_graph_documents(data)
- 属性定义
-
有两种方式定义属性。一是设置node_properties=True和relationship_properties=True,让 LLM 自主决定提取哪些属性。二是明确指定要提取的属性列表,如node_properties=[“birth_date”, “death_date”]和relationship_properties=[“start_date”],这样 LLM 会按照指定的属性进行提取。不过,目前属性提取存在一些限制,如只能使用基于工具的方法提取、所有属性都提取为字符串、只能全局定义属性而不能按节点标签或关系类型定义,且无法自定义属性描述来引导更精确的提取。
-
allowed_nodes = ["Person", "Organization", "Location", "Award", "ResearchField"]``allowed_relationships = [` `("Person", "SPOUSE", "Person"),` `("Person", "AWARD", "Award"),` `("Person", "WORKS_AT", "Organization"),` `("Organization", "IN_LOCATION", "Location"),` `("Person", "FIELD_OF_RESEARCH", "ResearchField")``]``node_properties=True``relationship_properties=True``props_defined = LLMGraphTransformer(` `llm=llm,` `allowed_nodes=allowed_nodes,` `allowed_relationships=allowed_relationships,` `node_properties=node_properties,` `relationship_properties=relationship_properties``)``data = await props_defined.aconvert_to_graph_documents(documents)``graph.add_graph_documents(data)
(三)文本处理与图谱构建
- 文档准备
- 将要处理的文本组织成Document对象。
- 使用 LLM Graph Transformer 处理文档
- 根据选择的工作模式(基于工具或基于提示),使用 LLM Graph Transformer 对文档进行处理。在基于工具的模式下,利用 LLM 的结构化输出能力直接提取实体和关系;在基于提示的模式下,通过精心设计的提示引导 LLM 进行提取。例如,使用aconvert_to_graph_documents函数异步处理文档,该函数会返回一个GraphDocument对象,其中包含提取的节点、关系和源文档等信息。
- 将图谱文档导入数据库
-
使用add_graph_documents方法将提取的图谱文档导入到 Neo4j 等图数据库中。可以选择不同的导入选项,如默认导入、添加基本实体标签(baseEntityLabel=True)以优化索引和检索,或者包含源文档(include_source=True)以便跟踪实体的来源。例如,在默认导入时,所有节点和关系会直接导入到数据库中;添加基本实体标签时,每个节点会额外获得一个__Entity__标签,便于后续的索引操作;包含源文档时,可以在数据库中看到源文档与提取实体之间的关联,为构建检索器提供了更多的信息。
LLM Graph Transformer为我们提供了一种高效、灵活的方法来从文本中提取实体和关系,并构建知识图谱。通过选择合适的模式、准备文本数据、设置Neo4j环境、实例化LLM Graph Transformer以及提取和可视化知识图谱等步骤,我们可以轻松地构建出结构清晰、内容丰富的知识图谱。这些图谱不仅有助于我们更好地理解和分析文本数据中的信息,还可以为各种应用场景提供有力的支持。
零基础如何学习AI大模型
领取方式在文末
为什么要学习大模型?
学习大模型课程的重要性在于它能够极大地促进个人在人工智能领域的专业发展。大模型技术,如自然语言处理和图像识别,正在推动着人工智能的新发展阶段。通过学习大模型课程,可以掌握设计和实现基于大模型的应用系统所需的基本原理和技术,从而提升自己在数据处理、分析和决策制定方面的能力。此外,大模型技术在多个行业中的应用日益增加,掌握这一技术将有助于提高就业竞争力,并为未来的创新创业提供坚实的基础。
大模型典型应用场景
①AI+教育:智能教学助手和自动评分系统使个性化教育成为可能。通过AI分析学生的学习数据,提供量身定制的学习方案,提高学习效果。
②AI+医疗:智能诊断系统和个性化医疗方案让医疗服务更加精准高效。AI可以分析医学影像,辅助医生进行早期诊断,同时根据患者数据制定个性化治疗方案。
③AI+金融:智能投顾和风险管理系统帮助投资者做出更明智的决策,并实时监控金融市场,识别潜在风险。
④AI+制造:智能制造和自动化工厂提高了生产效率和质量。通过AI技术,工厂可以实现设备预测性维护,减少停机时间。
…
这些案例表明,学习大模型课程不仅能够提升个人技能,还能为企业带来实际效益,推动行业创新发展。
学习资料领取
如果你对大模型感兴趣,可以看看我整合并且整理成了一份AI大模型资料包,需要的小伙伴文末免费领取哦,无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发
部分资料展示
一、 AI大模型学习路线图
整个学习分为7个阶段
二、AI大模型实战案例
涵盖AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,皆可用。
三、视频和书籍PDF合集
从入门到进阶这里都有,跟着老师学习事半功倍。
四、LLM面试题
五、AI产品经理面试题
😝朋友们如果有需要的话,可以V扫描下方二维码联系领取~
👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]👈