Neo4j 是由 Neo4j, Inc.
Neo4j存储的数据元素包括节点、连接节点的边以及节点和边的属性。开发者将其描述为一个符合 ACID 标准的事务型数据库,具有原生图存储和处理能力。Neo4j提供非开源的”社区版”(使用修改版 GNU 通用公共许可证授权),在线备份和高可用性扩展则使用闭源商业许可证授权。
本 notebook 展示如何使用 LLM 为图数据库提供自然语言接口,你可以使用 Cypher 查询语言来查询该数据库。
Cypher 是一种声明式图查询语言,允许在属性图中进行富有表达力且高效的数据查询。
设置
你需要一个正在运行的Neo4j instance. One option is to create a free Neo4j database instance in their Aura cloud service. 你也可以使用以下方式在本地运行数据库: Neo4j Desktop application, or running a docker container.
你可以通过执行以下脚本运行本地 docker 容器:
填充数据库
假设你的数据库为空,你可以使用 Cypher 查询语言填充数据。 以下 Cypher 语句是幂等的,这意味着无论运行一次还是多次,数据库信息都是相同的。刷新图 Schema 信息
如果数据库的 Schema 发生变化,你可以刷新生成 Cypher 语句所需的 Schema 信息。增强 Schema 信息
选择增强 Schema 版本使系统能够自动扫描数据库中的示例值 并计算一些分布指标。 例如, if a node property has less than 10 distinct values, we return all possible values in the schema. 否则,每个节点和关系属性仅返回一个示例值。查询图
我们现在可以使用 graph cypher QA chain 来查询图限制结果数量
你可以使用top_k 参数来限制 Cypher QA Chain 返回的结果数量。
默认值为 10。
返回中间结果
你可以使用return_intermediate_steps 参数从 Cypher QA Chain 返回中间步骤
返回直接结果
你可以使用return_direct 参数从 Cypher QA Chain 返回直接结果
在 Cypher 生成提示词中添加示例
你可以定义希望 LLM 为特定问题生成的 Cypher 语句使用不同的 LLM 进行 Cypher 和答案生成
你可以使用cypher_llm 和 qa_llm 参数来定义不同的 LLM
忽略指定的节点和关系类型
你可以使用include_types 或 exclude_types 来在生成 Cypher 语句时忽略部分图 Schema。
验证生成的 Cypher 语句
你可以使用validate_cypher 参数来验证和修正生成的 Cypher 语句中的关系方向
将数据库结果作为工具/函数输出提供上下文
你可以使用use_function_response 参数将数据库结果作为工具/函数输出传递给 LLM。 此方法提高了响应的准确性和相关性 of an answer as the LLM follows the provided context more closely.
你需要使用支持原生函数调用的 LLM 来使用此功能。
function_response_system to instruct the model on how to generate answers.
注意使用 use_function_response 时 qa_prompt 将不起作用
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

