构建知识图谱是一个令人兴奋但充满挑战的任务,核心在于将非结构化的文本转化为结构化数据。
这种方法已经存在了一段时间,但随着 LLM 的出现,这项技术开始进入主流应用领域。
下图展示了将多篇文档中的文本信息(例如描述某人及其与公司的关系)转化为知识图谱。在左侧,我们看到的是原始的非结构化句子;而在右侧,这些信息被提取、组织,形成了实体和关系的可视化图谱,清晰地展现了“谁创立了什么公司”或“谁在哪些公司工作”等信息。
那么,为什么要将文本转化为结构化的知识图谱呢?
一个重要的应用场景是 RAG。虽然基于嵌入模型直接处理非结构化文本是一种有效的方法,但在回答复杂、多跳问题时会显得力不从心。例如:
需要理解多个实体间关系的问题。
需要进行过滤、排序、聚合等结构化操作的问题。
通过知识图谱,数据的组织变得更加高效,不仅可以支持更复杂的问题回答,还能显著提升准确性和适用性。
LLM Graph Transformer 旨在支持通过任意 LLM 构建知识图谱。面对当前多种模型和服务商的复杂生态,LangChain 通过标准化简化了这个过程,而 LLM Graph Transformer 则提供了强大的适应能力。
这个模块的核心特色在于它的“双模式设计”,可以根据场景需求选择不同的方式生成图谱,分别适应不同的操作逻辑。
基于工具的模式(默认模式)
适用场景:当 LLM 支持结构化输出或函数调用时。
实现方式:利用 LLM 的内置功能(如 with_structured_output),通过工具指定输出格式,将实体和关系提取为预定义的结构化数据。
优势:
输出结果一致性强,结构明确。
适合对精确性要求较高的任务。
基于提示的模式(备用模式)
适用场景:当 LLM 不支持工具或函数调用时。
实现方式:通过少样本提示(few-shot prompting),以自然语言指导 LLM 提取实体和关系。提取结果以文本形式输出,再通过自定义函数解析为 JSON 格式,用于生成节点和关系。
优势:
不依赖工具支持,适应性强。
适合探索性任务和初期实验。
这两种模式使 LLM Graph Transformer 能够适应不同的 LLM:
在工具支持的情况下,利用工具直接生成结构化数据。
在工具受限时,通过提示引导模型实现类似功能。
此外,即使在支持工具的模型中,也可以通过设置 ignore_tools_usage=True 强制启用基于提示的模式,以满足特定需求。
这种灵活性让 LLM Graph Transformer 能够高效适配多样化的 LLM,提供了统一且易用的知识图谱构建体验。
GitHub 链接:https://github.com/tomasonjo/blogs/blob/master/llm/llm_graph_transformer_in_depth.ipynb