图谱增强 RAG Agent
agent-graphrag


演示地址:graphrag-demo.canoeagent.com Key:(为防止 Key 滥用,请在履历页面或联系站长获取) 提示:刷新或重开页面页面均需要输入 Key 建议:PC 或平板电脑等宽屏设备访问效果最佳 操作指南.txt
图谱浏览器

技术栈 & 外部 API
Agent GraphRAG 是一个基于 LLM + Milvus 向量检索 + ES 关键词检索 + Neo4j 知识图谱三路融合的医学知识增强问答系统,支持文档上传后自动提取药品、疾病、症状等医学实体及关系并构建知识图谱,通过向量语义检索、全文关键词检索与图谱多跳推理的加权融合搜索,结合智能体工具链(图谱推理、实体探索、文档管理),实现可溯源、可推理的专业医学问答与知识探索。
Agent 工具集(LLM Function Calling)
| 工具 | 功能 |
|---|---|
| search_graphrag | 三路融合搜索(文档 + 图谱) |
| explore_entity | 探索某实体在 Neo4j 中的关联关系 |
| graph_reason | 多跳图谱推理(如 A → B → C 间接关系) |
| ingest_document | 导入文档并自动提取实体/关系建图 |
| list_documents | 列出知识库中的文档列表 |
后端技术栈
| 类别 | 技术/库 | 用途 |
|---|---|---|
| 语言 | Go 1.25.8 | 主开发语言 |
| CLI 框架 | spf13/cobra | 命令行解析,支持 serve / ingest 子命令 |
| HTTP 服务 | Go 标准库 net/http | REST API 服务 + 静态文件托管 |
| HTTP 客户端 | go-resty/resty/v2 | 调用 LLM API 和 Embedding API |
| 配置解析 | gopkg.in/yaml.v3 | YAML 配置文件读取 |
| UUID | google/uuid | 文档 ID 生成 |
HTTP 中间件(自实现)
| 中间件 | 职责 |
|---|---|
| CORS | 允许跨域(Access-Control-Allow-Origin: *),OPTIONS 预检 |
| Auth | Bearer Token 鉴权(Authorization: Bearer |
| Management Auth | 管理密钥鉴权(X-Management-Key 请求头),保护上传/删除接口 |
前端技术栈
| 类别 | 技术 | 用途 |
|---|---|---|
| UI | 原生 HTML + CSS | 纯手写,无框架,响应式布局 |
| 交互逻辑 | 原生 JavaScript (ES6+) | 会话管理、文档上传、图谱交互 |
| 图谱可视化 | vis-network (vis-network.min.js) | 力导向图展示知识图谱节点和关系 |
| 跨页面通信 | BroadcastChannel API | 从 index.html → graph.html 安全传递 API Key |
外部 API 调用
| 服务 | 用途 | 说明 |
|---|---|---|
| DeepSeek API | LLM 对话 | 对话生成 & Function Calling(模型: deepseek-chat) |
| 智谱 GLM Embedding API | 文本向量化 | 文本向量化(模型: embedding-3,维度 1024) |
中间件
| 组件 | SDK | 协议 | 角色 |
|---|---|---|---|
| Neo4j | neo4j-go-driver/v5 | Bolt 协议 | 知识图谱 — 存储医学实体(药品/疾病/症状等)及关系,支持子图检索、BFS 展开、多跳路径发现 |
| Milvus | milvus/client/v2 | gRPC | 向量检索引擎 — 语义相似度检索 |
| Elasticsearch | go-elasticsearch/v8 | HTTP REST | 全文检索引擎 — 关键词 BM25 检索 |
| MemoryEngine | 内置(Go 内存) | 进程内 | 离线降级引擎 — 关键词匹配检索,无需外部依赖 |
三路融合权重:向量 ×1.0 + 关键词 ×1.0 + 图谱 ×1.5,图谱检索后还会 BFS 展开关联实体。