ingFang SC", system-ui, -apple-system, "system-ui", "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);visibility: visible;margin-bottom: 0px;">
ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"> ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" title="null"/>
ingFang SC";font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">在当今数据驱动的世界里,知识图谱已成为一种强大的工具,能够捕获和查询不同实体之间复杂的 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: inherit;color: rgb(1, 155, 252);">关系。 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"> ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" title="null"/>
ingFang SC";font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">传统上构建知识图谱需要大量的编码知识,但现在情况正在发生变化。本文将介绍一种简化的构建方法,将 Anthropic 的 Claude AI 助手与Neo4j 图数据库结合起来。借助模型上下文协议 (Model Context Protocol, MCP),这一过程完全无需编写任何代码。
ingFang SC";font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">本文将详细介绍我的实践经验,展示如何仅通过与 AI 助手的对话,就为一所学校(特别是建模其考试安排和课程信息)构建一个全面的教育系统知识图谱。 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;display: table;padding: 0px 0.2em;color: rgb(255, 255, 255);background: rgb(1, 155, 252);">什么是模型上下文协议 (Model Context Protocol, MCP)?模型上下文协议 (MCP)是一项新兴标准,它允许 AI 模型与外部工具和数据源进行交互。借助 MCP,像 Claude 这样的 AI 助手能够在数据库等系统上直接执行命令,这极大地扩展了它们处理特定任务的能力,使其不再局限于自身的训练数据。
简单来说,MCP 让 Claude 能够直接访问并与你的 Neo4j 数据库交互。
前提条件 要按照此方法进行操作,你需要:
1.Docker Desktop :用于在容器中运行 Neo4j。 2.Neo4j 数据库 :可以是 Docker 容器版或云实例。 3.UV 包管理器 :一个快速的 Python 包管理器,用于安装本方法所需的软件依赖。 MacOS/Linux:
curl-LsSfhttps://astral.sh/uv/install.sh|sh Windows:
powershell-ExecutionPolicyByPass-c"irmhttps://astral.sh/uv/install.ps1|iex" 4. Claude for Desktop
5. MCP 插件配置 :用于连接 Claude 到 Neo4j;使用 Neo4j 提供的 mcp-neo4j-cypher工具 (https://github.com/neo4j-contrib/mcp-neo4j/tree/main/servers/mcp-neo4j-cypher)。
设置 MCP 配置 成功实现此方法的关键在于正确设置 MCP 配置。我使用的配置如下:
"neo4j": { "command":"/Users/<username>/.local/bin/uvx", # **请替换此路径** "args": [ "mcp-neo4j-cypher", "--db-url", "bolt://localhost", "--username", "neo4j", "--password", "password" ] }此配置通过 Bolt 协议将 Claude 连接到本地运行的 Neo4j 实例。请务必将配置中的/Users/<username>/.local/bin/uvx替换为你系统中uvx可执行文件的完整路径,并根据你的实际数据库设置调整--db-url、--username和--password参数。
在此获取云配置和 MCP 插件的详细信息(https://github.com/neo4j-contrib/mcp-neo4j/tree/main/servers/mcp-neo4j-cypher)。
验证设置 启动 Claude for Desktop 后,你将看到以下由 Neo4j 提供的新功能工具:
1.get-neo4j-schema :用于检索 Neo4j 数据库的模式 (schema)。 2.read-neo4j-cypher :用于从图数据库中查询信息。 3.write-neo4j-cypher :用于更新数据库中的图数据。 这些工具会出现在你的 Claude for Desktop 界面中,表明 MCP 已成功与 Neo4j 集成。
案例研究:构建教育系统知识图谱 为了展示此方法的强大之处,我决定构建一个教育系统——具体来说,是 Brainiacs 辅导中心 4B 班第二学期的考试安排和课程信息(https://brainiacstutoring.co.za/product-category/grade4/)。
第一步:创建基本模式 (schema) 第一步是建立图数据库的基本结构。通过与 Claude 对话,我说明了需要建模的实体和关系:
•学校 (School) :Brainiacs 辅导中心 •主题/内容 (Topics) :每个科目的具体课程章节 我没有编写查询语句,只是简单地向 Claude 解释了我的需求,然后它就生成并执行了相应的 Neo4j Cypher 命令来构建这个结构。
第二步:添加实体和关系 建立模式后,我需要从我的学校文档中提取实际数据来填充数据库。Claude 分析了我分享的考试安排和课程文档,然后自动创建了:
• 带有正确名称的学校节点 (School node) • 带有班级和学期信息的年级节点 (Grade node) • 各科目的科目节点 (Subject nodes) • 带有日期、时间和星期几的考试节点 (Exam nodes) • 代表课程章节的主题/内容节点 (Topic nodes) • 有意义地连接所有这些实体的关系 (Relationships) 所有这些都是通过自然对话完成的。我完全无需亲手编写任何 Cypher 查询语句!
要使用某个工具,你需要授权给它,可以选择授权一次或针对整个对话授权。在本例中,由于我正在更新数据库,所以需要注意,Claude 对我配置的数据库拥有完整的写入权限。
接着,Claude 从文档中提取信息,并使用 Cypher 语句在数据库中创建节点,包括:
它会迭代处理每个主题/内容并单独创建。(注意:如果指示它从列表中创建,效率会更高。)
Claude 还会创建插入的节点之间的关系,这样我们就能从原始 PDF 文档中得到一个完整的图结构。
第三步:查询知识图谱 数据库填充完成后,我可以通过用普通英语向 Claude 提问来查询。例如,当我问“英语考试是什么时候?考哪些内容?”,Claude 就自动生成并运行了相应的 Cypher 查询,返回了以下信息:
英语考试:
英语考试内容:
6. 未见过的文章 (Unseen Passage) 8. 图片描述 (Picture Description) 在幕后,Claude 执行了类似以下的 Cypher 查询:
// 查询英语考试的时间安排 MATCH(subject:Subject {name:'English'})-[:HAS_EXAM]->(exam:Exam) RETURN exam.date AS Date, exam.day AS Day, exam.startTime AS StartTime, exam.endTime AS EndTime // 查询英语考试的主题/内容 MATCH (subject:Subject {name: 'English'})-[:INCLUDES_TOPIC]->(topic:Topic) RETURN topic.name AS Portion这些复杂的 Cypher 查询语句,正是 Claude 根据我的自然语言提问自动生成并执行的,我完全无需关心查询细节。
以下是一些原始文档,Claude 从中提取信息并转换成了图谱元素。
知识图谱可视化 此方法的一个强大之处在于 Claude 能够创建图结构的可视化效果。通过我们的对话,Claude 生成并执行了代码来可视化:
2. 年级-科目-考试关系的图表示。
3. 显示各科目主题/内容数量的柱状图。
全程无需代码的 MCP 方法的核心优势 完成这个项目后,我发现将 Claude 与 MCP 结合用于 Neo4j 具有以下几个显著优势:
1.易用性 :图数据库操作对非开发人员更加友好,无需编程基础即可上手。 4.自动化文档 :Claude 自动为数据库结构生成文档。 5.内置可视化 :无需额外工具即可获得有用的可视化效果。 局限性与注意事项 尽管此方法功能强大,但也存在一些值得注意的局限性:
1.复杂查询 :复杂的查询模式可能仍需要手动优化才能获得最佳性能。 2.安全性 :需要注意 MCP 配置中数据库凭据的安全问题。 3.性能 :对于大型数据库,专门的工具可能提供更好的性能。 4.验证 :始终需要验证大型语言模型 (LLM) 的操作,包括数据提取、数据创建、查询结果和生成的代码。作为你所在领域和用例的专家,最终结果的准确性和可靠性仍需你来把控并负责。 总结 Claude、MCP 和 Neo4j 的结合代表着图数据库技术走向民主化的重要一步。通过消除编码障碍,此方法为更广泛的受众开启了强大的知识图谱构建能力。
无论你是构建课程关系的教育工作者,还是绘制复杂网络的科研人员,抑或是可视化组织结构的业务分析师,这种对话驱动的方法都让图数据库比以往任何时候都更易于使用。
我期待看到这种方法的未来发展,以及通过 AI 辅助的对话驱动开发,能够进一步简化哪些复杂数据库任务。