You've already forked DataMate
核心功能: - G6 v5 力导向图,支持交互式缩放、平移、拖拽 - 5 种布局模式:force, circular, grid, radial, concentric - 双击展开节点邻居到图中(增量探索) - 全文搜索,类型过滤,结果高亮(变暗/高亮状态) - 节点详情抽屉:实体属性、别名、置信度、关系列表(可导航) - 关系详情抽屉:类型、源/目标、权重、置信度、属性 - 查询构建器:最短路径/全路径查询,可配置 maxDepth/maxPaths - 基于 UUID 的图加载(输入或 URL 参数 ?graphId=...) - 大图性能优化(200 节点阈值,超过时禁用动画) 新增文件(13 个): - knowledge-graph.model.ts - TypeScript 接口,匹配 Java DTOs - knowledge-graph.api.ts - API 服务,包含所有 KG REST 端点 - knowledge-graph.const.ts - 实体类型颜色、关系类型标签、中文显示名称 - graphTransform.ts - 后端数据 → G6 节点/边格式转换 + 合并工具 - graphConfig.ts - G6 v5 图配置(节点/边样式、行为、布局) - hooks/useGraphData.ts - 数据钩子:加载子图、展开节点、搜索、合并 - hooks/useGraphLayout.ts - 布局钩子:5 种布局类型 - components/GraphCanvas.tsx - G6 v5 画布,力导向布局,缩放/平移/拖拽 - components/SearchPanel.tsx - 全文实体搜索,类型过滤 - components/NodeDetail.tsx - 实体详情抽屉 - components/RelationDetail.tsx - 关系详情抽屉 - components/QueryBuilder.tsx - 路径查询构建器 - Home/KnowledgeGraphPage.tsx - 主页面,整合所有组件 修改文件(5 个): - package.json - 添加 @antv/g6 v5 依赖 - vite.config.ts - 添加 /knowledge-graph 代理规则 - auth/permissions.ts - 添加 knowledgeGraphRead/knowledgeGraphWrite - pages/Layout/menu.tsx - 添加知识图谱菜单项(Network 图标) - routes/routes.ts - 添加 /data/knowledge-graph 路由 新增文档(10 个): - docs/knowledge-graph/ - 完整的知识图谱设计文档 Bug 修复(Codex 审查后修复): - P1: 详情抽屉状态与选中状态不一致(显示旧数据) - P1: 查询构建器未实现(最短路径/多路径查询) - P2: 实体类型映射 Organization → Org(匹配后端) - P2: getSubgraph depth 参数无效(改用正确端点) - P2: AllPathsVO 字段名不一致(totalPaths → pathCount) - P2: 搜索取消逻辑无效(传递 AbortController.signal) - P2: 大图性能优化(动画降级) - P3: 移除未使用的类型导入 构建验证: - tsc --noEmit ✅ clean - eslint ✅ 0 errors/warnings - vite build ✅ successful
155 lines
4.3 KiB
Markdown
155 lines
4.3 KiB
Markdown
# Gemini 知识图谱分析结果
|
|
|
|
## 分析时间
|
|
2026-02-17
|
|
|
|
## 核心建议
|
|
|
|
### 1. GraphRAG 融合方案(独特贡献)
|
|
|
|
**创新点**:将知识图谱与现有 RAG 系统深度融合
|
|
|
|
**实现方案**:
|
|
- 在 `rag-query-service` 中增加"混合检索"模式
|
|
- 查询时同时检索 Milvus(向量)+ Neo4j(图结构)
|
|
- 将 2-hop 子图的三元组文本化后作为 Context 喂给 LLM
|
|
|
|
**优势**:
|
|
- 充分利用现有的 Milvus 向量检索能力
|
|
- 结合向量相似度和图结构关系
|
|
- 提供更丰富的上下文信息
|
|
|
|
### 2. LangChain 集成方案
|
|
|
|
**技术路径**:
|
|
- 利用 LangChain 的 `LLMGraphTransformer` 实现自动抽取
|
|
- 在 `runtime/datamate-python` 中实现
|
|
- API: `POST /graph/extract`,输入文本,输出节点和边
|
|
|
|
**实现细节**:
|
|
```python
|
|
from langchain_experimental.graph_transformers import LLMGraphTransformer
|
|
|
|
transformer = LLMGraphTransformer(
|
|
llm=llm,
|
|
allowed_nodes=["Dataset", "Field", "Workflow"],
|
|
allowed_relationships=["HAS_FIELD", "USES"]
|
|
)
|
|
|
|
graph_documents = transformer.convert_to_graph_documents([document])
|
|
```
|
|
|
|
### 3. 数据建模增强
|
|
|
|
**核心元模型**:
|
|
- **Entity**:增加 `embedding` 字段(节点的向量表示)
|
|
- **Document**:新增节点类型,用于溯源
|
|
- **关系**:`(Entity)-[MENTIONED_IN]->(Document)`
|
|
|
|
**优势**:
|
|
- 支持向量检索与图检索的混合
|
|
- 方便溯源,追踪实体来源
|
|
- 提升检索准确性
|
|
|
|
### 4. 实施路线图(3 阶段)
|
|
|
|
#### 第一阶段:基础设施与基础抽取 (MVP)
|
|
1. 环境搭建:在 `deployment/docker/` 下新建 neo4j 目录
|
|
2. Python 抽取器:利用 LangChain 的 LLMGraphTransformer
|
|
3. 简单存储:直接存入 Neo4j
|
|
|
|
#### 第二阶段:图谱服务与 RAG 融合
|
|
1. Java 服务:创建 `knowledge-graph-service`
|
|
2. GraphRAG:在 `rag-query-service` 中增加"混合检索"模式
|
|
- 查询时同时检索 Milvus 和 Neo4j(2-hop 子图)
|
|
- 将三元组文本化后作为 Context 喂给 LLM
|
|
|
|
#### 第三阶段:可视化与高级功能
|
|
1. 前端可视化:知识图谱浏览器
|
|
2. 图谱编辑:Human-in-the-loop 修正
|
|
|
|
### 5. 潜在挑战与应对
|
|
|
|
#### 实体歧义
|
|
**问题**:同名实体可能指代不同对象
|
|
|
|
**解决方案**:
|
|
- 实体对齐步骤
|
|
- 利用 LLM 或向量相似度合并
|
|
- 人工审核机制
|
|
|
|
#### 信息过载(Super Nodes)
|
|
**问题**:某些节点连接过多,查询性能下降
|
|
|
|
**解决方案**:
|
|
- 限制跳数(最大 3 跳)
|
|
- 限制最大边数(最大 1000 条)
|
|
- 分页返回结果
|
|
|
|
#### 幻觉与错误抽取
|
|
**问题**:LLM 可能产生不存在的实体或关系
|
|
|
|
**解决方案**:
|
|
- 置信度评分
|
|
- 人工审核
|
|
- 对比多个模型的结果
|
|
|
|
### 6. 首要行动
|
|
|
|
**基础设施搭建**:
|
|
1. 在 `deployment/docker/` 下创建 neo4j 目录
|
|
2. 编写 docker-compose.yml
|
|
3. 更新 Makefile 支持 Neo4j 的启动
|
|
|
|
**示例配置**:
|
|
```yaml
|
|
version: '3.8'
|
|
services:
|
|
neo4j:
|
|
image: neo4j:latest
|
|
ports:
|
|
- "7474:7474"
|
|
- "7687:7687"
|
|
environment:
|
|
- NEO4J_AUTH=neo4j/datamate123
|
|
volumes:
|
|
- neo4j_data:/data
|
|
volumes:
|
|
neo4j_data:
|
|
```
|
|
|
|
## 与其他工具的对比
|
|
|
|
| 维度 | Gemini | Codex | Claude |
|
|
|------|--------|-------|--------|
|
|
| **技术选型** | Neo4j | Neo4j/JanusGraph | Neo4j |
|
|
| **架构重点** | GraphRAG 融合 | 3个新模块 | 复用现有基础设施 |
|
|
| **数据建模** | 灵活Schema+embedding | 10类实体+6类关系 | Schema先行+版本管理 |
|
|
| **实现路径** | 3阶段(MVP优先) | 4阶段(0-3) | 4阶段 |
|
|
| **独特优势** | LangChain+RAG融合 | 详细的领域模型 | 深度集成现有系统 |
|
|
|
|
## 关键洞察
|
|
|
|
1. **GraphRAG 是核心创新**:Gemini 提出的混合检索方案特别适合 DataMate 现有的 RAG 架构
|
|
2. **LangChain 简化开发**:利用现成的 LLMGraphTransformer 可以快速实现抽取功能
|
|
3. **向量 + 图结构**:embedding 字段的引入使得向量检索和图检索可以无缝结合
|
|
4. **MVP 优先**:强调先做基础设施,再逐步扩展功能
|
|
|
|
## 建议采纳度
|
|
|
|
**强烈推荐**:
|
|
- ✅ GraphRAG 融合方案
|
|
- ✅ LangChain 集成
|
|
- ✅ embedding 字段
|
|
- ✅ Document 节点
|
|
|
|
**可选**:
|
|
- ⚠️ 3 阶段实施路线(可与其他工具的 4 阶段结合)
|
|
|
|
## 相关文档
|
|
|
|
- [总体方案](../README.md)
|
|
- [架构设计](../architecture.md)
|
|
- [Codex 分析结果](./codex.md)
|
|
- [Claude 分析结果](./claude.md)
|