一个全栈 Graph RAG(检索增强生成)应用,能够从文档中自动构建知识图谱,并通过 LLM 驱动的对话界面进行智能问答。
- 知识图谱自动构建:上传 CSV、TXT、JSON、TTL 或纯文本文件,系统通过大模型自动抽取实体与关系三元组,经知识融合后导入 Neo4j 图数据库
- 增量知识追加:支持向已有知识库增量追加新文件,快照机制保证数据一致性
- Graph RAG 智能问答:混合向量相似度检索(pgvector)与多跳图遍历,构建子图上下文,由 LLM 生成精准回答
- 流式对话:基于 SSE 的流式回答,支持 Markdown 渲染(含数学公式与代码高亮)
- 知识图谱可视化:以交互式网络图形式展示知识图谱,支持节点搜索与关系路径探索
- 用户系统:注册/登录(bcrypt + JWT),对话历史云端同步,匿名用户回退至本地存储
- 个人记忆图谱:登录用户可启用记忆模式,系统自动从对话中提取个人信息构建画像图谱,跨会话持久化
- 管理后台:可视化流水线构建器、实时日志查看、用户管理(admin 专属)
- 深色/浅色主题切换
- Python 3.11+ / aiohttp — 异步 Web 服务
- LangChain + OpenAI SDK — LLM 编排(对话、三元组抽取、关系发现、知识融合)
- Neo4j (≥5.0) — 图数据库,存储知识图谱
- PostgreSQL + pgvector — 关系型数据 + 向量嵌入,用于实体/关系融合中的语义相似度匹配
- bcrypt + PyJWT — 用户认证
- React 19 + TypeScript + Vite
- Cytoscape.js — 交互式知识图谱可视化
- Recharts — 统计图表
- react-markdown + KaTeX — 富文本回答渲染(支持数学公式与代码高亮)
运行前需要准备以下外部服务:
| 服务 | 用途 |
|---|---|
| OpenAI 兼容 API | LLM 对话模型 + Embedding 模型 |
| Neo4j (≥5.0) | 图数据库 |
| PostgreSQL (带 pgvector 扩展) | 关系数据 + 向量存储 |
cp .env.example .env编辑 .env,填写必填项:
# LLM 配置(必填)
OPENAI_API_KEY=sk-xxx
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_CHAT_MODEL=gpt-4o-mini
OPENAI_EMBEDDING_MODEL=text-embedding-3-large
# Neo4j 配置(必填)
NEO4J_HOST=localhost
NEO4J_PORT=7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=your-password
NEO4J_DATABASE=neo4j
# PostgreSQL 配置(必填)
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_USER=postgres
POSTGRES_PASSWORD=your-password
POSTGRES_DATABASE=graph_rag
# 认证配置(必填)
PASSWORD_PEPPER=your-random-pepper
JWT_SECRET_KEY=your-jwt-secretdocker compose up -d服务默认监听 http://localhost:8081。
# 安装后端依赖
pip install -r requirement.txt
# 启动后端(端口 8081)
cd src && python main.py
# 前端开发服务器(另一个终端,端口 5173)
cd client && npm install && npm run dev开发时需在 .env 中设置 CORS_ALLOW_ORIGIN=http://localhost:5173。
| 方法 | 路径 | 说明 |
|---|---|---|
| GET/POST | /api/pipelines |
列出/构建知识库流水线 |
| POST | /api/pipelines/{id}/append |
向已有知识库追加文件 |
| GET | /api/pipelines/{id}/graph |
获取图谱可视化数据 |
| GET | /api/pipelines/{id}/logs |
获取流水线执行日志 |
| POST | /api/qa/ask/stream |
流式问答(SSE) |
| POST | /api/auth/register |
用户注册 |
| POST | /api/auth/login |
用户登录 |
| POST | /api/memory/trigger |
从对话触发记忆提取 |
| GET/DELETE | /api/memory/memories |
查看/删除用户记忆 |
| GET/POST/DELETE | /api/conversations |
对话历史管理 |
| GET/DELETE | /api/admin/users |
用户管理(admin) |
.
├── src/ # 后端源码
│ └── app/
│ ├── main.py # 入口
│ ├── adapters/ # 数据源适配器(CSV/JSON/TXT/TTL)
│ ├── graph_rag/ # Graph RAG 检索与问答
│ ├── knowledge/ # 三元组抽取、关系发现、知识融合、向量控制
│ ├── llm/ # LLM 控制器、对话记忆、Prompt 模板
│ ├── neo4j_driver/ # Neo4j 连接与图谱导入
│ ├── pipeline/ # 知识图谱构建流水线
│ ├── postgres_driver/# PostgreSQL 连接与各数据仓库
│ ├── routes/ # API 路由与中间件
│ ├── user_profile/ # 用户认证、记忆服务
│ └── utils/ # 工具(日志、调度器)
├── client/ # 前端源码(React + TypeScript)
│ └── src/
│ └── components/ # UI 组件(对话面板、图谱查看器、流水线构建器等)
├── docker-compose.yml
├── Dockerfile
├── requirement.txt
└── .env.example