Neo4j 是由 Neo4j, Inc 开发的图数据库管理系统。
Neo4j 存储的元素包括节点、连接它们的边以及节点和边的属性。其开发者将其描述为具有原生图存储和处理的ACID兼容事务数据库, Neo4j 提供非开源的”社区版”,采用GNU通用公共许可证的修改版进行许可,同时提供在线备份和高可用性扩展(采用闭源商业许可)。Neo也以闭源商业条款许可了这些扩展的 Neo4j。
该笔记本演示如何使用大语言模型(LLMs)为可使用 Cypher 查询语言的图数据库提供自然语言接口。
Cypher 是一种声明式图查询语言,支持在属性图中进行表达能力强且高效的查询。
您需要先启动 Neo4j 实例。一种方法是创建 Neo4j免费Aura云服务数据库实例 ,或使用 Neo4j桌面应用程序 本地运行数据库,也可通过Docker容器部署。
本地运行Docker容器可通过执行以下脚本:
如果使用Docker容器,需要等待几秒钟让数据库启动。
我们默认使用OpenAI模型。
初始化数据库
假设数据库为空,可通过Cypher查询语言填充数据。以下Cypher语句是幂等的,即无论运行一次或多次,数据库信息都将保持一致。
刷新图元数据信息
当数据库架构发生变化时,可通过刷新所需生成Cypher语句的元数据信息。
增强元数据信息
选择增强的元数据版本可使系统自动扫描数据库中的示例值并计算一些分布指标。例如,如果节点属性有少于10个不同值,则在元数据中返回所有可能值;否则,每个节点和关系属性仅返回一个示例值。
图查询
现在可以使用图Cypher QA链对图进行提问。
限制返回结果数量
可通过 top_k 参数限制Cypher QA链的返回结果数量。默认值为10。
返回中间结果
可通过 return_intermediate_steps 参数返回Cypher QA链的中间步骤。
返回直接结果
可通过 return_direct 参数返回Cypher QA链的直接结果。
在Cypher生成提示词中添加示例
可定义特定问题所需的Cypher语句,供大语言模型生成。
为Cypher和答案生成使用独立LLM
可通过 cypher_llm 和 qa_llm 参数定义不同的LLM。
忽略指定的节点和关系类型
可通过 include_types 或 exclude_types 忽略图元数据中的部分内容。
验证生成的Cypher语句
可通过 validate_cypher 参数验证并修正生成的Cypher语句中的关系方向。
将数据库结果作为工具/函数输出
可通过 use_function_response 参数将数据库结果作为工具/函数输出传递给LLM。此方法可提高响应的准确性和相关性,因为LLM会更紧密地遵循提供的上下文。
您需要使用原生支持函数调用的LLM才能使用此功能。
在使用函数响应功能时,可通过 function_response_system 参数提供自定义系统消息,以指导模型如何生成答案。
注意:当使用 use_function_response 时, qa_prompt 将失效
官方原文:src/oss/python/integrations/graphs/neo4j_cypher.mdx · 非官方翻译,译文由 AI 生成,以英文原文为准。
Last modified on November 3, 2026