知识图谱与向量数据库的相遇
之前聊过《大模型应用的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
而**PairRE** 的思路更复杂一些。它给每个关系都配了**两个**向量(一个管头实体,一个管尾实体),然后通过哈达马积(元素点乘)来计算。这允许它处理更复杂的、非对称的关系模式,从而更精细地区分实体在关系里扮演的不同角色。
这些模型的训练其实很“暴力”。它们会通过梯度下降法,不断调整所有实体的向量,让模型满足上述的约束关系(比如让TransE里的“h+r ≈ t”尽量成立)。但问题是,知识图谱太大了,所有可能的三元组数量是按平方级增长的,根本算不过来。所以,行业里普遍采用“负采样”技术:随机破坏一些正确的三元组(比如把尾实体换成另一个随机实体),然后让模型学会区分“真的”和“假的”关系,这样计算量就小多了。
5.2 评价模型好不好:Link Prediction
衡量这些嵌入模型效果如何,通常看的是它在 **链接预测** 任务上的表现。链接预测又分两种:
- 这个三元组是真还是假?比如用来做事实核查。
二分类:
- “(头实体, 关系, ?)”,让模型预测缺的那个尾实体最可能是谁。这在推荐系统和问答里很常见。
排序:
评估的指标主要是两个:
- 在模型预测的前N个结果里,到底有没有真正正确的那个?比如,如果正确答案排在Top3里,那Hits@3就是100%;如果没排到第一,Hits@1就是0%。
Hits@N:
- 关注正确答案的具体排名位置。它计算的是所有正确结果的排名倒数,然后取平均值。比如,正确答案排第3,那它的倒数排名就是1/3。
MRR (平均倒数排名):
5.3 嵌入模型背后的“学习机制”
为什么这些嵌入模型能学得好?目前来看,它们主要依赖三种不同的学习机制:
非结构化统计学习:
网络学习:
主题学习:
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种架构模式
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名