吴恩达新课:用知识图谱增强RAG的完整指南

课程概览
吴恩达(Andrew Ng)联合Neo4j推出了一门新的短课程《Knowledge Graphs for RAG》,由Neo4j生成式AI开发者布道师Andreas Kollegger主讲。这门课程系统讲解了如何利用知识图谱(Knowledge Graph)来提升检索增强生成(RAG)应用的效果。
课程的核心观点很明确:知识图谱是AI领域最强大但也最被低估的工具之一。当你将知识图谱与嵌入模型结合时,就拥有了一个执行RAG的强大武器。
什么是知识图谱?
知识图谱提供了一种强调"事物之间关系"的数据存储和组织方式。与传统关系型数据库将数据组织为行列表格不同,知识图谱使用基于图的结构:
- 节点(Nodes):代表事物或实体,如人、公司
- 边(Edges):代表实体之间的连接或关系,如雇佣关系
每个节点和边都可以存储额外信息。例如,一个"人"节点可以存储姓名、邮箱等详情;一个"公司"节点可以存储员工数量、年收入等数据;而连接两者的"雇佣关系"边则可以存储职位、入职日期等信息。
知识图谱的概念最早由Google在2012年正式提出,用于增强搜索引擎的语义理解能力,但其理论根基可以追溯到更早的语义网(Semantic Web)运动和RDF(资源描述框架)标准。知识图谱的底层数据模型基于图论,采用"主语-谓语-宾语"的三元组(Triple)来表达事实。Neo4j作为目前最流行的原生图数据库,采用属性图模型(Property Graph Model),允许节点和边都携带键值对属性,比传统RDF三元组表达能力更强。其查询语言Cypher的设计灵感来自SQL和SPARQL,使用ASCII艺术风格的模式匹配语法(如 (a)-[:KNOWS]->(b)),使得图查询直观易读。

这种图结构的核心优势在于:关系本身就是数据库的组成部分,而非仅仅是两个表之间共享的外键。这使得深层关系的表示和搜索变得极其高效,查询执行速度远超传统数据库。
这也是为什么搜索引擎和电商网站都将知识图谱作为交付相关结果的关键技术。当你在Google或Bing上搜索一位名人时,侧边卡片中返回的结果就是通过知识图谱检索的。
知识图谱如何增强RAG?
传统RAG的局限
检索增强生成(Retrieval-Augmented Generation, RAG)由Meta AI研究团队在2020年提出,核心思想是在大语言模型生成回答之前,先从外部知识库中检索相关信息作为上下文注入提示词。这一范式解决了LLM的两大痛点:知识截止日期限制和幻觉问题。
在基础RAG系统中,文档处理流程是:
- 将文档拆分为较小的文本块(chunks)
- 使用嵌入模型将文本块转换为向量
- 通过余弦相似度等函数搜索与提示相关的文本块
其中,文本嵌入(Embedding)是RAG的关键环节,它将自然语言文本映射到高维向量空间中,语义相近的文本在向量空间中距离较近。余弦相似度通过计算两个向量夹角的余弦值来衡量相似程度,值域为[-1,1],1表示完全相同方向。常用的嵌入模型包括OpenAI的text-embedding-ada-002、Cohere的embed模型以及开源的sentence-transformers系列。
文本分块(Chunking)环节看似简单,实则影响深远。常见策略包括固定大小分块(如每512个token)、基于句子或段落的语义分块、以及递归字符分割。分块过小会丢失上下文,过大则引入噪声且可能超出嵌入模型的上下文窗口。重叠分块(Overlapping Chunks)通过让相邻块共享部分文本来缓解上下文断裂问题。
这种纯粹基于向量相似度的检索方式存在明显短板——它本质上是一种"扁平化"的语义匹配,只能捕捉文本表面的语义相似性,无法理解实体之间的结构化关系。例如,当用户询问"苹果公司CEO管理的其他公司"时,向量检索可能返回包含"苹果公司"或"CEO"关键词的文本块,但无法沿着"Tim Cook → CEO of → Apple""Tim Cook → Board Member of → Nike"这样的关系链进行推理。此外,向量检索对多跳推理(Multi-hop Reasoning)天然乏力——当答案需要综合多个文档中分散的信息片段时,单纯的相似度排序往往无法将所有必要的上下文片段都检索出来。
知识图谱RAG的优势

将文本块存储在知识图谱中,开启了全新的检索方式:
- 不仅仅依赖文本嵌入的相似度搜索
- 检索一个文本块后,可以遍历图结构找到其他相关文本块
- 为LLM提供更完整的上下文信息
- 利用图中存储的关系和元数据提升检索相关性
图遍历(Graph Traversal)是知识图谱检索的核心操作,分为广度优先搜索(BFS)和深度优先搜索(DFS)两种基本策略。在RAG场景中,典型的检索流程是:先通过向量相似度找到最相关的起始节点,然后通过图遍历沿着关系边探索相邻节点,收集额外的上下文信息。Neo4j的Cypher语言支持可变长度路径匹配(如 (a)-[:RELATED*1..3]->(b) 表示1到3跳的关系链),这使得多跳推理可以用简洁的声明式查询实现。

简言之,知识图谱RAG能够发现基于相似度的RAG所遗漏的文本源之间的关联。在知识图谱RAG中,分块策略尤为重要,因为每个文本块会成为图中的一个节点,块与块之间的关系(如来自同一文档、引用同一实体)会被显式建模为图的边,从而将原本孤立的文本片段编织成一张语义关系网络。
课程学习路径
这门课程以SEC(美国证券交易委员会)财务报表数据为实战案例,设计了循序渐进的学习路径:
SEC(U.S. Securities and Exchange Commission)要求所有上市公司定期提交标准化的财务披露文件,包括10-K(年度报告)、10-Q(季度报告)和8-K(重大事件报告)等表单。这些文档具有高度结构化的特征:包含公司信息、财务数据、风险因素、管理层讨论等固定章节,且不同公司的报表之间存在大量可关联的实体(如共同的审计机构、供应商、行业分类等)。这使得SEC数据成为知识图谱RAG的理想教学案例——它既需要处理非结构化的文本描述,又需要建模实体之间的复杂关系网络,完美展示了图结构相比纯向量检索的优势。
- 入门知识图谱:使用Neo4j的查询语言Cypher探索和修改电影数据图
- 向量化集成:结合文本嵌入模型,为知识图谱中的文本字段创建向量表示
- 构建RAG系统:为一组SEC表单构建知识图谱,使用LangChain执行RAG检索
- 跨文档检索:为第二组SEC表单创建图,连接两个图,使用复杂图查询实现跨文档检索
LangChain是目前最流行的LLM应用开发框架之一,由Harrison Chase于2022年创建。它提供了模块化的抽象层,将提示模板、LLM调用、检索器、记忆模块等组件串联为可复用的"链"(Chain)。在知识图谱RAG场景中,LangChain提供了Neo4jVector(将Neo4j作为向量存储)和GraphCypherQAChain(自动生成Cypher查询)等专用组件。其LCEL(LangChain Expression Language)允许开发者以声明式方式编排复杂的检索-推理流水线,例如先执行向量检索获取候选节点,再执行图遍历扩展上下文,最后将所有信息注入LLM生成最终回答。

实践价值与启示
这门课程的实践意义体现在几个层面:
对开发者而言,知识图谱RAG为处理复杂文档集(如金融报表、法律文件、医疗记录)提供了比纯向量检索更精确的解决方案。当数据之间存在复杂的关联关系时,图结构的优势尤为明显。
对AI应用设计而言,这揭示了一个重要趋势:RAG系统正在从单一的"检索-生成"范式,向"结构化理解-关系推理-精准生成"的方向演进。知识图谱不仅存储信息,还编码了信息之间的语义关系。
对学习者而言,Neo4j + LangChain + 嵌入模型的技术栈组合,代表了当前知识图谱RAG的主流实现方案,具有很高的工程实用性。结合LangChain的GraphCypherQAChain,LLM可以自动将自然语言问题转换为Cypher查询,实现端到端的图增强检索,这大大降低了开发者使用图数据库的门槛。
总结
吴恩达这门课程的核心信息很清晰:当RAG遇到知识图谱,检索的维度从"语义相似"扩展到了"关系推理"。对于处理结构化或半结构化文档、需要跨文档推理的场景,知识图谱RAG是一个值得深入学习的技术方向。
从更宏观的视角来看,知识图谱RAG代表了AI应用架构的一个重要演进方向:将符号AI(基于规则和结构化知识的推理)与连接主义AI(基于神经网络的语义理解)深度融合。知识图谱提供了精确的结构化推理能力,而嵌入模型提供了灵活的语义匹配能力,两者的结合使得RAG系统既能理解自然语言的模糊语义,又能沿着明确的知识结构进行逻辑推理——这正是构建可靠AI应用所需要的双重能力。
核心要点
相关推荐

uGAP:统一100+非洲地理数据集的AI平台
uGAP是开普敦大学团队开发的非洲地理空间AI平台,统一120余个非洲数据集并提供Python SDK,支持数据发现、处理与模型训练一站式工作流,已用于气旋洪水制图等实战场景。

Cursor能控制你的电脑了:AI代理可驱动桌面应用测试
Cursor 新增桌面控制能力,AI 代理可驱动 iOS 模拟器等桌面应用测试自己构建的功能。本文分析这一更新对开发工作流的影响、技术实现可能路径及可靠性考量。

Vibecoding自研推理引擎:理想丰满,现实骨感
Reddit开发者分享Vibecoding自研推理引擎的真实经历:用WebGL2和GLSL在浏览器跑GGUF Q4模型,却陷入tokenizer调试地狱。本文分析浏览器端LLM推理的工程难点,以及为何直接clone llama.cpp是更理性的选择。