引言
GraphRAG(Knowledge Graph RAG)的发布在技术界引起了广泛关注,它通过将非结构化文本转化为结构化的知识图谱,显著增强了大模型对复杂查询的理解能力。Neo4j 作为全球领先的图数据库,为存储和查询这些图谱提供了强大的支持。本文将详细介绍如何将 GraphRAG 生成的索引结果导入 Neo4j,实现数据的持久化存储与可视化展示。
环境准备
本教程依赖两部分核心环境:GraphRAG 运行环境(假设已生成输出)和 Neo4j 图数据库。重点在于 Neo4j 的快速部署。为了简化配置,我们使用 Docker 容器化安装,并启用 APOC 插件以增强功能。
1. 启动 Neo4j 容器
执行以下命令一键搭建 Neo4j 运行环境。该命令映射了 HTTP 端口 7474 和 Bolt 端口 7687,并启用了必要的 APOC 配置。
docker run \
-p 7474:7474 -p 7687:7687 \
--name neo4j-apoc \
-e NEO4J_apoc_export_file_enabled=true \
-e NEO4J_apoc_import_file_enabled=true \
-e NEO4J_apoc_import_file_use__neo4j__config=true \
-e NEO4J_PLUGINS=["apoc"] \
neo4j:5.21.2
2. 验证安装
启动成功后,日志中应显示服务就绪信息。访问 http://localhost:7474,默认账号为 neo4j,初始密码也为 neo4j。首次登录系统会强制要求修改密码,设置完成后即可进入管理界面。
Python 环境配置
在开始数据导入前,需要确保 Python 环境中安装了必要的依赖库。主要涉及 Pandas 用于数据处理,以及 Neo4j 官方驱动库。
pip3 install --quiet pandas neo4j-rust-ext
连接与 Schema 设计
1. 建立数据库连接
使用 neo4j 驱动创建会话对象。需替换为你的实际 URI、用户名和密码。
import pandas as pd
from neo4j import GraphDatabase
import time
NEO4J_URI = "neo4j://localhost"
NEO4J_USERNAME = "neo4j"
NEO4J_PASSWORD = "your_password_here"
NEO4J_DATABASE = "neo4j"
driver = GraphDatabase.driver(NEO4J_URI, auth=(NEO4J_USERNAME, NEO4J_PASSWORD))
2. 定义唯一约束
为了保证数据完整性,避免重复节点或关系,我们需要在导入前创建唯一性约束。这包括文档 ID、Chunk ID、实体 ID 等。
statements = [
"create constraint chunk_id if not exists for (c:__Chunk__) require c.id is unique;",
"create constraint document_id if not exists for (d:__Document__) require d.id is unique;",
,
,
,
,
]
statement statements:
((statement ).strip()) > :
(statement)
driver.execute_query(statement)


