文章

RAG知识图谱简介

RAG知识图谱简介

RAG知识图谱简介

一、什么是知识图谱

1.1 基本定义

知识图谱(Knowledge Graph) 是一种以图结构表示知识的方法,通过实体(Entity)- 关系(Relation)- 属性(Attribute) 三元组形式,将现实世界的对象及其关联关系进行结构化建模。

1.2 核心特征

  • 结构化表达:以实体-关系-属性 (ERA) 结构化建模,而非纯文本段落
  • 多跳关联:天然支持沿关系路径进行多跳推理和查询
  • 语义约束:通过类型、关系约束进行精准过滤,减少语义偏移
  • 可追溯性:节点/边挂接来源信息,支持审计与回滚

多跳关联示例:用户问”华为发布的操作系统在哪一年推出?” → 图上可沿路径 (华为) -[发布]-> (鸿蒙系统) -[发布时间]-> (2020年),无需长文本检索即可直接拼接答案线索。
文档引用示例:业务文档中常见“详见附件××”的表述,可在图中建模为 (文档) -[包含/引用]-> (附件);当查询“附件××的要求是什么”时,可沿此关系直接定位到附件节点及其内容,而不必全文检索。
语义约束示例:查询”位于上海的证券交易所”时,图查询可限定节点类型=”组织机构”、位置属性包含”上海”,减少文本相似度误匹配(如把”证券交易所”误解为”交易软件”)。

二、知识图谱的基本组成

扩展:史上最大规模1.4亿中文知识图谱-github.com/ownthink/KnowledgeGraphData-知识图谱数据结构

2.1 节点(实体)

定义:现实世界的对象(人/机构/产品/事件等),通常包含类型与属性。

  • 类型:在本体/模式中声明实体类型(如组织机构、人工制品、位置、概念、方法、自然物品、事件、内容、数据、人物角色、未知等),可用于可视化着色与查询过滤
  • 属性:描述实体的键值对(如”成立时间”“注册地”“版本号”)
  • 识别方式:NER + 实体链接(EL),利用别名词典、embedding 相似度、规则校验
  • 创建过程:抽取后生成节点,写入图数据库,并绑定来源文档/段落 ID 以便回溯

2.2 关系(边)

定义:实体间的语义联系(如”隶属”“采购”“依赖”“作用于”),可携带方向与属性(时间、权重、置信度等)。

  • 识别方式:关系抽取(RE)、事件抽取,或规则/模板匹配;大模型可辅助生成候选,再做置信度过滤
  • 创建过程:对齐起点/终点实体后生成边,附带来源、时间戳、置信度,必要时人工校验

2.3 属性

定义:描述实体或关系的键值对(如”成立时间”“注册地”“版本号”“发生时间”)。

  • 识别方式:从结构化字段或信息抽取中提取;做类型校验(日期/数值/枚举)
  • 创建过程:在写入节点/边时填充,保存来源与校验状态

2.4 本体/模式

定义:领域内的类型体系与约束集合,是图谱的一致性”蓝图”。

  • 设计步骤:梳理业务实体/关系清单 → 定义字段与约束 → 约定命名、主键与别名策略 → 版本化管理
  • 作用:指导抽取、存储、校验与查询;也是多团队协作的契约

2.5 来源与溯源

节点/边需挂接来源文档、段落或页面 URL,便于审计与回滚。

2.6 质量与消歧

通过别名表、唯一键、embedding 相似度 + 规则阈值 + 人工抽检,持续治理。

三、如何从文本构建知识图谱

扩展:医疗知识图谱构建-github.com/liuhuanyong/QASystemOnMedicalKG-业务驱动的知识图谱构建框架

3.1 构建流程

典型流水线

1
2
3
4
5
6
7
8
9
10
原始文档/数据  
→ 预处理(清洗、分段、去噪、分句)  
→ 实体识别(NER:命名实体识别,找出人名/机构/地点/产品等)  
→ 实体链接/消歧(EL:实体链接,alias 词表 + embedding 相似度 + 规则阈值 + 人工抽检,将文本片段对齐到具体实体节点)  
→ 关系抽取/事件抽取(RE/EE:关系/事件抽取,识别"谁-与-谁-以何种关系/事件相连",可用模型/LLM/模板)  
→ 本体校验(类型约束、必填属性、基数检查)  
→ 置信度过滤与人工审阅(可选,边界样本人工确认)  
→ 入图写入(节点/边,附来源文档/段落/时间戳/置信度)  
→ 索引构建(图索引 + 向量索引 + 关键词倒排)  
→ 监控与回滚(质量指标、版本/备份、审计溯源)

3.2 是否使用大模型

  • 大模型并非必需,但在中文/开放域抽取、长尾别名、复杂关系识别上,LLM 能显著提升召回与质量;同时会带来成本与一致性挑战
  • 轻量方案:传统 NER/RE + 规则 + 词表/alias + embedding 消歧;适合结构化/半结构化、高一致性场景
  • 混合方案:LLM 生成候选 + 规则/embedding 复核 + 人工抽检;适合开放域、弱结构、多别名场景

四、核心技术原理详解

扩展:知识图谱-概念与技术 复旦大学 肖仰华-github.com/tywee/knowledge-graph-关系抽取概述

4.1 NER(Named Entity Recognition,命名实体识别)

定义:从文本中标注实体片段及类型。

  • 常用技术:序列标注(BiLSTM-CRF、BERT-CRF)、LLM 提示抽取、规则/词典
  • 示例:”上海证券交易所位于浦东” → 抽出 “上海证券交易所/组织机构”,”浦东/位置”

4.2 EL(Entity Linking,实体链接/消歧)

定义:将已识别的实体片段对齐到知识库中的具体实体节点。

  • 常用技术:候选生成(别名/倒排/向量召回)→ 候选打分(embedding 相似度 + 规则/特征)→ 选最优;必要时人工抽检
  • 示例:”苹果” → 根据上下文判断是 “Apple Inc.”(公司)而不是 “苹果/水果”

4.3 RE(Relation Extraction,关系抽取)

定义:识别实体之间的语义关系,产出三元组 (头实体, 关系, 尾实体)。

  • 常用技术:依存/句法特征 + 深度模型;LLM 结构化输出;模板/规则在高精场景使用
  • 示例:”华为发布了鸿蒙系统” → (华为, 发布, 鸿蒙系统)

4.4 EE(Event Extraction,事件抽取)

定义:识别事件及其论元/角色(主体、客体、时间、地点等)。

  • 常用技术:触发词识别 + 论元填充;可用模型、LLM 或规则模板
  • 示例:”2020年华为发布鸿蒙系统” → 事件=发布;论元:时间=2020年,主体=华为,对象=鸿蒙系统

4.5 辅助组件

  • 分词工具(如结巴分词 jieba):将中文文本切分成词语序列,是NER/RE等任务的前置预处理步骤。结巴分词本身不做实体/关系抽取,但为后续任务提供词语边界和词性标注(POS)等基础信息。例如:”上海证券交易所位于浦东” → 分词为 [“上海”, “证券”, “交易所”, “位于”, “浦东”],NER模型在此基础上识别出完整实体”上海证券交易所/组织机构”
  • 别名/词表:支撑候选生成与消歧
  • Embedding 相似度:长尾匹配、别名发现、候选排序
  • 规则/模板:硬约束(类型/格式/时间数值校验)与高精句式
  • 置信度与审阅:低置信度样本进入人工审核闭环

五、知识图谱 vs 普通知识库

扩展:GraphRAG + DeepSearch 实现与问答系统(Agent)构建-github.com/1517005260/graph-rag-agent-更复杂的产品化效果-包含轨迹追踪图谱推理过程

5.1 普通知识库的特点

  • 以文档/段落为基本单位,偏”段落检索 + 大模型生成”
  • 关系弱,结构化程度低
  • 召回常依赖向量相似度

5.2 知识图谱的特点

  • 以实体-关系-属性 (ERA) 结构化建模
  • 天然支持多跳关联和语义约束
  • 可与文本片段双索引(图索引 + 向量索引)协同工作

5.3 对比分析

优势

  • 结构化表达:关系明确,可表达复杂语义和路径检索
  • 可解释性:节点/边及路径可视化,便于溯源
  • 精准检索:实体、关系过滤结合向量召回,提升精度
  • 复杂查询:天然支持图查询语言(Cypher/Gremlin)和多跳问答

劣势

  • 构建成本高:实体抽取、关系抽取、对齐、清洗、版本管理需要额外流程
  • 维护复杂:别名/消歧、数据漂移、模式演进需要持续运维
  • 覆盖度权衡:低噪高质 vs 覆盖面,需要取舍;过度结构化可能丢失细节

5.4 普通知识库实现多跳查询的方案

普通知识库虽然缺乏知识图谱的结构化优势,但可以通过以下方案实现类似的多跳查询能力:

1. 数据治理方案

  • 文档结构增强:在”详见”、”参照”、”参考”等文档跳转关键词后面增加章节链接锚点,建立文档间的显式引用关系。例如:”详见附件A” → 自动添加锚点链接到”附件A”章节。
  • 章节语义增强:在跳转的附件章节中,修改章节名称,增强语义描述。例如:将”附件A”改为”附件A:数据安全管理办法”,提升向量检索的匹配精度。
  • 局限性:需要大量人工标注和文档处理工作,耗费工时;对于已有大量文档的场景,改造成本较高。

2. 工作流节点额外抽取

  • 多轮迭代检索:在获取第一阶段检索结果后,增加额外处理节点,提取检索结果中的”详见”、”参考”、”依据”等关键字及其关联内容。
  • 关联内容检索:根据提取的关键字,再次在知识库中查找被引用的文档或章节,并将结果拼接到工作流回复中。
  • 递归深度控制:设置最大递归深度(如2-3跳),避免无限循环和性能问题。
  • 局限性:需要适配开发工作流节点,增加系统复杂度;在海量文本中,关键字提取可能不精准,导致误召回或漏召回。

3. 提示工程增强 在 LLM 的 prompt 中明确要求进行多跳推理,引导模型识别文档间的引用关系并主动查找相关内容。

  • 局限性:不可控,受限于大模型本身的理解能力。

六、适用场景与决策指南

6.1 典型适用场景

  • 实体/关系密集领域:金融、医疗、法律、供应链、政企知识库
  • 需要多跳逻辑的问答:合规审查、风控溯源、因果/依赖分析
  • 需要可解释与可追溯:审计、合规、决策支持
  • 需要消歧/别名管理:人名地名产品名混淆场景

6.2 不适合或性价比低的场景

  • 需求以简单 FAQ/关键词检索为主
  • 数据规模小且关系简单
  • 更新极端频繁且对一致性要求低的临时知识
  • 团队缺少长期图谱运维能力

6.3 何时不必使用图

  • 数据规模小、关系简单、主要是纯文本 FAQ
  • 构建/运维资源有限,或对可解释性需求不高
  • 更新频率极高且容错成本低的临时知识

七、LightRAG 查询模式详解

LightRAG 提供了多种查询模式,用户可以通过在查询前添加前缀来选择不同的检索和生成策略。默认模式为 hybrid(混合模式)。

7.1 核心查询模式

/local(本地模式)

  • 作用:基于查询中的实体,在知识图谱中构建局部子图(Local Graph),仅检索与查询实体直接相关的节点和关系。
  • 特点
    • 聚焦于查询相关的局部区域,检索范围较小
    • 适合精确查询,响应速度快
    • 可能遗漏间接相关的信息
  • 适用场景:查询目标明确,需要快速获取直接相关的实体和关系信息

/global(全局模式)

  • 作用:基于查询语义,在全局知识图谱中进行检索,考虑所有可能的实体和关系路径。
  • 特点
    • 检索范围广,可能发现间接关联
    • 适合复杂推理和多跳查询
    • 计算成本较高,可能引入噪声
  • 适用场景:需要多跳推理、发现间接关联、探索性查询

/hybrid(混合模式,默认)

  • 作用:结合本地模式和全局模式的优势,先进行局部检索,再基于结果进行全局扩展。
  • 特点
    • 平衡精度和召回率
    • 兼顾直接关联和间接关联
    • 是大多数场景的推荐模式
  • 适用场景:通用查询场景,需要平衡准确性和完整性

/naive(朴素模式)

  • 作用:不使用知识图谱结构,仅基于向量相似度进行文本检索,类似传统 RAG。
  • 特点
    • 不利用图结构信息
    • 依赖纯语义相似度匹配
    • 计算简单,但可能缺乏结构化推理能力
  • 适用场景:知识图谱未构建或质量较低时,作为降级方案

/mix(混合策略模式)

  • 作用:采用混合检索策略,可能结合多种检索方法(图检索 + 向量检索 + 关键词检索)。
  • 特点
    • 综合利用多种检索手段
    • 提升召回率和鲁棒性
    • 计算复杂度较高
  • 适用场景:对召回率要求高,需要多种检索手段互补的场景

7.2 特殊模式

/bypass(绕过模式)

  • 作用:完全绕过 LightRAG 的检索流程,直接将查询和聊天历史传递给底层 LLM,不进行任何知识库检索。
  • 特点
    • 不进行知识库检索
    • 仅依赖 LLM 的预训练知识
    • 可用于测试 LLM 能力或处理非知识库相关的问题
  • 适用场景:测试 LLM 能力、处理通用对话、不需要知识库检索的场景
  • 注意:如果使用 Open WebUI 作为前端,可以直接切换到普通 LLM 模型,无需使用此前缀

/context(上下文模式)

  • 作用:不生成最终答案,仅返回为 LLM 准备的上下文信息(检索到的相关文档片段或图路径)。
  • 特点
    • 仅返回检索结果,不调用 LLM 生成
    • 可用于检查检索质量
    • 支持自定义上下文处理
  • 适用场景:调试检索效果、自定义上下文处理逻辑、分析检索结果

7.3 上下文版本模式

以下模式是核心查询模式的上下文版本,仅返回上下文信息,不生成最终答案:

  • /localcontext:本地模式的上下文版本,返回局部子图检索结果
  • /globalcontext:全局模式的上下文版本,返回全局检索结果
  • /hybridcontext:混合模式的上下文版本,返回混合检索结果
  • /naivecontext:朴素模式的上下文版本,返回向量检索结果
  • /mixcontext:混合策略模式的上下文版本,返回混合检索结果

7.4 使用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 默认混合模式查询
What's LightRAG?

# 使用本地模式
/local 华为发布了哪些产品?

# 使用全局模式
/global 哪些公司与华为有合作关系?

# 使用混合策略模式
/mix 数据安全管理办法的具体要求是什么?

# 绕过检索,直接使用LLM
/bypass 解释一下量子计算的基本原理

# 仅获取上下文
/context 华为的合作伙伴有哪些?

7.5 模式选择建议

查询类型推荐模式说明
精确实体查询/local快速获取直接关联信息
多跳推理查询/global发现间接关联和路径
通用查询/hybrid(默认)平衡精度和召回率
简单语义匹配/naive降级方案或简单场景
高召回率需求/mix多种检索手段互补
调试检索效果/context系列检查检索质量
非知识库问题/bypass直接使用LLM

参考

本文由作者按照 CC BY 4.0 进行授权