Neo4j 是全球最主流、原生高性能属性图数据库 ,专门存储节点 - 关系 - 属性 的图结构数据,是 GraphRAG、知识图谱、多跳推理系统的标准底层存储底座。
一、核心定义与数据模型
1. 原生图数据库
底层物理存储就是图结构,不是 MySQL 套图插件,遍历多跳关系毫秒级,远超关系型数据库 JOIN 查询。
2. 三大核心元素(属性图标准)
- 节点 Node:实体(人物、技术、文档、代码模块、概念)
- 关系 Relationship:实体关联(属于、调用、依赖、合作、引用)
- 属性 Property:节点 / 关系附带键值信息(描述、时间、来源、向量)
3. 查询语言:Cypher
类 SQL 语法、可视化图匹配,专门做路径遍历、多跳查询
# 查找A依赖的所有2跳技术路径
MATCH (a:Code)-[:DEPENDS]->(b)-[:USES]->(c) RETURN a,b,c
二、核心优势(对比 MySQL / 向量库)
- 多跳关系极速查询 MySQL 多层 JOIN 指数变慢;Neo4j 天生邻接存储,N 跳关联毫秒返回,完美适配 GraphRAG 多跳推理。
- 结构灵活无表约束不用建表、不用外键,新增实体 / 关系无需改库结构,适配文档动态抽取知识图谱。
- 企业级稳定 支持ACID 事务、集群高可用、持久化、备份恢复,可上生产环境。
- 可视化 + 图算法自带 Neo4j Browser 图形可视化;内置路径、聚类、社区发现算法,匹配 GraphRAG 社区分层检索。
- AI 生态无缝打通 原生适配 LlamaIndex、LangChain、微软 GraphRAG,一键做文本→知识图谱→图检索 RAGNeo4j。
三、Neo4j 在 GraphRAG 里的角色(你项目核心)
传统 RAG:向量库 → 文本块语义匹配GraphRAG:Neo4j(知识图谱)+ 向量库 双存储
- LlamaIndex 从文档抽取实体 + 关系,写入 Neo4j 构建属性图
- 用户提问 → LLM 转 Cypher → Neo4j 做多跳路径检索
- 结合向量语义召回 + 图结构化关联,拼接上下文给 LLM
- 输出可溯源、可推理、低幻觉的问答结果Neo4j
四、Neo4j vs 向量数据库(Milvus/Chroma)
表格
| 对比项 | Neo4j 图数据库 | 向量数据库 |
|---|---|---|
| 存储单元 | 节点、关系、路径 | 文本向量 |
| 擅长能力 | 关系推理、多跳链路、全局关联 | 语义相似度模糊匹配 |
| GraphRAG 定位 | 结构化知识底座 | 语义补充检索 |
| 幻觉控制 | 极强(显式关系约束) | 一般 |
| 适用场景 | 复杂代码依赖、论文引用、企业关联知识 | 普通文档问答、摘要 |
五、LlamaIndex + Neo4j 极简实战代码
# 安装依赖
pip install llama-index llama-index-graph-stores-neo4j
# 连接Neo4j + 构建知识图谱索引
from llama_index.graph_stores.neo4j import Neo4jPropertyGraphStore
from llama_index.core import PropertyGraphIndex, SimpleDirectoryReader
# 连接本地Neo4j
graph_store = Neo4jPropertyGraphStore(
url="bolt://localhost:7687",
username="neo4j",
password="你的密码"
)
# 加载文档→自动抽实体关系→写入Neo4j
docs = SimpleDirectoryReader("./code_docs").load_data()
index = PropertyGraphIndex.from_documents(docs, graph_store=graph_store)
# 图检索问答(多跳推理)
query_engine = index.as_query_engine()
print(query_engine.query("这个模块依赖哪些底层组件?调用链路是什么"))
六、典型落地场景
- GraphRAG 企业知识库、学术论文关联图谱
- 代码依赖图谱、项目架构溯源(你的 CodeFlow-AI)
- 社交网络、风控关联链路、供应链上下游
- 法律法条关联、医疗疾病因果推理