首页 > 教程攻略 > ai资讯 >知识图谱与向量数据库的相遇

知识图谱与向量数据库的相遇

来源:互联网 时间:2026-08-26 13:49:28

之前聊过《大模型应用的10种架构模式》,其中知识图谱作为RAG系统里一项关键技术,已经成了一个独立的架构范式。不过,现在绝大多数RAG系统的标配其实是向量数据库。这就引出一个很有意思的话题:当严谨的知识图谱,遇上灵活的向量数据库,二者究竟是竞争关系,还是能碰撞出不一样的火花?

1. 知识图谱:一张精密的“关系网”

说到知识图谱,它本质上就是一种将信息结构化、用来表达不同概念之间关系的工具。你可以把它想象成一张地图,把散布在各个角落的数据点连接起来,并清晰地标明它们之间的“路”。正因为它擅长处理这种复杂的连接关系,才被广泛用于存储和组织海量信息。

1.1 它的核心优势在哪?

知识图谱通常跑在图数据库上,这为集中式的信息管理提供了坚实的基础。它的厉害之处在于几个方面:一是通过结构化的存储让信息随时可查;二是强大的搜索能力,能让你在海量数据中快速定位;三是好用的协作功能,方便团队共享知识并持续迭代。

节点与边

最简单的理解,知识图谱由“节点”和“边”组成。节点代表一个实体或概念,比如一本书、一位作者、一个类型;而“边”就是连接这些节点的线,说明它们之间的关系,比如“属于什么类别”或“由谁创作”。

语义关系

它不只看表面词汇,而是能真正理解数据背后的“语义”和“上下文”。这意味着,当你在做推荐系统或搜索引擎时,它能给出更有“脑子”的结果,而不是单纯的关键词匹配。

灵活性

相比传统数据库处理复杂关系时的“痛苦面具”,知识图谱对这种相互交织的数据可谓驾轻就熟,弹性十足。

1.2 举个查询的小例子

假设你有一个关于图书的知识图谱,你想找出某位作者写过的所有书,代码大概是这样:

# 使用SPARQL 来通过作者查找图书
query = "
SELECT ?bookTitle WHERE {
  ?book rdf:type :Book .
  ?book :writtenBy :AuthorName .
  ?book :title ?bookTitle .
} "

你看,`?bookTitle` 是这个查询的变量,它会搜集所有满足“`writtenBy`”这个关系的书籍名称。整个过程非常清晰,就像在跟一张活地图对话。

2. 向量数据库:一个“数学式”的检索器

向量数据库的玩法就完全不同了。它把所有数据都转化成“向量”——也就是一串串数字序列。在机器学习的语境里,每个数据点(比如一张图片、一段文字)的特征,都可以用这样一个向量来表示。

2.1 它擅长处理什么?

向量数据库在处理那些“非结构化”或“高维”数据时,简直是天生的王者。比如海量的图片、文档、音频信号。它们生来就是为了快速、高效地处理这类大型数据集。

数值表达

所有数据都变成了数学意义上的“数值向量”,这就为后续的数学运算打开了大门,比如我们常说的“相似度搜索”或机器学习任务。

高效率的搜索

它最擅长的就是“找相似”。无论你的数据量有多大,它都能嗖的一下,通过计算向量之间的“距离”或“夹角”,找到最接近的那几个。这是做图像或文本相似性搜索的核心引擎。

高维空间

向量可以有成百甚至上千个维度,用这种高维空间来表达数据,可以非常细腻。比如一张图片,它的像素、颜色、纹理等各种特征都能被浓缩进这个高维向量里。

2.2 向量数据库怎么查?

还是用例子说话。假设你有一个存满了图像向量的数据库,你想找出一张和给定图片最相似的几张:

import faiss
import numpy as np

# `image_vectors` 是所有图像的向量库,`query_vector` 是你要找的那张图的向量
index = faiss.IndexFlatL2(image_vectors.shape[1])
index.add(image_vectors)

# 查一下,找出最像的5张
D, I = index.search(np.array([query_vector]), 5)
print("Indices of similar images:", I)

这里用`IndexFlatL2`创建了一个基于欧几里得距离的索引,然后搜一下,前5个最像的图片ID就出来了,非常直接。

3. 一张表看清它们的区别

简单粗暴地对比一下,两者在数据表达、应用场景和性能上的侧重点完全不同。知识图谱是理解“关系”的专家,而向量数据库是处理“高维数据”和“相似搜索”的专家。

对比项知识图谱向量知识库
数据表达用节点和边构建的图形结构,天生适合表达实体及其关联。用数值向量表示数据点,为高维数据和数值计算而生。
用例场景的核心是理解实体之间的关系,比如语义搜索、推荐系统、知识管理。场景的核心是“找相似”,比如图像识别、自然语言处理、相似性推荐。
性能在表达复杂关系上非常灵活,但面对海量数值数据时可能会出现性能瓶颈。数值计算和相似搜索性能强悍,但在表示复杂关系上相对“笨拙”。

4. 当“关系”遇上“相似”:强强联合

说了这么多,是不是觉得它们各有千秋,非要二选一?其实,真正的王者玩法是**融合**。在某些场景下,把两者结合起来,能产生1+1>2的爆炸效果。

比如,在推荐系统里。我们可以先用知识图谱搞清楚用户和商品之间的“关系链路”,比如“用户喜欢某本书,那这本书的作者还写过其他什么书?”;然后,再用向量数据库对这些候选书做“相似度搜索”,找出和用户口味最贴切的那几本。逻辑上,这个流程是这样的:

kg_query = "'
SELECT ?relatedItem WHERE {
  :UserID :likes ?item .
  ?item :relatedTo ?relatedItem .
} "'

# 知识图谱给出一个相关物品的候选列表
related_items = ["Item1", "Item2", "Item3"]

# 调用向量数据库,对每一个候选物品进行深度相似性搜索
similar_items = []
for item in related_items:
    item_vector = get_vector(item) 
    D, I = index.search(np.array([item_vector]), 5)
    similar_items.extend(I)

# 最终得出一个既有关联逻辑,又高度“投其所好”的推荐列表
print("Recommended items:", similar_items)

这样,你的推荐系统既有了“懂关系”的逻辑深度,又有了“找相似”的精准度。

5. 知识图谱的向量化:让它也能“算”起来

另一种结合的思路,就是直接把知识图谱本身“向量化”。这通常通过一个叫做“嵌入模型”的东西来实现。它的目标很简单:把图谱里的每一个实体和每一条关系,都映射到一个低维的向量空间里。核心逻辑是:如果两个实体在图谱里有一条特定的关系存在,那么在向量空间里,经过某种转换后,它们的“距离”就应该很近。

5.1 两种典型的嵌入模型

TransE

是最经典的模型之一。它假设:对于 (头实体, 关系, 尾实体) 这样一个三元组,头实体的向量加上关系的向量,应该约等于尾实体的向量。这种设计简单又高效,非常适合处理那些“A connected-to B”这种明确的关系。

而**PairRE** 的思路更复杂一些。它给每个关系都配了**两个**向量(一个管头实体,一个管尾实体),然后通过哈达马积(元素点乘)来计算。这允许它处理更复杂的、非对称的关系模式,从而更精细地区分实体在关系里扮演的不同角色。

这些模型的训练其实很“暴力”。它们会通过梯度下降法,不断调整所有实体的向量,让模型满足上述的约束关系(比如让TransE里的“h+r ≈ t”尽量成立)。但问题是,知识图谱太大了,所有可能的三元组数量是按平方级增长的,根本算不过来。所以,行业里普遍采用“负采样”技术:随机破坏一些正确的三元组(比如把尾实体换成另一个随机实体),然后让模型学会区分“真的”和“假的”关系,这样计算量就小多了。

5.2 评价模型好不好:Link Prediction

衡量这些嵌入模型效果如何,通常看的是它在 **链接预测** 任务上的表现。链接预测又分两种:

  • 二分类:

    这个三元组是真还是假?比如用来做事实核查。
  • 排序:

    “(头实体, 关系, ?)”,让模型预测缺的那个尾实体最可能是谁。这在推荐系统和问答里很常见。

评估的指标主要是两个:

  • Hits@N:

    在模型预测的前N个结果里,到底有没有真正正确的那个?比如,如果正确答案排在Top3里,那Hits@3就是100%;如果没排到第一,Hits@1就是0%。
  • MRR (平均倒数排名):

    关注正确答案的具体排名位置。它计算的是所有正确结果的排名倒数,然后取平均值。比如,正确答案排第3,那它的倒数排名就是1/3。

5.3 嵌入模型背后的“学习机制”

为什么这些嵌入模型能学得好?目前来看,它们主要依赖三种不同的学习机制:

非结构化统计学习:

这有点“管中窥豹”的意思。模型不直接看图的结构,而是看实体和关系在数据里共同出现的“频次”和“模式”。通过计算它们之间的点积或相似度来打分。这在数据本身有很强的共现模式时非常管用。

网络学习:

这是利用图谱的“拓扑结构”来学习。模型会观察哪些节点是连在一起的,哪些是分开的。在训练时,它会努力让有边连接的节点向量更近,没有边连接的更远。这样做能很好地反映实体的“邻近关系”。

主题学习:

这是用来“发现规则”的。主题指的是图谱中那些反复出现的、小的子图模式,比如:“如果A和B是兄弟,B和C是兄弟,那么A和C也是兄弟”。模型可以通过优化关系向量,来学习并满足这些隐含的逻辑规则。

5.4 如何更公正地评价嵌入质量?

在评价链接预测任务时,传统的负样本往往太“好做”了。所以现在更倾向于增加负样本的数量和多样性,让测试变得更有挑战性。像**R-MRR**(重采样指标)这种更精细的指标,正在被越来越频繁地与标准MRR一起使用,以得到更公正、更准确的模型性能评估,尤其是在处理超大知识图谱时,统一的负样本可能会严重误导结果。

6. 结语:不是谁取代谁,而是谁服务于谁

知识图谱和向量数据库,一个代表“逻辑与关系”,一个代表“数学与相似”,它们的优势领域不同,但并非互斥。知识图谱是构建复杂语义的骨架,向量数据库是高效检索相似内容的引擎。在实践中,聪明的做法往往是将两者结合:用知识图谱来指导“找什么”,用向量数据库来执行“怎么找”。而将知识图谱本身向量化,则是另一种深度融合的尝试,它让静态的“关系网”真正动起来,参与到计算中去。

可以确定的是,这两大技术的交叉与融合,将是未来RAG系统乃至整个AI应用架构能力升级的关键方向。

【参考资料】
  • "PairRE: Knowledge Graph Embeddings via Paired Relation Vectors", arxiv.org/pdf/2011.03798v3
  • 在大模型RAG系统中应用知识图谱
  • 面向知识图谱的大模型应用
  • 让知识图谱成为大模型的伴侣
  • 知识图谱的5G追溯
  • 从语义网到知识图谱
  • 行业规模的知识图谱——经验和挑战
  • 知新温故,从知识图谱到图数据库
  • 解读向量数据库
  • 解读:基于图的大模型提示技术
  • 7B?13B?175B?解读大模型的参数
  • 大模型应用的10种架构模式