Files
SI_KG_2026_PlanningLaw/dofile/graphrag_pipeline/docs/ARCHITECTURE.md
T

4.3 KiB
Raw Blame History

系统架构文档

整体架构

本系统采用模块化设计,参考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

参考实现