这次主要分析一下知识图谱和Graph RAG相关知识。

1. 知识图谱(Knowledge Graph)

知识图谱(Knowledge Graph) 是结构化人类知识的一种方式。简单来说,它把现实世界中的实体、概念以及它们之间的关系,用一张“网”的形式呈现出来。

如果说传统的数据库是一张张孤立的表格,那么知识图谱就是把这些表格里的内容全部打通,变成了一个错综复杂的网络。

1.1 核心组件:三元组

知识图谱的核心构建块是三元组(Triple),其核心表达式为:

在实际应用中,它通常被抽象为“实体-关系-实体”“实体-属性-属性值”:

  • 实体(Entity): 现实世界中的事物,比如“北京”、“工业机器人”、“《三体》”。

  • 关系(Relation): 实体之间的联结,比如“是……的首都”、“制造”、“作者是”。

  • 属性(Property)与属性值(Value): 实体的具体特征,比如“北京”的“人口”是“2184万”。

具体例子:(头实体, 关系, 尾实体),例如(姚明, 效力于, 休斯顿火箭队)

1.2 构建步骤

概述:KG构架是将非结构化或半结构化数据(如文本、表格)转化为结构化知识图谱的过程,是知识图谱技术的核心环节。

构建一个知识图谱通常需要经历以下几个关键技术步骤:

[原始数据清洗] -> (信息抽取) -> (知识融合) -> (知识加工/推理) -> [知识图谱]

(1)知识抽取(Information Extraction):

知识抽取是从结构化或非结构化数据源中自动识别并提取知识三元组(实体-关系-实体)的关键技术,是构建知识图谱的基础步骤。

a. 实体识别(NER): 目标是找出文本中代表现实世界事物的词汇,并归类到预定义的类别中(如人名、机构名、特定零部件、算法模型等)。


b. 关系抽取:找出了文本中的实体后,下一步是确定这些实体之间存在什么联系,这就是关系抽取。例如,从文本“Qwen2.5 是由阿里云研发的大语言模型”中,不仅要识别出“Qwen2.5”和“阿里云”,还要抽取出  的关系。

为什么关系抽取要用 CNN?

关系抽取的本质是对目标实体周围的上下文进行分类

  • 卷积层(捕捉局部): 像一个滑动的窗口(N-Gram),能自动抓取句子里最核心的关系词(如“毕业于”、“制造”)。

  • 池化层(整合全局): 把卷积抓取到的最强信号捞出来,不管关系词在句子的什么位置,都能精确定位。

  • 全连接层(分类输出): 将特征组合,直接输出关系的概率。

PCNN(分段卷积)的妙处

传统池化会破坏位置信息。PCNN 以两个目标实体为边界,把句子切成三段(实体前、实体中、实体后),在三段上分别池化。

核心作用: 既保留了结构顺序,又能让模型降低噪声片段的权重,不被敏感或无关信息干扰。


c. 属性抽取:属性抽取是指从文本中采集特定实体的特征信息,它构建的是 (实体、属性、属性值)的三元组。例如,抽取出(库卡KR 60机器人、额定负载、60KG)三元组。 

(2)知识融合(Knowledge Fusion):

  • 实体消歧: 现实中很多名字有歧义,比如“苹果”是指水果还是手机公司?知识融合负责把它们区分开,并把指向同一个实体的不同称呼(如“ATC”和“自动换刀装置”)合并。

知识融合的核心工作可以总结为两步:先理清实体,再对齐结构。

(3)知识推理(Knowledge Reasoning):

2.  知识存储技术

核心任务:如何高效地把复杂的、网状的三元组数据,保存到计算机里,并让程序能实现毫秒级的查询。

主流存储方式:图数据库是目前知识存储最常用的解决方案,主要包括Neo4j、JanusGraph和NebulaGraph等成熟产品。这些数据库擅长处理高度关联的数据关系。

数据模型类型:主要采用两种数据模型:RDF(资源描述框架)和属性图(Property Graph)。RDF采用三元组存储方式,而属性图则支持更丰富的属性-值对表示。

2.1 知识表示学习

知识表示学习(Knowledge Representation Learning, KRL),在图神经网络和自然语言处理领域通常也被称为知识图谱嵌入(Knowledge Graph Embedding, KGE)

它的核心任务是:将知识图谱中的实体和关系,映射到一个低维、连续的稠密向量空间中(通常是几百维的向量),同时保持图谱原有的拓扑结构和语义关系。

2.2 GNN

GNN是专门用于处理图结构数据的深度学习模型,通过消息传递机制聚合邻居节点信息,学习包含结构信息的节点表示。

传统的深度学习模型(如 CNN、RNN)处理的是网格状的常规数据(如图像、文本),而现实世界中大量的重要数据是以非欧几里得空间的拓扑网络形式存在的(如分子结构、社交网络、工业知识图谱、多机器人协同网络)。GNN 的出现,就是为了让深度学习能够直接在这些复杂的“网”上进行计算。

欧几里得空间中的数据常常数据可以量化,非欧几里得数据不可以量化,通过聚合各种信息来增强结论表现。

核心思想:节点表示由其自身特征和邻居节点表示共同决定,多层GNN堆叠可捕获多跳邻居信息。

消息汇聚阶段:每个节点会收集其所有相邻节点的特征向量信息,通过加权或求和等方式进行信息聚合。例如在社交网络中,用户节点可以聚合好友节点的特征。

节点更新阶段:聚合后的邻居信息与节点自身特征结合,通过带有激活函数(如ReLU)的全连接层进行非线性变换,生成该节点的新表示。这个过程通常包含可学习的权重参数。

经典的GNN模型GCN(Graph Convolutional Network,图卷积网络)、GAT(Graph Attention Network,图注意力网络)、GraphSAGE(Graph Sample and Aggregate)

3. Graph RAG

Graph RAG(图增强检索生成)知识图谱(Knowledge Graph)与 RAG(检索增强生成)技术的完美结合

传统的 RAG 依赖向量数据库,通过计算文本相似度来捞取文档;而 Graph RAG 则是引入了图数据库,让大模型不仅能读到孤立的文本片段,还能看到一张逻辑严密、具备全局拓扑关系的知识网。

特性 传统基于向量的 RAG Graph RAG
底层存储 向量数据库(Milvus, Pinecone 等) 图数据库(Neo4j, NebulaGraph) + 向量
检索依据 纯文本语义相似度匹配 语义相似度 + 图拓扑邻居关系
擅长问题 局部细节查询(如:某型号电机的额定电压是多少?) 全局总结、多跳推理(如:分析该工艺流程的系统风险)
构建成本 低(直接切片做 Embedding 即可) 高(需要前置的知识抽取、融合与图聚类)

3.1 混合检索

概念:混合检索就是“强强联合”它将传统的关键词检索(稀疏向量)与前沿的语义检索(稠密向量)融合在一起,利用两者的互补特性,从而同时保证检索的精准度(精确匹配)泛化度(语义理解)。

1. 传统关键词检索(如 BM25 / TF-IDF)

通过计算词频来匹配文本,属于字面精确匹配

  • 痛点: 缺乏语义理解能力。如果你搜“工业机器人”,文档里写的是“机械臂”或“自动化装配外设”,它可能一条也搜不出来(近义词缺失);此外,它也无法处理错别字或语序颠倒。

2. 现代语义检索(如 Dense Vector / Embedding)

把文本转化为稠密向量,通过计算空间距离(如余弦相似度)来匹配,属于语义模糊匹配

  • 痛点: 容易丢失精准信息。对于特定的型号、行业术语、专属ID、错误代码(如 KR-60Error_Code_0x03),向量检索往往无法实现 100% 精准咬合,反而容易捞出一些“语义相近”的废话。

混合检索的标准流程通常分为双路并行召回统一重排两个阶段:

                 ┌──> 关键词检索 (BM25) ───> 得到 Top-K 列表 A ──┐
[用户提问 Query] ─┤                                               ├──> [结果融合与重排 (Rerank)] ──> 最终结果
                 └──> 向量语义检索 (Dense) ─> 得到 Top-K 列表 B ──┘

在Graph RAG中通常会用语义+关键词+子图的三路检索:

  • 文本向量检索: 负责兜底语义,理解用户口语化的提问意图。

  • BM25 关键词检索: 负责精准锁定专有名词、错误代码、设备型号。

  • 图拓扑结构检索: 负责在知识图谱中顺着关系链(如 组件A -> 属于 -> 系统B)把相关的实体网络顺藤摸瓜捞出来。

3.2 局限性

1、成本高 Graph RAG 需要同时维护向量库和图数据库,显著增加了双重基础设施的投资与运维压力。此外,将海量文档离线重计算并转化为复杂图谱的过程耗时极长,难以实现传统 RAG 的秒级入库与低成本更新。

2、工作流需要维护 从实体识别到关系抽取的 NLP 处理管道极为错综复杂,导致系统的工程维护成本呈指数级上升。一旦底层文档发生局部变更,很容易牵一发而动全身,极难在不破坏原有关系的情况下对图谱进行局部更新。

3、Token 消耗高 在构建图谱阶段,需要让大模型反复“精读”大量文本以输出结构化 JSON,其 Token 消耗量通常是传统提取方法的数十倍。而在检索生成时,为了获取全局视野而拼接的大量节点摘要与子图,也极易消耗海量 Token 并触碰模型的上下文窗口上限。

4、抽取不可靠与数据泄露风险 图像等数据天然缺乏显式的三元组,强行依赖大模型的主观推理去无中生有地建立关联,极易引入“知识幻觉”与数据失真。这种基于主观发散的连结不仅会导致信息不可靠,还可能错误地将不同上下文或权限级别的数据关联起来,从而在检索时引发隐性的数据泄露。

3.3 常见工程问题

1、实体链接错误,子图跑偏 实体链接错误会导致检索偏离正确的知识子图,通常需要引入置信度评分来动态捕获并识别此类偏差。

解决方案:通过构建对抗模型进行实时的逻辑校验,从而在工程层面上及时修正错链并阻断错误扩散。

2、子图过大,噪声过多 子图范围过大会塞入大量无关的拓扑噪声,直接干扰大模型对核心上下文的理解与最终推理。

解决方案:采用 Top-N 裁剪(引入 Skill 节点路由,什么领域的内容就找什么图谱)进行结构截断,并结合实体类型白名单来显式过滤和限制可出现的答案范围。

3、幻觉问题(精度缺陷) Graph RAG 产生幻觉的本质是数据源与向量匹配的精度不足,导致模型拿到了模糊或错误的信息。

解决方案:一方面提升原始知识数据的清洗与录入精度,另一方面提高 Embedding 向量表征的精细度以实现精准对齐。

4、断链问题(图文脱节) 在处理图文混合输入时,系统如果只读取了文本而忽略了图片,就会因为关键上下文丢失导致大模型无法作答。

解决方案:这需要升级前端的多模态解析与融合理念,确保图片中的视觉语义能够无缝沉淀进图谱节点或检索链条中。

4. Schema

Schema是一种“数据结构规范”“数据约束协议”“模板蓝图” 。

大模型(LLM)擅长说大白话,但计算机程序需要严谨的结构。这时候就需要 Schema 来做桥梁:

  • 举个例子(Function Calling Schema): 你想让大模型调用一个“查询喷涂工艺参数”的函数,你需要用 JSON Schema 告诉大模型这个函数的输入规范。

    {
      "type": "object",
      "properties": {
        "paint_type": { "type": "string", "description": "涂料类型" },
        "flow_rate": { "type": "number", "description": "流量,单位 L/min" }
      },
      "required": ["paint_type"]
    }
    

    这个 JSON 结构就是 Schema。有了它,大模型就知道必须乖乖输出一个包含 paint_type(字符串)和 flow_rate(数字)的结构化数据,而不能随便胡言乱语。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐