如何在Dify中连接Neo4j图数据库实现基于复杂实体关联的智能检索

浅涛吖_7697

浅涛吖_7697

2026-08-05

221人浏览

原创

必须让dify实时访问neo4j的节点、关系及向量嵌入,需确认neo4j服务与bolt协议可用,修改conf/neo4j.conf启用并监听0.0.0.0:7687,dify中配置custom api验证http通道,再通过python函数节点调用neo4j driver接入bolt,结合多跳cypher查询与向量索引实现智能检索。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如何在dify中连接neo4j图数据库实现基于复杂实体关联的智能检索

要在Dify中实现基于复杂实体关联的智能检索,必须让Dify能实时访问Neo4j中存储的节点、关系及向量嵌入结果,否则所有图谱推理和多跳查询都只是纸上谈兵。

确认Neo4j服务状态与Bolt协议可用性

打开终端,执行 curl -I http://localhost:7474 检查HTTP服务是否响应;若返回 200 OK,再测试Bolt端口连通性:telnet localhost 7687。失败则说明Neo4j未启动或conf/neo4j.confdbms.connector.bolt.enabled=true未启用。

Neo4j默认关闭远程Bolt访问,【必须修改conf/neo4j.conf中dbms.connector.bolt.listen_address配置为0.0.0.0:7687】,否则Dify容器内无法建立连接。

重启Neo4j服务:systemctl restart neo4j(Linux)或双击Neo4j Desktop中的“Start”按钮(macOS/Windows)。

在Dify中配置Neo4j连接参数

进入Dify管理后台 → 【Settings】→ 【Data Sources】→ 【Add Data Source】→ 选择【Custom API】。

填写以下字段:

  • Name:输入neo4j-knowledge-graph
  • Base URL:填http://host.docker.internal:7474(Docker部署时)或http://localhost:7474(本地直连)
  • Authentication:选Basic Auth,Username填neo4j,Password填你设置的实际密码

点击【Test Connection】,成功返回{"message":"Neo4j is ready"}即表示基础HTTP通道就绪——这一步仅验证REST API,不涉及Bolt。

编写Python函数节点接入Bolt协议

Dify的Custom API无法直接使用Bolt协议,必须通过Python函数节点调用Neo4j Python Driver。

在Dify工作流编辑器中,添加一个【Python Code】节点,粘贴以下代码:

from neo4j import GraphDatabase
import os
<h1>从Dify环境变量读取配置,避免硬编码</h1><p>uri = os.getenv("NEO4J_URI", "bolt://host.docker.internal:7687")
user = os.getenv("NEO4J_USER", "neo4j")
password = os.getenv("NEO4J_PASSWORD", "your_password")</p><p>driver = GraphDatabase.driver(uri, auth=(user, password))</p><div class="aritcle_card flexRow artxards">
											<div class="artcardd flexRow">
												<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill1763" title="dify-code-interpreter"><img
														src="https://img.php.cn/upload/skill/000/000/081/178851246754770.jpg" alt="dify-code-interpreter" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
												<div class="aritcle_card_info flexColumn">
													<a rel="nofollow" href="/xiazai/skill1763" title="dify-code-interpreter" class="overflowclass">dify-code-interpreter</a>
													<p class="overflowclass">解释任意编程语言代码的语法、逻辑、用途与实现细节,支持多语言并返回结构化说明。</p>
												</div>
												<a rel="nofollow" href="/xiazai/skill1763" title="dify-code-interpreter" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
												</a>
											</div>
										</div><p>def run_cypher(query: str, params: dict = None):
with driver.session() as session:
result = session.run(query, params or {})
return [record.data() for record in result]
</p>

在该节点的【Environment Variables】区域,手动添加三条变量:

  • NEO4J_URI = bolt://host.docker.internal:7687(Docker部署)或bolt://localhost:7687(本地开发)
  • NEO4J_USER = neo4j
  • NEO4J_PASSWORD = your_actual_password

【NEO4J_URI必须用host.docker.internal而非localhost,否则Dify容器无法解析宿主机服务】

构建支持多跳关联的Cypher查询逻辑

第一步:提取用户提问中的核心实体

第二步:将实体名作为参数传入预编译Cypher模板,避免字符串拼接注入风险

第三步:执行带深度限制的关系遍历,例如查找“张三”两跳内的所有合作项目与负责人:

MATCH (n:Person {name: $entity})-[:WORKED_ON|MANAGED*1..2]-(related)
RETURN DISTINCT related.name AS name, labels(related) AS type, count(*) AS relevance
ORDER BY relevance DESC LIMIT 10

第四步:将结果结构化为JSON列表,供后续LLM提示词注入使用

第五步:在Dify工作流中,将此Python节点输出绑定至RAG Prompt的{{knowledge}}占位符

启用Neo4j向量索引加速语义匹配

方法一:在Neo4j Browser中执行建模命令,为Chunk节点的embedding属性创建余弦相似度索引:

CALL db.index.vector.createNodeIndex(
  'chunk_embedding_index',
  'Chunk',
  'embedding',
  384,
  'cosine'
)

方法二:在Python函数节点中封装向量检索函数,接收Dify生成的文本嵌入向量并执行近邻搜索:

def vector_search(embedding: list, top_k: int = 3):
    query = """
    CALL db.index.vector.queryNodes('chunk_embedding_index', $top_k, $embedding)
    YIELD node, score
    RETURN node.content AS content, score
    ORDER BY score DESC
    """
    return run_cypher(query, {"embedding": embedding, "top_k": top_k})

调用时确保传入的embedding是长度为384的float列表,与索引维度严格一致,否则Neo4j会报Invalid input错误。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

dify

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Dify 本地部署与企业配置
Dify 本地部署与企业配置

本专题系统讲解 Dify 从零开始的本地部署方法与企业环境配置实践,涵盖 Docker 安装、依赖准备、数据库初始化、反向代理、参数调优、安全加固与多用户开通,帮助开发者与企业团队快速搭建稳定可用的 Dify 平台。

2026.06.05

357

15

Dify Agent智能体开发实战教程
Dify Agent智能体开发实战教程

本专题聚焦 Dify Agent 智能体的设计与开发,涵盖 Agent 模式选择、工具集成、提示词设计、多步推理、上下文记忆与多 Agent 协作,帮助开发者构建可执行复杂业务任务的智能体应用。

2026.06.05

205

15

Dify RAG知识库构建实战教程
Dify RAG知识库构建实战教程

本专题围绕 Dify RAG 知识库的全流程实践展开,从文档导入、分段切片、向量化到混合检索、重排优化与召回评估,帮助你打造高准确率、低幻觉的企业知识问答应用。

2026.06.05

196

15

NumPy数组创建索引切片与数据选择
NumPy数组创建索引切片与数据选择

本专题整理 NumPy 数组创建、索引、切片与数据选择相关教程,覆盖 np.array、zeros/ones、多维数组形状、基础切片、花式索引、布尔索引、条件筛选、视图与副本等常用场景,帮助读者系统掌握 ndarray 数据构造与高效提取方法。

2026.09.21

0

12

Aionclaw智能助手介绍
Aionclaw智能助手介绍

本专题汇总了AionClaw(AI龙虾助手)的功能介绍与在线使用入口。AionClaw是杭州趣猿人工智能有限公司推出的桌面级AI智能体,能直接在电脑上读写文件、运行脚本、操作浏览器,自动交付Word、PPT、Excel等成品。

2026.09.20

20

13

AionClaw AI智能体与电脑自动化任务执行功能使用教程
AionClaw AI智能体与电脑自动化任务执行功能使用教程

AionClaw专题整理AI智能体与电脑自动化相关功能使用教程,涵盖安装部署、AI任务执行、Skills技能、文件处理、浏览器控制、电脑操作、持久记忆、聊天工具连接以及办公、编程和内容创作等功能,帮助用户快速掌握AionClaw的实际使用方法。

2026.09.20

0

15

AI视频生成软件推荐
AI视频生成软件推荐

本专题汇总了当前主流的AI视频生成软件推荐与排行榜单,涵盖seko、AniShort、剧云、Lovart、LiblibAI及立刻mv等热门工具。同时整理了各软件在文生视频、图生视频、时长限制、画质表现及免费额度等方面的差异对比,助您快速选对适合创作需求的AI视频生成工具。

2026.09.16

180

9

ai生成视频的工具免费版合集
ai生成视频的工具免费版合集

本专题汇总了当前免费AI生成视频工具的排行榜与推荐清单,涵盖seko、讯飞智作、AniShort及剧云、Lovart等多模型集成平台。同时整理了各工具的免费额度、输出时长、水印政策及适用场景差异,助您快速选择合适工具开启AI视频创作。

2026.09.16

100

10

Pandas时间序列分析与可视化报表
Pandas时间序列分析与可视化报表

本专题整理Pandas日期转换、时间索引、重采样、滚动窗口、时区处理、plot绘图、Styler表格样式和报表输出方法。

2026.09.16

80

23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Dify零基础教程
Dify零基础教程

共0课时 | 136人学习

学习Agent,从Dify开始
学习Agent,从Dify开始

共0课时 | 123人学习

Dify 部署与运维指南
Dify 部署与运维指南

共0课时 | 0人学习