菜单

知识图谱集成

相关源文件

本文档介绍了 RAGFlow 的 GraphRAG 系统,该系统从文档中提取知识图谱,以实现基于图谱的检索和推理。知识图谱集成与传统的向量搜索并行运行,通过实体关系和社区结构来增强文档理解。

有关查询处理和检索机制的信息,请参阅 查询处理。有关可视化代理工作流系统的详细信息,请参阅 代理工作流系统

架构概述

知识图谱集成系统通过实体提取、关系映射和社区检测,将文档内容转化为结构化的图谱表示。该系统支持两种提取方法,并与更广泛的 RAG 管道集成。

来源: graphrag/general/index.py41-123 graphrag/utils.py1-617 graphrag/general/extractor.py1-247

图谱提取方法

系统通过 kb_parser_config.graphrag.method 设置提供两种提取方法。

轻量级图谱提取

轻量级方法使用基于 LightRAG 的简化提示,通过更少的 LLM 调用实现更快的处理。

来源: graphrag/light/graph_extractor.py27-125 graphrag/light/graph_prompt.py8-255

通用图谱提取

通用方法遵循 Microsoft GraphRAG 模式,经过多轮信息提取和结构化实体类型验证。

来源: graphrag/general/graph_extractor.py34-152 graphrag/general/graph_prompt.py8-124

实体和关系处理

Extractor 基类通过并行处理和合并功能处理实体和关系提取。

组件功能目的
handle_single_entity_extraction()解析实体记录验证并结构化实体数据
handle_single_relationship_extraction()解析关系记录创建带有权重的关系对象
_merge_nodes()合并实体合并重复的实体描述
_merge_edges()合并关系聚合关系权重和关键词

来源: graphrag/general/extractor.py36-247 graphrag/utils.py233-277

实体解析

EntityResolution 类使用语义相似度和编辑距离度量来合并相似实体,以减少图谱冗余。

来源: graphrag/entity_resolution.py44-193 graphrag/entity_resolution_prompt.py

社区检测与报告

系统使用 Leiden 算法识别知识图谱中的社区,并生成详细的社区报告。

来源: graphrag/general/community_reports_extractor.py33-155 graphrag/general/leiden.py95-142 graphrag/general/community_report_prompt.py8-158

知识图谱存储与索引

知识图谱存储在 Elasticsearch 中,具有专用的字段映射,可在查询处理期间高效检索。

字段名类型目的
knowledge_graph_kwd关键字标识符:“entity”, “relation”, “graph”, “subgraph”, “community_report”
entity_kwd关键字节点块的实体名称
entity_type_kwd关键字实体类型分类
from_entity_kwd关键字关系块的源实体
to_entity_kwd关键字关系块的目标实体
content_with_weight文本JSON 序列化的图谱数据
source_id关键字对该图谱元素有贡献的文档 ID

来源: graphrag/utils.py432-499 graphrag/utils.py302-378 graphrag/general/index.py276-321

与 RAG 管道的集成

知识图谱系统通过主 run_graphrag() 编排函数与 RAGFlow 的文档处理管道集成。

来源: graphrag/general/index.py41-124 graphrag/general/index.py126-225 rag/utils/redis_conn.py

缓存与性能优化

该系统实现了多个缓存层,以优化图谱构建过程中的 LLM 调用和嵌入生成。

缓存类型功能存储目的
LLM 缓存get_llm_cache() / set_llm_cache()Redis (24 小时 TTL)缓存用于实体提取的 LLM 响应
嵌入缓存get_embed_cache() / set_embed_cache()Redis (24 小时 TTL)缓存实体/关系嵌入
标签缓存get_tags_from_cache() / set_tags_to_cache()Redis (10 分钟 TTL)缓存知识库标签

来源: graphrag/utils.py95-159 rag/utils/redis_conn.py