中科院团队力荐!Graph Maker深度解析:大模型驱动知识图谱构建,万字拆解从原理到部署,收藏这篇就够了!
前言
下面是一张简明阐释知识图谱核心思想的示意图:

来源:(https://arxiv.org/abs/2403.11996)
构建知识图谱(KG)需两大要素:
1.知识库(Knowledge Base)•文本语料•代码库•文章集合•…2.本体(Ontology)
定义我们关注的实体类别及它们之间的关系类型。示例:•实体:Person、Place•关系:•Person — related to → Person•Person — lives in → Place•Person — visits → Place
有了上述两部分信息,就可以从提到“人”和“地点”的文本中构建知识图谱。
示例
如果我们的知识库是关于“处方药及其相互作用”的临床研究,那么本体可能包括:•Compound(化合物)•Usage(用法)•Effects(效果)•Reactions(反应)
虽然这种方法不及传统构建方式那样严谨,但它能:
•更灵活地处理非结构化数据;•生成更丰富的信息;•非常适合图检索增强生成(Graph Retrieval Augmented Generation,GRAG)类应用。
为什么要使用 Graph Maker?
让我列举一些我在上一篇文章中收到的反馈中的挑战和观察,这有助于我们理解使用 LLM 构建知识图谱时遇到的问题。我们以《指环王》书籍的维基百科摘要为例——毕竟谁能不爱《指环王》呢!
有意义的实体
•问题:在无任何约束时,LLM 往往会将过于宽泛或抽象的短语识别为实体。例如,文本中出现 “Bilbo Baggins celebrates his birthday and leaves the Ring to Frodo”(比尔博·巴金斯庆祝生日并将魔戒留给佛罗多),LLM 可能会将 “Bilbo Baggins celebrates his birthday” 或 “Celebrates his birthday” 标记为 Action(动作)。•期望:但如果它能提取 “Birthday”(生日)并将其归为 Event(事件),或许更有用。
实体的一致性
•问题:LLM 也可能在不同上下文中对同一实体进行不同标注。例如:Sauron、the Dark Lord Sauron、 the Dark Lord。•期望:它们不应被当作不同实体提取。如果确实被识别为不同实体,也应在图中通过等价关系(equivalence)将它们关联起来。
解析的鲁棒性
•问题:LLM 输出具有非确定性,且上下文窗口有限。 a.我们需要先将大文档拆分成小块,再分别为每块生成子图。 b.要保证最终全局图谱的一致性,每个子图的 LLM 响应都必须严格符合预定义的 JSON 模式。 c.任何字段的缺失——即便是一处——都可能破坏图的连通性。
尽管 LLM 在生成规范 JSON 方面已有显著进步,但仍会出现格式错误或信息遗漏,尤其是在使用上下文窗口较小的模型时。
•期望:即使出现解析失败,也能恢复部分边数据,保证图谱连通性。
实体的分类
•问题:LLM 在识别实体时容易出错。对于领域特定的上下文,或实体名称不符合标准英语时,这个问题尤为严重。传统的命名实体识别(NER)模型在这方面表现更好,但也受限于训练数据,而且它们无法理解实体之间的关系。•期望:要让 LLM 在类别上一致地输出结果,通过 Prompt 工程,引导 LLM 坚守用户定义的类别。
隐含关系
关系可以是显式提到的,也可以通过上下文隐含提取。例如:
“Bilbo Baggins celebrates his birthday and leaves the Ring to Frodo” 隐含了以下关系:
•Bilbo Baggins → 拥有者(Owner)→ Ring•Bilbo Baggins → 继承人(heir)→ Frodo•Frodo → 拥有者(Owner)→ Ring
我认为,未来 LLM 在关系抽取方面终会超越任何传统方法,但目前仍需要巧妙的 Prompt 工程来解决这一挑战。
Graph Maker 库
我在此分享的 Graph Maker 库,通过在严谨与灵活、结构化与非结构化之间取一个平衡点,显著改进了之前的方法,并在上述大多数挑战上表现更佳。
与之前让 LLM 自行发现本体不同,Graph Maker 会强制 LLM 使用用户定义的本体。
我们可以通过以下简单的 pip 命令安装知识图谱构建器:
pip install knowledge-graph-maker
以下就是它的五个简易使用步骤:
下面的步骤都已在本文末尾附带的 Jupyter Notebook 中实现。
1. 定义图谱本体(Ontology)
Graph Maker 库支持如下格式的本体定义,底层使用 Pydantic 模型:
from knowledge_graph_maker importOntology
我已经调优了 Prompt,使其输出能与给定本体保持一致,效果相当不错。不过准确率仍未达到 100%,它会受到所选模型、应用场景、本体设计和数据质量的影响。
2. 将文本拆分为若干块
我们可以使用任意规模的语料来生成大型知识图谱,但目前 LLM 的上下文窗口有限。因此,需要将文本按模型上下文窗口大小切分,然后逐块构建子图。
•本项目所用的 Prompt 大约占用 500 个 token;•剩余部分既要放在输入文本中,也要容纳输出的图谱;•实践中,将文本切分为 200–500 token 的小块,往往能生成更为详尽的图谱。
3. 将文本块转换为文档(Document)
文档在底层由 Pydantic 模型定义,其模式如下:
from pydantic importBaseModel
•text:文本块内容•metadata:与本段落中提取的每条关系绑定的上下文信息,如页码、章节名、文章标题等。
通常,同一对节点在不同文档中可能会出现多条关系,
metadata有助于为这些关系提供背景语境。
4. 运行 Graph Maker
Graph Maker 接收一个 Document 列表,对每个文档生成一张子图,最后汇总为整体图谱。
下面是一个简单示例:
from knowledge_graph_maker importGraphMaker,Ontology,GroqClient
Graph Maker 会将每个文档通过 LLM 处理并解析响应,最终生成完整的图谱。图谱以边(Edge)列表的形式表示,每条边对应如下的 Pydantic 模型:
classNode(BaseModel):
•我已调优 Prompt,使其输出的 JSON 更加一致。•若 JSON 解析失败,Graph Maker 会尝试手动拆分 JSON 字符串为多条边记录,然后尽可能地恢复数据。
5. 保存到 Neo4j
可以将生成的图谱保存到 Neo4j,以便用于 RAG 应用、运行网络算法,或使用 Bloom 可视化:
from knowledge_graph_maker importNeo4jGraphModel
•每条边都作为一个事务写入数据库。•如果是首次运行,请将 create_indices=True,以在 Neo4j 中创建节点唯一性约束。
5.1 可视化(仅供演示)
在上一篇文章中,我们使用 networkx 和 pyvis 进行可视化。既然已经将图谱保存到 Neo4j,这里可以直接用 Bloom。
假设我们想观察角色关系在整本书中的演进过程,可以借助 Edge 中的 order 属性,将时间或顺序维度加入图谱。Graph Maker 在处理文本块时,会自动记录该块在文档列表中的序号到每条边的 order 字段。要查看关系演变,只需按 order 对图谱进行分段切片即可。
图谱与 RAG
此类知识图谱最理想的应用场景或许是 RAG(检索增强生成)。已有大量文章介绍如何将图谱用于强化 RAG 应用。
•多样化检索途径
图谱提供了多种不同的知识检索方式。根据图谱结构和应用设计,有些方法可能比简单的语义搜索更为强大。•向节点和关系添加 Embedding 向量
在最基础的实现中,我们可以为每个节点和关系添加向量表示,并在向量索引上执行语义搜索以进行检索。•混合 Cypher 查询与网络算法
我认为,图谱在 RAG 应用中真正的威力在于将 Cypher 查询、网络算法与语义搜索相结合。
我自己也在探索这些技术,计划在下一篇文章中分享更多实践心得。
代码示例
以下是 GitHub 仓库链接,欢迎大家试用。
GitHub 仓库:
rahulnyk/graph_maker[1]
仓库中也包含了示例 Python Notebook,可帮助你快速上手。
注意:使用前需在项目根目录的
.env文件中填写你的 GROQ 凭证。
如何学习大模型 AI ?
我国在AI大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着Al技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国Al产业的创新步伐。加强人才培养,优化教育体系,国际合作并进,是破解困局、推动AI发展的关键。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

2025最新大模型学习路线
明确的学习路线至关重要。它能指引新人起点、规划学习顺序、明确核心知识点。大模型领域涉及的知识点非常广泛,没有明确的学习路线可能会导致新人感到迷茫,不知道应该专注于哪些内容。
对于从来没有接触过AI大模型的同学,我帮大家准备了从零基础到精通学习成长路线图以及学习规划。可以说是最科学最系统的学习路线。

针对以上大模型的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。
大模型经典PDF书籍
新手必备的大模型学习PDF书单来了!全是硬核知识,帮你少走弯路!

配套大模型项目实战
所有视频教程所涉及的实战项目和项目源码等

博主介绍+AI项目案例集锦
MoPaaS专注于Al技术能力建设与应用场景开发,与智学优课联合孵化,培养适合未来发展需求的技术性人才和应用型领袖。


这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

为什么要学习大模型?
2025人工智能大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 , 大模型作为其中的重要组成部分 , 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力, 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 ,为各行各业带来了革命性的改变和机遇 。

适合人群
- 在校学生:包括专科、本科、硕士和博士研究生。学生应具备扎实的编程基础和一定的数学基础,有志于深入AGI大模型行业,希望开展相关的研究和开发工作。
- IT行业从业人员:包括在职或失业者,涵盖开发、测试、运维、产品经理等职务。拥有一定的IT从业经验,至少1年以上的编程工作经验,对大模型技术感兴趣或有业务需求,希望通过课程提升自身在IT领域的竞争力。
- IT管理及技术研究领域人员:包括技术经理、技术负责人、CTO、架构师、研究员等角色。这些人员需要跟随技术发展趋势,主导技术创新,推动大模型技术在企业业务中的应用与改造。
- 传统AI从业人员:包括算法工程师、机器视觉工程师、深度学习工程师等。这些AI技术人才原先从事机器视觉、自然语言处理、推荐系统等领域工作,现需要快速补充大模型技术能力,获得大模型训练微调的实操技能,以适应新的技术发展趋势。

课程精彩瞬间
大模型核心原理与Prompt:掌握大语言模型的核心知识,了解行业应用与趋势;熟练Python编程,提升提示工程技能,为Al应用开发打下坚实基础。
RAG应用开发工程:掌握RAG应用开发全流程,理解前沿技术,提升商业化分析与优化能力,通过实战项目加深理解与应用。
Agent应用架构进阶实践:掌握大模型Agent技术的核心原理与实践应用,能够独立完成Agent系统的设计与开发,提升多智能体协同与复杂任务处理的能力,为AI产品的创新与优化提供有力支持。
模型微调与私有化大模型:掌握大模型微调与私有化部署技能,提升模型优化与部署能力,为大模型项目落地打下坚实基础。
顶尖师资,深耕AI大模型前沿技术
实战专家亲授,让你少走弯路

一对一学习规划,职业生涯指导
- 真实商业项目实训
- 大厂绿色直通车
人才库优秀学员参与真实商业项目实训
以商业交付标准作为学习标准,具备真实大模型项目实践操作经验可写入简历,支持项目背调
大厂绿色直通车,冲击行业高薪岗位
文中涉及到的完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

更多推荐








所有评论(0)