基于 Neo4j + DashScope Qwen-Max 的 High-Level Graph RAG 系统。
文本输入 → LLM三元组抽取 → Neo4j知识图谱(含向量索引)
↓
GDS Louvain 社区发现
↓
社区摘要报告生成
↓
查询路由 (LOCAL / GLOBAL)
↙ ↘
混合检索 Map-Reduce
(向量搜索+2跳图扩展) (社区摘要聚合)
↘ ↙
LLM 生成最终回答
| 组件 | 说明 |
|---|---|
| Neo4j 5.11+ | 需要支持 Vector Index |
| Neo4j GDS 插件 | Louvain 社区发现算法 |
| DashScope API Key | 阿里云百炼平台 Qwen-Max |
pip install -r requirements.txt通过环境变量配置:
export DASHSCOPE_API_KEY="sk-your-key-here"
export NEO4J_URI="bolt://localhost:7687"
export NEO4J_USER="neo4j"
export NEO4J_PASSWORD="your-password"python graph_rag_brain.pyfrom graph_rag_brain import GraphRAGBrain
with GraphRAGBrain() as brain:
# 1. 构建知识图谱
brain.build_knowledge_graph("你的文本内容...")
# 2. 社区发现 + 报告
brain.detect_communities()
brain.generate_community_reports()
# 3. 查询(自动路由 LOCAL/GLOBAL)
answer = brain.query("王总在天府五街做了什么?")| 方法 | 功能 |
|---|---|
build_knowledge_graph(text) |
从文本抽取三元组,构建带向量索引的知识图谱 |
detect_communities() |
通过 Neo4j GDS Louvain 算法进行社区划分 |
generate_community_reports() |
为每个社区生成 LLM 摘要报告 |
hybrid_search(query) |
向量搜索 Top-3 + 2跳图扩展 + LLM 合成 |
local_search(query) |
面向特定实体的精确检索 |
global_search(query) |
基于社区摘要的 Map-Reduce 聚合 |
router(query) |
LLM 查询分类器(LOCAL / GLOBAL) |
query(query) |
主入口:自动路由 + 回答 |
Person · Org · Project · Event · Location
每个 Entity 节点均包含 embedding 属性用于语义搜索。