Document

Ragflow知识图谱构建

一、核心文件分析

1.1 graphrag/light/graph_prompt.py

  • 定义提示词模板,参考 LightRAG 的 prompt 设计
  • 关键提示词:
  • entity_extraction: 实体和关系提取的主提示词
  • entity_continue_extraction: 继续提取遗漏的实体和关系
  • entity_if_loop_extraction: 判断是否还有遗漏的实体
  • rag_response: 基于知识图谱生成回答
  • keywords_extraction: 关键词提取(高级和低级关键词)

1.2 graphrag/light/graph_extractor.py

主要流程:

1、初始化:设置提示词模板、实体类型、分隔符等

2、处理单个文档块:_process_single_content

  • 使用 LLM 提取实体和关系
  • 支持多轮提取(gleaning)以补全遗漏
  • 通过循环判断是否还有遗漏的实体

3、解析结果:将 LLM 输出解析为节点和边

1.3 流程执行

文档块 (Chunks)

​ ↓

实体提取 (Entity Extraction)

​ ↓

关系提取 (Relationship Extraction)

​ ↓

多轮补全 (Gleaning Loop)

​ ↓

构建知识图谱 (Graph Construction)

​ ↓

存储到 Elasticsearch/Infinity

1.4 提取特性

  • 实体:("entity"<|>实体名称<|>实体类型<|>实体描述)
  • 关系:("relationship"<|>源实体<|>目标实体<|>关系描述<|>关系关键词<|>关系强度)

1.5 集成方式

# 根据配置选择使用 LightRAG 还是 General 方法
kg_extractor = LightKGExt if (
    "method" not in kb_parser_config.get("graphrag", {}) 
    or kb_parser_config["graphrag"]["method"] != "general"
) else GeneralKGExt

1.6 配置选项

  • Method: 选择 "Light"(默认)或 "General"
  • Entity types: 指定要提取的实体类型(如 organization, person, geo, event, category)
  • Entity resolution: 是否启用实体消歧
  • Community reports: 是否生成社区报告

1.7 输出格式

  • 实体(Entities):名称、类型、描述

  • 关系(Relationships):源实体、目标实体、关系描述、关系关键词、关系强度

  • 内容关键词(Content Keywords):文档的高级主题关键词

posted @ 2025-11-19 10:46  阿辉ya  阅读(25)  评论(0)    收藏  举报