Initial: integrated 2025 LawGraph (graphrag_pipeline) + 2026 kg_project
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,199 @@
|
||||
# 系统架构文档
|
||||
|
||||
## 整体架构
|
||||
|
||||
本系统采用模块化设计,参考GraphRAG的实现思路,实现法规知识图谱的构建、分析和查询。
|
||||
|
||||
## 核心模块说明
|
||||
|
||||
### 1. 文本预处理模块 (`src/preprocessing/`)
|
||||
|
||||
**职责**:处理法规文档,为知识抽取做准备
|
||||
|
||||
- `TextProcessor`: 使用HanLP进行中文文本处理
|
||||
- 分词(粗粒度/细粒度)
|
||||
- 依存句法分析
|
||||
- 句法成分分析
|
||||
- 词性标注
|
||||
- 省略检测
|
||||
- 共指消解候选提取
|
||||
|
||||
- `DocumentParser`: 解析Word文档
|
||||
- .docx文件解析
|
||||
- 章节结构识别
|
||||
- TextUnit切分(参考GraphRAG)
|
||||
|
||||
### 2. 本体模型模块 (`src/ontology/`)
|
||||
|
||||
**职责**:定义知识图谱的语义结构
|
||||
|
||||
- `EntityType`: 9种实体类型枚举
|
||||
- `RelationType`: 8种关系类型枚举
|
||||
- `OntologySchema`: 三维本体结构管理
|
||||
- 法规层级维度
|
||||
- 要素类型维度
|
||||
- 关联关系维度
|
||||
- 四要素架构(目标—原则—要素—管控)
|
||||
|
||||
### 3. Prompt模板模块 (`src/prompts/`)
|
||||
|
||||
**职责**:构建统一的Prompt模板系统
|
||||
|
||||
- `PromptTemplate`: 统一模板框架
|
||||
- 任务描述模块
|
||||
- 候选目标模块
|
||||
- 任务示例模块(少样本学习)
|
||||
- 任务强调模块
|
||||
- 二次对话模块
|
||||
|
||||
- `NERPromptBuilder`: NER任务Prompt构建
|
||||
- `REPromptBuilder`: RE任务Prompt构建
|
||||
|
||||
### 4. 知识抽取模块 (`src/extraction/`)
|
||||
|
||||
**职责**:从文本中提取结构化知识
|
||||
|
||||
- `NERExtractor`: 命名实体识别
|
||||
- 使用Qwen-Max模型
|
||||
- 两阶段对话验证
|
||||
- JSON格式输出
|
||||
|
||||
- `REExtractor`: 关系抽取
|
||||
- 多模型并行(GPT-4o, Doubao-pro, GLM-4)
|
||||
- 二次对话验证
|
||||
- 句法信息集成
|
||||
- 上下文利用
|
||||
|
||||
- `TripletEvaluator`: 三元组评估
|
||||
- LLM-as-a-Judge方法
|
||||
- 成对排序
|
||||
- 五维度评分(语义准确性、一致性、事实性、准确性、可理解性)
|
||||
- 低质量三元组筛选
|
||||
|
||||
- `EntityRelationClassifier`: 实体关系分类
|
||||
- RAG-based分类(使用向量检索)
|
||||
- Prompt-based分类
|
||||
- 粗粒度和细粒度分类
|
||||
|
||||
### 5. 知识图谱构建模块 (`src/kg_builder/`)
|
||||
|
||||
**职责**:构建和管理知识图谱(参考GraphRAG)
|
||||
|
||||
- `GraphIndexer`: 图谱索引器
|
||||
- 文本切分为TextUnit
|
||||
- 实体和关系提取
|
||||
- 图构建
|
||||
- 社区检测(Leiden算法)
|
||||
- 社区摘要生成
|
||||
|
||||
- `KnowledgeGraph`: 图谱结构管理
|
||||
- 基于NetworkX
|
||||
- 三元组添加
|
||||
- 路径查询
|
||||
- 子图提取
|
||||
- 保存/加载
|
||||
|
||||
### 6. 分析和推理模块 (`src/analysis/`)
|
||||
|
||||
**职责**:分析法规体系和识别规律
|
||||
|
||||
- `LegalStructureExtractor`: 法理结构提取
|
||||
- 四要素提取(目标、原则、要素、管控)
|
||||
- 跨法规引用关系提取
|
||||
- 例外条款识别
|
||||
|
||||
- `LegalReasoner`: 逻辑推理
|
||||
- 路径查询(多跳关系)
|
||||
- 中心性分析
|
||||
- 子图分析
|
||||
|
||||
- `EvolutionAnalyzer`: 演化规律识别
|
||||
- 时间维度分析
|
||||
- 关系演化追踪
|
||||
- 网络演化分析
|
||||
|
||||
### 7. 查询系统模块 (`src/query/`)
|
||||
|
||||
**职责**:知识图谱查询和问答(参考GraphRAG)
|
||||
|
||||
- `GlobalSearcher`: 全局搜索
|
||||
- 利用社区摘要
|
||||
- 相关性评估
|
||||
- 综合答案生成
|
||||
|
||||
- `LocalSearcher`: 局部搜索
|
||||
- 实体邻居扩展
|
||||
- 深度控制
|
||||
- 子图提取
|
||||
|
||||
- `DriftSearcher`: DRIFT搜索
|
||||
- 结合局部和全局信息
|
||||
- 社区上下文整合
|
||||
- 综合答案生成
|
||||
|
||||
### 8. 工具模块 (`src/utils/`)
|
||||
|
||||
**职责**:提供通用工具函数
|
||||
|
||||
- `Config`: 配置管理
|
||||
- 环境变量加载
|
||||
- API密钥管理
|
||||
- 参数配置
|
||||
|
||||
- `LLMClient`: LLM客户端封装
|
||||
- 多提供商支持
|
||||
- 统一API接口
|
||||
- 异步/同步支持
|
||||
- 重试机制
|
||||
|
||||
- `file_utils`: 文件操作工具
|
||||
|
||||
## 数据流
|
||||
|
||||
```
|
||||
法规文档(.docx)
|
||||
↓
|
||||
DocumentParser (解析)
|
||||
↓
|
||||
TextUnit列表
|
||||
↓
|
||||
TextProcessor (预处理) + NERExtractor (实体识别)
|
||||
↓
|
||||
实体列表
|
||||
↓
|
||||
REExtractor (关系抽取) + TextProcessor (句法信息)
|
||||
↓
|
||||
三元组列表
|
||||
↓
|
||||
TripletEvaluator (评估筛选)
|
||||
↓
|
||||
高质量三元组
|
||||
↓
|
||||
GraphIndexer (图构建)
|
||||
↓
|
||||
KnowledgeGraph
|
||||
↓
|
||||
社区检测 + 摘要生成
|
||||
↓
|
||||
完整知识图谱 + 社区信息
|
||||
↓
|
||||
Query系统 (查询和问答)
|
||||
```
|
||||
|
||||
## 技术栈
|
||||
|
||||
- **语言**: Python 3.12+
|
||||
- **包管理**: uv
|
||||
- **NLP**: HanLP
|
||||
- **图处理**: NetworkX, python-igraph
|
||||
- **LLM**: OpenAI, Anthropic, Qwen, Doubao, GLM
|
||||
- **数据处理**: pandas, numpy
|
||||
|
||||
## 参考实现
|
||||
|
||||
- GraphRAG: https://msdocs.cn/graphrag/
|
||||
- 论文方法: `officefile/paper.tex`
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user