6c1a69af0d
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
4.3 KiB
4.3 KiB
系统架构文档
整体架构
本系统采用模块化设计,参考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