想象你是一家新公司的送货员,上司递给你一张泛黄的关系地图,上面只写着“北京→首都→中国”“杨过→师父→小龙女”这类三元组,却没有标注任何坐标。你要靠这张图规划最快路线、回答“哪位师父教出了杨过”这类问题。知识图谱嵌入要做的,就是给地图上每个实体发一张“GPS 坐标卡”,把每条关系翻译成一条“移动指令”。TransE 说:关系就是“直走一段距离”;RotatE 说:关系就是“旋转一个角度”。有了坐标和指令,机器就能像老快递员一样瞬间算清“谁离谁近、怎么从 A 走到 B”。这就是 LLM 时代知识图谱增强搜索背后的核心秘密。
掌握 TransE 与 RotatE,你就掌握了让知识图谱“可计算”的钥匙,能在大模型搜索、推荐系统中注入结构化语义,这是搜索推荐算法工程师不可替代的硬技能。
目录
可视化演示
分步展示TransE平移嵌入与RotatE旋转嵌入的原理、得分函数对比及知识图谱搜索应用,交互切换四种模式理解嵌入本质。
本节配有交互动效(进入视口后自动加载,约 3KB)。
TransE平移嵌入模型 TransE将关系建模为平移操作,三元组(h,r,t)要求h+r≈t f(h,r,t) = -||h + r - t|| 距离越小得分越高,擅长一对一关系。
一、图谱基础:给送货员发坐标卡
你手里那张只有名字、没有坐标的关系地图,就是知识图谱的朴素形态。它由一条条三元组构成:“(北京,首都,中国)”——前面的实体叫头实体,后面的叫尾实体,中间是关系。整张图就是成千上万个三元组组成的网,像城市地图上密密麻麻的路口与街道。可这张网只有“名字”,机器无法直接算出“北京”和“中国”谁离“伦敦”更近,就像地图上不标坐标,再聪明的送货员也寸步难行。
知识图谱嵌入的使命,就是给每个实体发一张“GPS 坐标卡”,这张卡是一个稠密向量(比如 100 个数字),称为嵌入。关系则被建模成坐标之间的变换指令。有了向量,实体之间的语义相似度就变成了坐标距离的计算问题——坐标越近,语义越相关。于是,一个“名字地图”变成了真正“可测量、可计算”的导航系统。
在搜索场景里,这种可计算性极有价值:用户搜“首都”时,系统能通过向量距离快速找到所有“首都”关系的实体对。基础数学工具是向量距离:
回到送货员的视角:有了这张坐标卡,地图上的每个地点都有了唯一坐标;接下来要研究的,就是“关系”这条街道该怎么走——这正是 TransE 登场的时刻。
- 逐维度求差把两个向量同一位置的分量相减,得到每个维度上的偏移量。好比比较两张地图坐标卡上“经度差、纬度差”。
- 平方累加将每个维度的差平方后求和,消除正负号并放大大偏移,避免正负抵消。
- 开方取模对总和开平方,得到向量间的欧氏距离,也就是 GPS 坐标卡之间的“直线距离”。
二、TransE 原理:关系就是直走一段路
送货员拿到坐标卡后,发现关系居然非常简单:从“北京”出发,沿着“首都”这条街道直走一段,就能到达“中国”。TransE 的核心假设正是如此——头实体向量加上关系向量,约等于尾实体向量。这就像你在城市里从 A 点出发,沿着一条直路走固定距离,正好到达 B 点。关系 r 就是那条“直路”的位移,它不转弯、不绕路,一步到位。
这个假设带来了一个极其简洁的打分函数:把所有三元组代入后,计算“h + r“与”t“的距离。距离越近,说明这个三元组成立的可能性越高。如果”(北京,首都,中国)“满足北京 + 首都 ≈ 中国,那么它的得分就会非常低(距离接近 0),而错误三元组”(北京,首都,伦敦)”的得分会很高。
TransE 的训练采用边界损失:对每个正样本三元组,随机替换头或尾实体构造负样本,然后让正样本距离小、负样本距离大。想象训练一个快递员认路:给他看“北京→首都→中国”的正确路线,再给他看“北京→首都→伦敦”的错误路线,告诉他正确路线更短。损失函数就承担了这个“裁判”角色:
训练时还要对实体向量做约束(如模长归一化),防止模型通过把向量拉长来作弊。但 TransE 有个明显的短板——它只会“直走”,遇到“夫妻”“同桌”这类对称关系就手足无措:如果 h + r = t 且 t + r = h,推来推去只能是 r = 0,等于没走。要突破这个限制,就要请出 RotatE。
- 收集正负样本S 是地图上的正确路线,S' 是随机改错头的错误路线。
- 计算分数差用正确路线的距离减去错误路线的距离,判断是否满足“正确路线更近”。
- 加边距并取正加上 γ 后取 max(0),使得正确路线至少比错误路线近 γ,否则产生损失。
三、RotatE 原理:关系就是旋转一个角度
既然直走搞不定对称关系,RotatE 换了思路:把实体嵌入到复数空间,关系不是平移,而是旋转。想象一个指南针,关系指令是“把指针顺时针转 90°”——转两次就回到原位,天然支持对称关系。在数学上,头实体向量 h 通过逐元素乘以一个模长为 1 的复数旋转向量 r,得到尾实体 t,记作 h ∘ r ≈ t。
为什么用复数?因为复数自带“旋转”的天然表达:任何一个模长为 1 的复数都可以写成 e^{iθ} = cosθ + i·sinθ,其中 θ 是旋转角度。乘法运算恰好对应角度相加:转 30° 再转 60°,等于转 90°。这正是“旋转指令”的数学实现。每个关系的嵌入就是一个角度向量,表示它在每个维度上要旋转多少度。
RotatE 处理对称关系的秘诀藏在角度里:若关系是“夫妻”(对称),令 θ = 0 或 θ = π,旋转两次恰好回到原坐标,完美满足“互为头尾”的需求;若关系是“上司”(反对称),θ 取一般角度即可。理解了这个旋转钟表盘的故事,你就明白了为什么 RotatE 比 TransE 的“直走指令”拥有更强的表达力——转盘能表达的路径,远比直路丰富。
- 构造旋转向量把关系的角度参数 θ 代入欧拉公式,得到每个维度上的复数旋转因子。
- 逐元素旋转头实体向量 h 与旋转向量 r 做逐元素乘法(哈达玛积),相当于把 h 的每个分量都旋转 θ 角。
- 与尾实体求差取模旋转后的结果与 t 求差再取模长,差越小表示旋转指令执行得越精准。
四、模型对比:直走 vs 旋转,谁更优
同样是“从 A 到 B”,直走简单高效,旋转灵活多变。TransE 的优点是轻量——每个实体、关系各一个实值向量,参数少、训练快,适合大规模且关系以 1-1 为主的简单图谱。但它无法建模对称关系(如“同学”)、组合关系(如“父亲的父亲是祖父”)等复杂模式。RotatE 用复向量替代实向量,每个维度有两部分(实部+虚部),但表达能力显著增强。
用数学看本质:对称关系要求 r∘r = 1。在 TransE 里,r + r = 0 只能推出 r = 0;而在 RotatE 里,e^{iθ}·e^{iθ} = e^{i2θ} = 1,只需 θ = 0 或 θ = π,无须让关系“消失”。这是两者最根本的分水岭。
在实际选型时,如果业务图谱规模上亿、关系大多是“属于/位于”这类非对称关系,TransE 的性价比更高;如果图谱关系复杂,有大量对称、反转或组合关系,RotatE 是更稳妥的选择。就像城市里直路解决大部分出行,但环形路口还是得靠转盘。选型之外,训练技巧同样决定效果高低。
- 旋转两次对同一关系 r 应用两次,模拟“由 A 到 B,再由 B 回 A”。
- 等于单位向量结果等于 1(不旋转),表示转两次回到原点,正是对称关系的要求。
- 解的差异TransE 中 r = 0 才成立,RotatE 中 θ = 0 或 π 即可,RotatE 的解空间更大。
五、训练实操:让模型真正学会走地图
给模型发坐标卡只是开始,关键是怎么训练。损失函数在第二节已介绍,这里聚焦数据、评估和效率。训练图谱嵌入最常见的坑是:如果只给正样本,模型把所有权重设成零就能让所有距离为 0,完美收场——但这毫无意义。因此必须负采样:随机替换正样本三元组中的头或尾实体,构造错误三元组,逼模型学会“分辨对错”。
负采样也有讲究。简单的均匀随机采样,造出的负样本往往太“假”,一眼就能分辨,模型学不到精细的边界。工业界常用自对抗负采样:按照当前模型的得分分布采样“最像真的”负样本,相当于专挑难题给快递员练手。此外,为了效率,通常在同一个 batch 内互相充当负样本(批内负采样),减少额外的负采样计算。
评估指标方面,链接预测任务最常用 MRR 和 Hits@k。MRR 衡量正确答案在排序列表中的平均倒数排名,排名越靠前,值越高:
训练时超参通常这样设置:维度 d 取 50~200,边距 γ 取 1~10,负样本数取 1~256,学习率 0.001~0.01,并使用 Adam 优化器。训练完成后,嵌入向量就真正成为一个可搜索的“GPS 坐标库”,能直接服务搜索链路了。
- 计算每组答案排名对第 i 个测试三元组,模型输出所有候选实体的得分排名,记作 rank_i。
- 取倒数排名越靠前,倒数越接近 1,贡献越大。
- 求平均对所有测试样本取均值,得到模型整体的排序能力。
六、图谱增强搜索:让大模型也能“查地图”
训练好的嵌入在 LLM 时代大放异彩。知识图谱增强搜索的完整链路,可以拆成三步。第一步是实体链接:用户查询“适合送妈妈的礼物”,系统先在图上找到“妈妈”这个实体节点。第二步是向量召回:用 TransE/RotatE 训练好的嵌入,计算与“妈妈”相关的关系路径(如“喜欢、适合、收到”),把图谱中的候选实体按得分排序,作为搜索结果的扩展。
第三步是 KG-RAG:把图谱检索到的三元组作为上下文注入大模型。比如用户问“送妈妈什么礼物好”,系统从图谱召回“(康乃馨,象征,母爱)”“(围巾,适合,妈妈)”,拼进 Prompt,让 LLM 基于结构化事实回答,而不是凭空编造。这一步中,嵌入充当了“图检索器”:把自然语言查询映射到实体向量,再在图谱向量空间里做最近邻搜索。
嵌入还能解决冷启动问题:新用户只有一次点击,传统协同过滤无计可施,但通过实体链接把这次点击映射到图谱实体上,再用嵌入找到该实体的多跳邻居,就能迅速扩展用户兴趣。整个链路中,嵌入就像给大模型装上了一张随时可查的实时城市地图,让“幻觉”收敛在结构化事实之内。
- 查询向量化将自然语言查询编码成同维向量 q,和实体向量处于同一坐标空间。
- 逐维乘积求和两个向量对应位置相乘再累加,得到内积,衡量两个向量的匹配程度。
- 排序取 Top-K按内积分数从高到低排序,取前 K 个实体作为图谱召回结果。
七、调优落地:从模型到上线的最后一公里
训练完模型只是实验室阶段,真正落地还差“调优和评估”两件事。先看维度选择:d 太小,坐标卡表达力不足,难以区分相似实体;d 太大,参数量暴涨、过拟合风险增加。经验法则是对数十万实体的图谱,64~200 维已经足够。参数量估算公式能帮你算清显存成本:
超参方面,边距 γ、负采样数、学习率都不能拍脑袋定。建议按网格搜索配合验证集 MRR 来选择:先固定维度,在 γ ∈ {1, 2, 4, 8} 和负采样数 ∈ {1, 16, 64, 256} 中组合验证,挑 MRR 最高的一组。训练完成后,一定要把实体向量用 t-SNE 降到二维可视化检验:同类实体应聚成团,如果全部混在一起,说明维度或边距设置有问题。
最后上线前做 A/B 测试:离线指标(MRR/Hits@k)提升不代表线上搜索点击率提升。建议设置实验组(KG 增强)与对照组(纯文本召回),观察点击率、转化率、无结果率等业务指标,同时监控向量检索的延迟(通常要控制在 20ms 以内)。只有经过这样严谨的评估,知识图谱嵌入才能在真实搜索场景中稳定发挥价值,真正成为 LLM 时代的“结构化记忆”。
- 统计顶点数量读图谱配置,得到实体总数 |E| 和关系总数 |R|,它们决定了坐标卡的总张数。
- 乘以维度每张坐标卡有 d 个数值,总参数量就是总张数乘以每张长度。
AI 应用场景
电商搜索:用 KG 嵌入理解“送礼”意图
阶段:召回与查询扩展
解决的问题:用户搜“送妈妈的礼物”,传统文本搜索只能匹配字面词,无法理解“妈妈”与“康乃馨”“围巾”之间的语义关系,召回结果稀疏且不相关。AI 用 KG 嵌入把 query 中的实体链接到图谱,再用 TransE/RotatE 计算多跳关系邻居,自动扩展候选集合,让召回结果从“字面匹配”升级为“语义相关”。
具体案例:某电商平台构建了商品知识图谱,节点是商品、品牌、人群标签,关系是“适合”“偏好”。用户搜索时,系统先把“妈妈”链接到人群实体,再用嵌入向量召回“适合 妈妈”的商品——即使商品详情页从未出现“妈妈”二字,也能被精准召回。测试阶段该方案使召回量提升 35%,点击率提升 12%。
KG-RAG:让大模型回答“有依据”
阶段:检索增强生成(RAG)
解决的问题:大模型生成答案时经常一本正经地编造事实。KG-RAG 用 TransE/RotatE 嵌入从知识图谱中检索与问题相关的三元组,注入 Prompt,让模型基于结构化事实回答。这样既发挥了大模型的泛化能力,又确保了事实准确性。
具体案例:某医疗问答系统构建了药品-疾病知识图谱。用户问“高血压患者能吃布洛芬吗”,系统用嵌入检索到“(布洛芬,禁忌,高血压)”等三元组,拼接进 Prompt 后交给 LLM 回答。评测显示,答案的事实正确率从 61% 提升到 89%,且每个答案都能溯源到图谱三元组。
冷启动推荐:新用户第一次点击也能推荐
阶段:推荐召回
解决的问题:新用户只有一两次交互,协同过滤无法建模。AI 用实体链接把交互物品映射到知识图谱实体,再用嵌入向量计算该实体的邻居与相关关系,快速构建用户兴趣画像。
具体案例:某短视频平台对刚注册用户冷启动时,将其观看的 1 个视频链接到图谱实体(如“篮球”),通过 RotatE 嵌入找到“篮球→场地→运动装备”的关系链,从而推荐运动类视频。实验显示冷启动场景的 7 日留存提升 9%。
Python 演示
import torchimport torch.nn as nn entities = ['北京', '中国', '伦敦', '英国', '法国', '巴黎']relations = ['首都', '位于']triples = [('北京', '首都', '中国'), ('伦敦', '首都', '英国'), ('巴黎', '首都', '法国'), ('北京', '位于', '亚洲'), ('伦敦', '位于', '欧洲'), ('巴黎', '位于', '欧洲')] entity2id = {e: i for i, e in enumerate(entities)}rel2id = {r: i for i, r in enumerate(relations)} class TransE(nn.Module): def __init__(self, n_ent, n_rel, dim, margin=1.0): super().__init__() self.ent_emb = nn.Embedding(n_ent, dim) self.rel_emb = nn.Embedding(n_rel, dim) self.margin = margin nn.init.uniform_(self.ent_emb.weight, -1.0, 1.0) nn.init.uniform_(self.rel_emb.weight, -1.0, 1.0) def score(self, h, r, t): h_e = self.ent_emb(h) r_e = self.rel_emb(r) t_e = self.ent_emb(t) return torch.norm(h_e + r_e - t_e, dim=1) def forward(self, pos_h, pos_r, pos_t, neg_h, neg_r, neg_t): pos_score = self.score(pos_h, pos_r, pos_t) neg_score = self.score(neg_h, neg_r, neg_t) loss = torch.relu(self.margin + pos_score - neg_score).mean() return loss model = TransE(len(entities), len(relations), dim=8)opt = torch.optim.Adam(model.parameters(), lr=0.01) def build_batch(): pos = torch.tensor([[entity2id[h], rel2id[r], entity2id[t]] for h, r, t in triples]) neg = pos.clone() for i in range(len(neg)): j = torch.randint(0, len(entities), (1,)).item() if torch.rand(1).item() < 0.5: neg[i][0] = j else: neg[i][2] = j return (pos[:, 0], pos[:, 1], pos[:, 2], neg[:, 0], neg[:, 1], neg[:, 2]) for epoch in range(300): ph, pr, pt, nh, nr, nt = build_batch() loss = model(ph, pr, pt, nh, nr, nt) opt.zero_grad() loss.backward() opt.step() if epoch % 60 == 0: print(f'epoch {epoch}, loss {loss.item():.4f}') with torch.no_grad(): dist = model.score(torch.tensor([entity2id['北京']]), torch.tensor([rel2id['首都']]), torch.tensor([entity2id['中国']])).item() print(f'北京+首都 与 中国 的距离 = {dist:.4f}(接近0说明成立)')
nn.Embedding(n_ent, dim)为每个实体和关系分配一张可学习的“GPS 坐标卡”(随机初始化的稠密向量)。torch.norm(h_e + r_e - t_e, dim=1)计算“h 沿 r 平移后与 t 的距离”,得分越低,三元组成立度越高。torch.relu(self.margin + pos_score - neg_score)边界损失:正样本得分至少比负样本低 margin,否则产生惩罚。neg[i][0] = j` 或 `neg[i][2] = j用随机实体替换头或尾,构造“错误路线”负样本,防止模型偷懒全给零向量。loss.backward()` + `opt.step()反向传播更新所有坐标卡,让正确路线越来越短、错误路线越来越长。
常见误区
误区我之前以为 h+r 是把头实体向量和关系向量首尾拼接成长向量,就像把两张名片粘在一起。后来发现拼接后维度翻倍,和打分公式对不上,训练 loss 也一直不降。
正解TransE 的 + 是逐元素相加,即“平移”。就像从故宫出发,沿“向北 2 公里”这条指令走,是把位移向量加到当前位置坐标上,两个向量维度必须相同,结果仍在同一坐标空间。拼接是另一种模型家族(如 ConvE)的做法,切莫混淆。
为何常见:线性代数里的“向量加法”不够直观,“拼接”更符合普通人“信息合并”的直觉,加上很多教程用图示省略了逐元素细节,容易误会。
误区老师说过 TransE 能处理各种关系,“夫妻”这种关系不就是两条边吗?h+r=t,t+r=h,两条一起训练不就行了?
正解数学上不允许:h+r=t 且 t+r=h 两式联立推出 r=0,即关系向量退化为零向量。现实中模型只能把“夫妻”学成“相同向量”,导致两个实体坐标重合、语义区分度崩溃。RotatE 用旋转角度 θ=0 或 π 优雅解决,这是它比 TransE 表达能力强的关键证据。
为何常见:从直觉上,“能处理”不等于“处理得好”,这种数学推导上的隐藏约束很难凭直觉发现,只有动手推导对称关系时才会暴露。
误区为了让模型学得更好,我把每个正样本都替换成 1000 个负样本,结果训练慢得不行,效果还变差了。
正解均匀随机负采样生成的大部分负样本“假得离谱”,模型轻松区分后梯度消失,真正有区分度的难例比例极低。工业界用自对抗负采样(按当前模型得分分布采样最难的负样本)和批内负采样来提升质量与效率。负样本数量不是关键,难度分布才是。
为何常见:“多多益善”的直觉符合人们对数据的朴素认识,忽视了难例挖掘对梯度信号的作用,类似“题海战术”不等于“学会”。
误区既然向量维度越高信息量越大,那就设置 1000 维,省得以后不够用。结果显存爆炸,而且小图谱上验证集 MRR 反而下降。
正解维度由图谱规模与数据稀疏度决定。数十万实体规模时 100~200 维已足够;数据稀疏时高维向量自由度太高,极易过拟合到训练三元组。维度本质是“坐标卡的详细程度”,并不越精细越好,够表达语义区分度即可。
为何常见:深度学习中“更大模型”的流行印象让人默认维度越大越强,忽视了知识图谱嵌入是浅层模型、数据量有限时高维泛化差的事实。
误区离线测试 MRR 提升了 20%,我觉得模型肯定没问题,直接部署到线上搜索。结果上线后用户点击率不升反降。
正解离线指标衡量链接预测准确率,线上关注的是点击率、转化率、无结果率。MRR 提升可能只改善了冷门实体排序,没有改善用户真实关心的热门查询。正确做法是离线指标初筛后,做小流量 A/B 实验,结合业务指标和推理延迟综合评估,必要时用线上反馈数据继续微调嵌入。
为何常见:把离线评估当作终点、忽略离线与线上分布差异,是算法工程师最常见的“毕业即失业”时刻,测试集表现好不等于用户行为改变。
面试题
Q1. TransE 的核心建模假设是什么?
- A.头实体向量与关系向量相乘得到尾实体
- B.头实体向量加关系向量约等于尾实体向量← 正确答案
- C.关系是实体对之间的夹角余弦
- D.实体和关系共享同一个向量空间
答案:B。TransE 的“平移假设”正是 h+r≈t。选项 A 是 RotatE 等乘法模型的思路,C 是余弦相似度的用法,D 虽然描述正确但不是 TransE 的独有建模假设。记住“直走一段路”这张 GPS 图景就不会选错。
Q2. 下面哪个是 TransE 对三元组 (h, r, t) 的打分函数?
- A.$\|\mathbf{h} \circ \mathbf{r} - \mathbf{t}\|_2$
- B.$\|\mathbf{h} + \mathbf{r} - \mathbf{t}\|_2$← 正确答案
- C.$\langle \mathbf{h}, \mathbf{t}\rangle - \mathbf{r}$
- D.$\cos(\mathbf{h} + \mathbf{r} - \mathbf{t})$
答案:B。TransE 打分就是平移后的差向量取 L2 范数。A 是 RotatE 的逐元素旋转,C 是内积变形,D 对向量取余弦无意义。把打分函数和“验证坐标是否走对”联系起来就能快速排除干扰项。
Q3. RotatE 的关系向量表示为什么形式?
- A.任意实值向量,无需约束
- B.单位模长的复数 e^{iθ}← 正确答案
- C.非负实数向量
- D.稀疏二值向量
答案:B。RotatE 把关系建模为模长为 1 的复数旋转因子,对应角度 θ。选 A 会失去旋转的几何意义,C 和 D 都与旋转表达无关。类比指南针“转多少度”的操作,就能理解为什么必须单位模长。
Q4. 关于 TransE 与 RotatE 的关系建模能力,下列正确的是?
- A.TransE 对对称关系需要关系向量退化为零← 正确答案
- B.RotatE 可以同时建模对称与反对称关系← 正确答案
- C.TransE 表达能力全面强于 RotatE
- D.RotatE 的参数量一定大于 TransE 的十倍
答案:AB。对称关系下 h+r=t 与 t+r=h 联立得 r=0,A 正确;RotatE 通过 θ=0 或 π 建模对称、其他角度建模反对称,B 正确;C 恰好相反,RotatE 表达更强;D 中 RotatE 参数约是 TransE 的两倍(复向量两分量),而非十倍。用转盘对比直路,表达力高低一目了然。
Q5. 训练知识图谱嵌入时,负样本的核心作用是什么?
- A.增加训练数据量以加速收敛
- B.防止模型把所有向量学成零向量← 正确答案
- C.让模型学会生成随机实体
- D.减少正样本的权重
答案:B。如果只有正样本,模型把所有嵌入置零即可让距离全为 0,丧失区分能力。负样本提供“错误路线”,迫使模型拉开正负样本距离,本质是对比学习思想。A 是附带效果,C、D 完全无关。
Q6. 边界损失中的超参数 γ(边距)影响哪些方面?
- A.正负样本分数差的最小间隔← 正确答案
- B.模型的收敛速度与稳定性← 正确答案
- C.知识图谱中三元组的总数量
- D.实体嵌入向量的维度大小
答案:AB。γ 规定了正样本必须比负样本得分低多少,γ 越大区分要求越严格,同时影响梯度大小与收敛行为。C 是数据规模,D 是模型结构,都和 γ 无关。类比“正确路线至少要短多少”的判卷标准。
Q7. MRR(平均倒数排名)指标的计算方式是什么?
- A.正确答案排名的算术平均值
- B.所有测试样本的 1/排名 取平均← 正确答案
- C.前 K 个结果中正确率
- D.预测分数与真实标签的相关性
答案:B。MRR 对每个测试样本取正确实体的排名倒数,再求平均。A 是平均排名(越小越好且不直观),C 是 Hits@k,D 是 AUC。把“第 1 名 1 分、第 2 名 0.5 分”的考试类比记住即可。
Q8. 在 KG-RAG 流程中,知识图谱嵌入主要承担什么职责?
- A.生成最终的回复文本
- B.从图谱中检索与问题相关的三元组← 正确答案
- C.对 LLM 的注意力权重做梯度更新
- D.压缩 Prompt 的 token 长度
答案:B。KG-RAG 把用户查询实体化后,用嵌入向量在图谱空间做最近邻检索,召回相关三元组作为上下文。A 是 LLM 的职责,C、D 分别涉及训练和工程优化,都不是嵌入的核心作用。嵌入就是“图谱检索器”的坐标索引。
Q9. 用户搜索“送妈妈的礼物”时,实体链接的作用是?
- A.将查询文本切分成词语
- B.把“妈妈”链接到知识图谱的实体节点← 正确答案
- C.直接生成推荐商品的标题
- D.计算商品之间的价格差
答案:B。实体链接是把自然语言中的提及(mention)映射到图谱中唯一实体,是图谱搜索的入口。A 是分词,C 是文案生成,D 与语义无关。只有先找到“妈妈”节点,嵌入才能继续做关系推理和召回。
Q10. 业务图谱包含大量“夫妻”“同学”等对称关系和 1-N 关系时,正确的方案选择是?
- A.优先选择 RotatE 以建模对称关系← 正确答案
- B.TransE 完全无法在此场景使用
- C.可用 TransE+后处理补充对称关系← 正确答案
- D.无需训练,直接使用 one-hot 编码
答案:AC。对称关系密集时 RotatE 天然胜任,A 正确;TransE 建模对称关系虽退化,但可通过在后处理中对称化关系对或改用更丰富模型来补救,并非完全不可用,故 B 错、C 对;D 的 one-hot 无法编码语义相似性,完全错误。选型要结合数据与工程成本,不能一刀切。