论文阅读详细版K-RagRec:Knowledge Graph Retrieval-Augmented Generation for LLM-based Recommendation

摘要(Abstract)

翻译

推荐系统在我们的日常生活中变得越来越重要,有助于缓解各类面向用户的在线服务中的信息过载问题。大语言模型(LLMs)的出现取得了显著成就,展现出其推动下一代推荐系统发展的潜力。尽管取得了这些进展,基于大语言模型的推荐系统仍面临源于其模型架构的固有局限性,尤其是幻觉问题(生成虚假信息)以及缺乏最新知识和领域特定知识的问题。近年来,检索增强生成(RAG)技术受到了广泛关注,它通过利用外部知识源来增强大语言模型的理解和生成能力,从而解决这些局限性。然而,传统的 RAG 方法往往会引入噪声,并且忽略了知识中的结构化关系,这限制了它们在基于大语言模型推荐系统中的效果。为了解决这些问题,我们提出从知识图谱中检索高质量、最新的结构化信息,以增强推荐效果。具体而言,我们设计了一个检索增强框架,名为 K-RagRec,该框架通过整合外部知识图谱的结构化信息,助力推荐生成过程。我们进行了大量实验,验证了所提方法的有效性。

讲解
  • 摘要就是论文的 “浓缩版故事”,核心逻辑:
    1. 背景:推荐系统很重要,大语言模型能做推荐,但有两个大问题 ——“瞎编(幻觉)” 和 “知识老 / 不全(缺最新 / 领域知识)”。
    2. 现有方案的不足:传统 RAG 能补知识,但会带 “杂音(噪声)”,还不懂知识图谱里的 “关系”(比如不知道《沙丘 2》和《星际穿越》都是科幻片)。
    3. 我们的方案:搞个叫 K-RagRec 的框架,专门从知识图谱里拿 “结构化的好信息”,帮大模型做推荐。
    4. 结果:实验证明我们的方法有用。

1 引言(Introduction)

第一段翻译

推荐系统作为一种旨在帮助人们在日常生活中做决策的技术,在各个领域的影响力日益增强(Kenthapadi 等人,2017; He 等人,2020; Fan 等人,2019),例如在线购物、工作匹配和社交媒体。近年来,大语言模型(LLMs)取得了重大突破,进一步推动了各个领域的发展(Fan 等人,2024b; Zhao 等人,2024; Wu 等人,2023a)。特别是随着大语言模型的成功,推荐系统迎来了快速发展(Geng 等人,2022; Bao 等人,2023; Qu 等人,2024)。通过在海量数据上训练,大语言模型(例如 GPT-4(Achiam 等人,2023)和 LLaMA(Touvron 等人,2023))能够获取广泛的知识,并展现出卓越的语言理解能力。这种能力使基于大语言模型的推荐系统能够通过细致理解相关属性(例如用户画像、物品描述、历史交互记录)来捕捉用户偏好,从而实现更准确的推荐。因此,基于大语言模型的推荐系统已成为推荐技术的一种新范式(Zhao 等人,2024)。

第一段讲解

  • 核心:铺垫 “大语言模型做推荐” 的合理性和优势。
  • 逻辑链:
    1. 推荐系统的应用场景(购物、找工作、社交)→ 很重要。
    2. 大语言模型很牛(训练数据多、理解能力强)→ 能看懂用户画像、物品描述(比如能理解 “用户喜欢诺兰导演的科幻片”)。
    3. 结论:大语言模型推荐是新趋势(新范式)。
  • 举例:大模型能看懂 “《沙丘 2》是丹尼斯・维伦纽瓦执导的科幻片”,也能看懂 “用户之前看了《星际穿越》(诺兰科幻片)”,所以理论上能推荐同类型电影 —— 这是传统推荐系统做不到的(传统系统只能看 “用户点击记录”,看不懂文本描述)。

图1:

第二段翻译

然而,尽管基于大语言模型的推荐系统具有强大的语言理解和泛化能力,它们仍面临重大挑战,包括幻觉问题以及缺乏最新知识和领域特定知识(Luo 等人,2023)。具体而言,一个关键问题是,由于大语言模型的固有局限性,基于大语言模型的推荐系统可能会生成完全虚构的推荐结果。例如,如图 1(a)所示,一个基于大语言模型的推荐系统可能会向看过《教父》(The Godfather)的用户推荐一部不存在的电影《Godmother》。此外,大语言模型通常缺乏最新知识,这使其无法及时推荐最新的电影或产品。如图 1(b)所示,由于训练数据仅更新到 2022 年 12 月,基于大语言模型的推荐系统无法推荐 2022 年 12 月之后的新电影。再者,大语言模型往往缺乏领域特定知识,因为在大语言模型的训练阶段,面向推荐任务的语料库非常有限(Geng 等人,2022)。因此,大语言模型可能难以满足推荐任务的细致需求。为了缓解这些问题,一个潜在的解决方案是用最新的和领域特定的知识频繁微调大语言模型。然而,大语言模型的海量参数使得这一过程计算成本高昂且耗时,严重阻碍了其在现实世界中的实际应用。

第二段讲解

  • 核心:指出 “大语言模型做推荐” 的 3 个致命问题 + 现有解决方案的不足。
  • 3 个问题拆解(结合图 1):
    1. 幻觉(图 1a):推荐不存在的东西。比如用户看了《教父》(真实电影),模型推荐《Godmother》(假电影)—— 因为模型记混了,或者瞎编了一个类似名字。
    2. 知识过时(图 1b):模型训练数据截止到 2022 年 12 月,用户 2023 年问 “看了《沙丘 2》(2024 年上映)推荐什么”,模型说 “我不知道《沙丘 2》”—— 因为训练时还没有这部电影的信息。
    3. 缺领域知识:模型知道 “《星际穿越》是电影”,但不知道 “它和《沙丘 2》都是硬科幻片,目标受众重合”—— 因为训练时没专门学 “电影推荐的领域知识”。
  • 现有方案的坑:“频繁微调”(把新电影、领域知识加进去重新训练模型)—— 但大模型有几百亿参数,微调一次要花几十万、几天时间,根本不现实(比如电影院每周都有新片,总不能每周都微调一次)。

第三段翻译

最近,利用外部数据库提供特定知识的检索增强生成(RAG)技术展现出解决这些问题的潜力(Fan 等人,2024a; Gao 等人,2023)。通过整合外部知识库,RAG 能够检索相关且最新的信息,以补充大语言模型的固有知识,从而缓解幻觉问题和知识缺口(Khandelwal 等人,2019; Min 等人,2020; Li 等人,2024)。这使得 RAG 成为一种很有前景的技术,能够让大语言模型在无需昂贵微调的情况下提供有效的推荐(Ram 等人,2023)。

第三段讲解

  • 核心:引入 “RAG 技术” 作为潜在解决方案,并说它的好处。
  • 逻辑:RAG = 大模型 + 外部知识库检索。比如用户问 “看了《沙丘 2》推荐什么”,RAG 先去外部数据库(比如电影知识库)查 “《沙丘 2》的导演、类型、受众”,再把这些信息传给大模型,大模型基于真实信息推荐 —— 这样就不会瞎编,也能拿到最新信息。
  • 关键优势:不用微调大模型!只要更新外部数据库(比如每周把新电影加进知识库),成本低、速度快。

第四段翻译

尽管具有这种潜力,但依赖文档和段落的传统 RAG 方法往往会引入不必要的噪声,甚至有害干扰,这会对推荐的准确性和可靠性产生负面影响(He 等人,2024)。此外,典型的 RAG 方法忽略了实体之间的结构化关系,导致基于大语言模型的推荐系统的推理能力不够理想(Luo 等人,2023)。为了解决这些局限性,一个可行的方案是整合结构化知识(例如物品的知识图谱)来帮助提升推荐性能。具体而言,知识图谱提供了结构化、事实性和可编辑的知识表示,能够为推荐提供可靠的知识来源。如图 1(c)所示,从知识图谱中检索结构化知识可以显著增强基于大语言模型的推荐系统的推荐能力。

第四段讲解

  • 核心:传统 RAG 还不够好,需要用 “知识图谱” 替代 “文档 / 段落” 作为外部知识库。
  • 传统 RAG 的两个问题:
    1. 有噪声:比如检索 “《沙丘 2》相关信息”,会拿到一堆无关的影评、新闻段落,这些 “杂音” 会让大模型推荐出错。
    2. 不懂结构化关系:文档里可能提到 “《沙丘 2》是科幻片”“《星际穿越》是科幻片”,但传统 RAG 看不出这两部电影的 “同类型关系”—— 而知识图谱直接把 “《沙丘 2》- 类型 -> 科幻片”“《星际穿越》- 类型 -> 科幻片” 存成结构化数据,模型一眼就能看出关联。
  • 知识图谱的优势:
    • 结构化:关系明确(A - 关系 ->B),没有废话。
    • 事实性:都是真实存在的实体和关系(不会有假电影)。
    • 可编辑:新电影上映后,直接加 “电影名 - 导演 ->XXX”“电影名 - 类型 ->XXX” 到知识图谱,更新方便。

第五段翻译

然而,有效地检索知识图谱以增强大语言模型的推荐能力面临着挑战。首先,知识图谱以结构化格式存储丰富的事实知识。简单检索实体(即物品)的三元组或一阶邻居(直接关联的实体)并结合语义信息,会忽略实体 / 物品之间更高阶的邻域效应(比如 A 关联 B,B 关联 C,A 和 C 的间接关联),导致推荐性能不佳。其次,无论检索是否必要或内容是否相关,都对每个物品进行无差别检索,会降低推荐性能,同时严重降低模型的效率(Asai 等人,2023; Labruna 等人,2024)。此外,知识图谱中的结构化数据通常以序列化文本的形式编码给大语言模型(Wu 等人,2023b; Sun 等人,2023),这不足以充分利用数据中固有的结构化信息(Perozzi 等人,2024; Fatemi 等人,2023)。因此,探索更有效、更具表达力的结构化数据表示方式至关重要,使大语言模型能够有效利用检索到的知识子图的结构信息进行推荐。

第五段讲解

  • 核心:直接用知识图谱做检索也有 3 个技术难题,这是我们论文要解决的核心问题。
  • 3 个难题拆解:
    1. 检索太浅:只查 “直接关联” 的实体(一阶邻居),比如查《沙丘 2》只拿到 “导演 - 丹尼斯”“类型 - 科幻”,但没拿到 “同类型的《星际穿越》”(间接关联,二阶邻居)—— 高阶关联对推荐很重要。
    2. 检索效率低:对所有物品都检索(比如用户看了 10 部电影,每部都去知识图谱查),有些物品(比如《泰坦尼克号》这种超热门电影)大家都知道,没必要检索,但传统方法还是会查,浪费时间。
    3. 结构化信息没用好:把知识图谱的 “三元组”(比如 “《沙丘 2》- 类型 -> 科幻”)改成文字 “《沙丘 2》的类型是科幻” 传给大模型 —— 这样大模型又变回 “读文本”,没利用到知识图谱的 “结构优势”(比如快速找到所有科幻片)。

第六段翻译

为了解决上述挑战,在本文中,我们提出了一个知识检索增强推荐框架,名为 K-RagRec,旨在通过从物品知识图谱中检索相关知识,为大语言模型时代的推荐生成提供最新、可靠的知识。具体而言,我们提出的框架首先在物品知识图谱上进行粗粒度和细粒度的知识子图索引,构建知识向量数据库。接下来,设计了一种 popularity 选择性检索策略,以确定哪些物品需要被检索,然后从知识向量数据库中检索特定的子图。为了提升检索质量并确保最相关的结果排在输入的前面,我们随后对检索到的知识子图进行重排序。最后,我们引入了一个图神经网络(GNN)和投影器(projector),将检索到的知识子图对齐到大语言模型的语义空间,以实现知识增强推荐。本文的主要贡献如下:

  • 我们提出了一个新颖的框架,从知识图谱中检索可靠知识,以增强大语言模型的推荐能力。值得注意的是,我们为知识图谱引入了一种灵活的索引方法,能够全面呈现知识图谱中节点的邻域信息。
  • 我们设计了一种 popularity 选择性检索策略,基于物品的流行度确定是否需要检索该物品,显著提升了效率。
  • 我们为结构化数据引入了一种更具表达力的图编码器,使大语言模型能够有效利用结构信息,并避免长上下文输入。
  • 我们在多个真实世界数据集上进行了全面实验,以评估所提出的 K-RagRec 框架的有效性。

第六段讲解

  • 核心:我们的 K-RagRec 框架怎么解决上面的 3 个难题 + 4 个核心贡献。
  • 框架步骤拆解(对应解决的难题):
    1. 知识子图索引(解决 “检索太浅”):不仅查一阶邻居,还查高阶邻居(比如二阶、三阶),并分 “粗粒度”(概览)和 “细粒度”(细节)索引 —— 比如《沙丘 2》的粗粒度索引是 “科幻片、丹尼斯导演”,细粒度索引是 “主演提莫西・柴勒梅德、改编自科幻小说”。
    2. 流行度选择性检索(解决 “检索效率低”):热门物品(比如《泰坦尼克号》)不检索,冷门物品(比如小众科幻片)才检索 —— 因为热门物品的知识大模型已经知道,冷门物品的知识需要从知识图谱补。
    3. 知识子图重排序(解决 “噪声问题”):检索到一堆子图后,按和用户需求的相关性排序,只把最相关的传给大模型 —— 比如用户喜欢 “硬科幻”,就把 “科幻类型” 相关的子图排在前面,无关的(比如电影的发行公司)排在后面或删掉。
    4. GNN + 投影器(解决 “结构化信息没用好”):不用把知识图谱改成文字,而是用 GNN(图神经网络)直接处理结构化数据,提取 “关系特征”(比如 A 和 B 都是科幻片),再通过投影器把这些特征转换成大模型能看懂的格式 —— 既利用了结构信息,又不会让输入文本太长(大模型处理长文本会变慢、出错)。
  • 4 个核心贡献(汇报时要重点强调):
    1. 灵活索引:能拿到节点的所有邻域信息(高阶 + 低阶)。
    2. 选择性检索:按流行度判断是否检索,省时间。
    3. 图编码器:结构化数据不用转文字,大模型能直接用结构信息。
    4. 实验验证:在真实数据集上证明有效。
索引不是向量,是 “找子图的目录系统”:向量是子图的 “标签”,索引是 “贴标签 + 建目录 + 快速定位” 的整套系统。

代码中的 “索引” 本质是知识图谱节点 / 边的嵌入向量,用于后续快速检索相关子图。这些索引通过预处理步骤生成并存储为.pt文件。

简单说:0.pt是初始索引,layer2/layer3是经 GCN 增强后的深层索引,共同用于快速定位相关节点。
“粗细粒度” 体现在检索阶段提取的子图范围上,对应retrieve.pyGraphRetrieval类的子图提取方法:细粒度子图get_first_order_subgraph(node)。只包含目标节点及其直接邻居(一阶邻居),边也仅保留目标节点与直接邻居的连接。粗粒度子图get_second_order_subgraph(node)。包含目标节点、一阶邻居,以及一阶邻居的邻居(二阶邻居),边包括目标节点与一阶邻居、一阶邻居与二阶邻居的连接。一阶子图(细粒度)仅包含直接邻居,二阶子图(粗粒度)包含扩展到二阶的邻居,用于平衡检索的精度和覆盖度。
知识向量数据库:对应index_KG.py生成的0.ptlayer2_embeddings_W.ptlayer3_embeddings_W.pt,存储节点和边的向量表示。细粒度子图索引:对应retrieve.pyget_first_order_subgraph,提取目标节点 + 直接邻居的子图,基于向量数据库实现快速检索。粗粒度子图索引:对应retrieve.pyget_second_order_subgraph,提取目标节点 + 直接邻居 + 二阶邻居的子图,同样依赖向量数据库进行检索。

2 相关工作(Related Work)

第一段翻译

近年来,RAG 已成为生成式人工智能领域最具代表性的技术之一,它结合了检索系统和语言模型(LM)的优势,生成连贯且信息丰富的文本。早期方法,如 REALM(Guu 等人,2020)、RETRO(Borgeaud 等人,2022)和 DPR(Karpukhin 等人,2020),通常从大规模语料库中检索相关片段,以指导语言模型生成。然而,标准的 RAG 方法往往难以准确检索所有相关文本块,因为文档中存在不必要的噪声甚至有害干扰。为了解决这些局限性,最近的研究(Baek 等人,2023; Wu 等人,2023b; He 等人,2024; Luo 等人,2023; Wang 等人,2023; Sen 等人,2023; Sun 等人,2023)专注于从图中检索结构化且可靠的知识,以增强生成效果。例如,Retrieve-Rewrite-Answer(Wu 等人,2023b)从知识图谱中检索相关子图,并将检索到的子图转换为文本用于生成。G-Retriever(He 等人,2024)探索从各种类型的图中检索子图,以缓解大语言模型的幻觉问题。

第一段讲解

  • 核心:介绍 RAG 的发展历程 —— 从 “检索文本” 到 “检索图结构”。
  • 早期 RAG(REALM、RETRO、DPR):检索的是 “文档片段”(比如维基百科的段落),缺点是有噪声。
  • 近期 RAG(Retrieve-Rewrite-Answer、G-Retriever):开始检索 “图结构”(知识图谱的子图),但它们的问题是:把图转换成文本(比如 Retrieve-Rewrite-Answer),还是没利用好结构信息 —— 这就是我们的机会点。

第二段翻译

随着大语言模型在推荐领域的爆发式发展,已有部分研究(Di Palma, 2023; Wu 等人,2024; Ang 等人,2024)对 RAG 在推荐中的应用进行了初步探索。例如,Di Palma(2023)的研究提出利用电影或书籍数据集的知识来增强推荐。然而,从知识图谱中检索可靠的结构化知识以用于推荐的研究仍未得到充分探索,且具有巨大潜力。

第二段讲解

  • 核心:现有研究的空白 —— 很少有人把 “知识图谱 RAG” 用在推荐上。
  • 现有相关工作:Di Palma 只是用了 “电影 / 书籍的普通数据集”(比如电影列表),而不是 “知识图谱”(结构化的关系网)。
  • 我们的创新点:第一个把 “知识图谱的结构化检索” 和 “推荐系统” 结合得这么彻底的(解决了检索深度、效率、结构利用三个问题)。

第三段翻译

为了填补这一空白,我们提出从知识图谱中检索知识子图,以增强大语言模型的推荐性能。更多相关工作详见附录 A.3。

第三段讲解

  • 核心:一句话总结 —— 我们的工作填补了 “知识图谱 RAG 用于推荐” 的空白,附录里有更多相关研究的对比(汇报时可以说 “附录里详细对比了我们和其他方法的区别,这里就不展开了”)。

3 方法论(Methodology)

3.1 预备知识(Preliminary)

翻译

知识图谱:在本文中,我们提出利用外部知识数据库(即知识图谱)来增强大语言模型的推荐能力。知识图谱包含大量以三元组形式存在的事实知识:(G={(n, e, n') | n, n' ∈ N, e ∈ E}),其中 N 和 E 分别表示实体集和关系集。例如,三元组(《星际穿越》,由... 执导,诺兰)表示电影《星际穿越》由导演诺兰执导。

讲解
  • 知识图谱的数学定义(不用怕,超简单):
    • G:整个知识图谱。
    • n 和 n':实体(比如电影、导演、书籍、作者)。
    • e:关系(比如 “由... 执导”“属于... 类型”“作者是...”)。
    • 三元组:(实体 1,关系,实体 2)—— 比如(《沙丘 2》,类型,科幻片)、(《沙丘 2》,导演,丹尼斯・维伦纽瓦)。
翻译

基于大语言模型的推荐:设\(U={u_{1}, u_{2}, ..., u_{n}}\)和\(V={v_{1}, v_{2}, ..., v_{m}}\)分别表示用户集和物品集,其中 n 和 m 分别是用户和物品的数量。基于大语言模型的推荐系统的目标是通过建模用户的历史物品交互记录\(V^{u_{i}}=[v_{1}^{u_{i}}, v_{2}^{u_{i}}, \cdots, v_{|L_{u_{i}}|}^{u_{i}}]\)(例如点击、购买等)来理解用户偏好,其中\(|L_{u_{i}}|\)是用户\(u_{i}\)的交互序列长度。值得注意的是,物品\(v_{j}\)的辅助信息(如标题和描述)是公开可用的,可用于增强大语言模型对用户偏好的建模。在我们的设置中,我们让大语言模型从候选集\(C={v_{j}}_{j=1}^{M}\)中选择用户 u 偏好的物品,其中 M 是候选物品的数量。候选集 C 通常包含一个正样本(用户真正喜欢的物品)和 M-1 个负样本(用户不喜欢的物品)。具体而言,对于参数为 δ 的冻结大语言模型\(f_{\delta}\),我们将输入 - 输出序列对表示为(Q, A),其中 Q 是推荐查询 / 提示词,包含任务描述和用户的历史物品。输出 A 是大语言模型的预测结果。此外,我们在附录 A.2 中介绍了图神经网络(GNN)的相关概念。

讲解
  • 推荐任务的数学定义(通俗化):
    • 用户集 U:所有使用推荐系统的人(比如电影网站的所有用户)。
    • 物品集 V:所有被推荐的东西(比如网站上的所有电影)。
    • 历史交互\(V^{u_{i}}\):用户 u 之前看过的电影(比如用户 u1 看过《星际穿越》《沙丘 2》)。
    • 候选集 C:给用户推荐的候选列表(比如 20 部电影,其中 1 部是用户可能喜欢的 “正样本”,19 部是凑数的 “负样本”)。
    • 提示词 Q:给大模型的指令(比如 “用户之前看了《星际穿越》《沙丘 2》,从下面 20 部电影里选 1 部他最可能喜欢的”)。
    • 输出 A:大模型选的电影(比如选了《银翼杀手 2049》)。
  • 关键:大模型是 “冻结” 的(参数 δ 不变)—— 我们不微调大模型,只通过加知识图谱的信息来增强它的推荐能力(这是 RAG 的核心思想,省成本)。

3.2 所提方法概述(The Overview of Proposed Method)

翻译

如图 2 所示,我们提出的 K-RagRec 包含五个关键组件:用于语义索引的跳域知识子图(Hop-Field Knowledge Sub-graphs for Semantic Indexing)、流行度选择性检索策略(Popularity Selective Retrieval Policy)、知识子图检索(Knowledge Sub-graphs Retrieval)、知识子图重排序(Knowledge Sub-graphs Re-Ranking)和知识增强推荐(Knowledge-augmented Recommendation)。该模型首先对知识图谱中的跳域知识子图进行索引;然后,实施流行度选择性检索策略,确定哪些物品需要被检索或增强;接着,从知识向量数据库中检索特定的子图;随后,对检索到的知识子图进行重排序,以提升检索质量;最后,将检索到的知识子图与原始提示词结合,生成推荐结果。

讲解
  • 框架 5 个步骤(对应图 2,汇报时按这个顺序讲,清晰易懂):
    1. 索引:给知识图谱的 “子图” 做标记(比如给《沙丘 2》的子图标记 “科幻、丹尼斯导演、高阶关联《星际穿越》”),方便后续快速检索。
    2. 选物品:判断哪些物品需要检索(冷门物品检索,热门不检索)。
    3. 检索:根据标记,从知识向量数据库里找出相关的子图。
    4. 重排序:把检索到的子图按相关性排序(比如和用户喜欢的 “科幻” 相关的排前面)。
    5. 推荐:把排序后的子图和原始提示词一起传给大模型,让大模型生成推荐。
  • 核心逻辑:先 “找对知识”(索引 + 检索),再 “选对知识”(选择性检索 + 重排序),最后 “用好知识”(知识增强推荐)。

3.3 用于语义索引的多跳领域知识子图(Hop-Field Knowledge Sub-graphs for Semantic Indexing)

这里的知识子图实际上就是layer2_embeddings_W.pt和layer3_embeddings_W.pt图里面的每个节点融合了邻居信息,本质上每个节点都是一个子图表示。

输入(左侧):node attributes(节点属性):表示图中每个节点的特征,例如在社交网络中可能是用户的年龄、性别等。edge attributes(边属性):表示连接两个节点的边的特征,例如在社交网络中可能是“朋友”、“同事”等关系类型。核心模块(中间):PLM(Pre-trained Language Model,预训练语言模型):这里指的是SentenceBert。捕捉节点和边的语义信息。模块周围有雪花状图标,可能象征“冻结”或“预训练”的状态,即该模型参数已经预先训练好,仅在当前任务中微调或直接使用。输出(右侧):node → z:表示对每个节点生成一个语义嵌入向量 z,捕捉该节点的上下文语义信息。edge → r:表示对每条边生成一个语义嵌入向量 r,描述边的关系语义。上方标注 Semantic Information(语义信息),说明输出的 z 和 r 是具有语义意义的表示。知识向量数据库:对应index_KG.py生成的0.ptlayer2_embeddings_W.ptlayer3_embeddings_W.pt,存储节点和边的向量表示。
翻译

通常,从知识图谱中检索知识会将知识图谱分割为节点(He 等人,2024)或三元组(Luo 等人,2023),并且只检索知识图谱中目标实体附近的局部内容。然而,这些方法只是简单地检索实体(即物品)的一阶邻居,难以在推荐过程中捕捉实体 / 物品之间的高阶邻域效应。因此,为了有效地从知识图谱中检索知识,我们提出对跳域知识子图进行语义索引,该方法能够灵活地分割知识图谱,并全面呈现知识图谱中节点的邻域信息。如图 2 的组件 1 所示,我们首先引入一个预训练语言模型(PLM),例如 SentenceBert(Reimers, 2019),来捕捉节点no的语义信息,如下所示:zno = PLM(xno ) ∈ Rd,其中 d 是输出表示的维度。类似地,我们也捕捉知识图谱中边 eo的语义信息:reo = PLM(xeo ) ∈ Rd,其中xnoxeo 分别是节点no和边e0的文本属性(例如物品的标题和描述)。

讲解==这里对应代码里面生成原始图0.pt
  • 核心:解决 “检索太浅” 的问题 —— 不仅检索一阶邻居,还检索高阶邻居
  • 跳域 = 几阶关联。
  • 步骤 1:用预训练语言模型(PLM,比如 SentenceBert)给 “节点” 和 “边” 做 “语义编码”(把文本变成电脑能看懂的向量)。
    • 节点编码(公式 1):比如把 “《沙丘 2》” 的标题、描述(“丹尼斯执导的科幻片”)变成一个 d 维向量。
    • 边编码(公式 2):比如把 “类型” 这个关系变成一个 d 维向量。
  • 为什么要编码?因为电脑看不懂文字,只能处理向量 —— 编码后才能快速计算 “相关性”(比如《沙丘 2》和《星际穿越》的向量很像,就说明它们相关)。
 在知识图谱中,“hop” 指的是 “跳数”或“步数”,用来描述两个实体之间的路径长度1-hop neighbors(一跳邻居):直接与某个节点相连的节点。2-hop neighbors(两跳邻居):通过一个中间节点连接的节点。k-hop:k 步以内的所有节点
翻译

为了从知识图谱中检索粗粒度和细粒度图结构的细致知识,我们引入了一个图神经网络GNN,用于聚合实体邻居的信息。对于每个实体,其 l 跳表示可以看作是包含自身 l 跳邻居的知识子图表示。对于每个子图,我们将其表示存储在知识向量数据库中。

讲解==对应生成图layer2_embeddings_W.pt和layer3_embeddings_W.pt
  • 步骤 2:用 GNN 聚合 “多跳邻居” 的信息,生成 “知识子图表示”。
  • 公式通俗解释:
    • l 跳:l=1 是一阶邻居(直接关联),l=2 是二阶邻居(间接关联),比如《沙丘 2》的一阶邻居是 “丹尼斯导演”“科幻类型”,二阶邻居是 “丹尼斯导演的其他电影”“科幻类型的其他电影”(比如《星际穿越》)。
    • GNN 的作用:把节点的 l-1 跳向量和边向量聚合起来,生成 l 跳向量 —— 比如把《沙丘 2》的一阶向量和 “科幻类型” 的边向量聚合,得到包含 “科幻类型邻居” 的二阶向量。
    • 知识子图表示:比如《沙丘 2》的子图表示包含了它的 1 跳、2 跳邻居的所有信息(导演、类型、同类型电影、同导演电影)。
  • 最后:把所有子图的表示(向量)存到 “知识向量数据库”—— 相当于一个 “快速查询库”,后续检索时直接查这个库,速度很快。

3.4 流行度选择性检索策略(Popularity Selective Retrieval Policy)

翻译

尽管 RAG 可以通过检索到的知识增强大语言模型对用户偏好的建模,但对每个物品进行检索会消耗大量检索时间,这会严重降低用户体验并导致用户流失。同时,推荐系统中大多数用户的在线行为遵循幂律分布(Abdollahpouri 等人,2017; Celma 和 Herrera, 2008):一小部分物品(例如不到 20%,即热门物品)通常占据了用户在线行为的大部分(例如超过 80%),而冷启动物品(新物品或小众物品)的用户交互很少。因此,大多数模型往往拥有热门物品的丰富知识,而冷启动物品的性能较差(Zhao 等人,2023)。为此,我们设计了一种流行度选择性检索策略,基于物品的流行度(例如销量、浏览量)来确定是否需要从知识图谱中增强该物品。具体而言,如果物品的流行度低于预定义的阈值 p,则对其进行检索;否则不检索。通过整合这一策略,K-RagRec 的检索时间可以显著减少,实现更高效的检索。

讲解
  • 核心:解决 “检索效率低” 的问题 —— 只检索冷门物品,不检索热门物品。
  • 关键依据:幂律分布(通俗说就是 “二八定律”)。
    • 80% 的用户交互都集中在 20% 的热门物品上(比如大家都看《泰坦尼克号》《复仇者联盟》)。
    • 大模型在训练时已经学过这些热门物品的知识(比如知道《泰坦尼克号》是爱情片),所以不用检索。
    • 冷启动物品(比如小众科幻片《太空生活》)很少有人看,大模型没学过,所以需要检索知识图谱补充。
  • 策略细节:设定一个阈值 p(比如 50%),流行度排名后 50% 的物品才检索,前 50% 的热门物品不检索 —— 这样能省一半以上的检索时间。

3.5 知识子图检索(Knowledge Sub-graphs Retrieval)

翻译

给定知识子图检索的查询,我们采用与第一步索引相同的预训练语言模型(PLM),以确保查询与知识子图表示处于一致的嵌入空间(向量空间)。我们将需要检索的物品 

v_{j}

 的文本属性(例如物品的标题和描述)

x_{q_{j}}

定义为查询,并得到其语义信息qjqj = PLM(xqj ) ∈ Rd .

接下来,我们为物品 

v_{j}

 从 G 中检索 top-K 个最相似的子图

其中sim(⋅,⋅)是用于衡量查询表示 qj​​ 和知识向量数据库中知识子图表示

z_{g_{*}}

之间相似度的度量(比如余弦相似度)。最后,从用户ui的历史交互

V^{u_{i}}

中需要检索的物品对应的知识子图,将组成一个知识子图集合 G。

讲解
  • 核心:根据用户的历史物品,从知识向量数据库中找出最相似的 K 个知识子图。
  • 步骤:
    1. 生成查询向量(公式 4):比如用户历史物品是《沙丘 2》,把《沙丘 2》的标题、描述用 PLM 变成向量\(q_{j}\)。
    2. 计算相似度并检索(公式 5):在知识向量数据库中,找和\(q_{j}\)最像的 K 个知识子图(比如 K=3,找到《星际穿越》《银翼杀手 2049》《火星救援》的子图)。
    3. 组成子图集合 G:把这 3 个相似子图放在一起,后续用。
  • 为什么用相同的 PLM?因为如果索引时用 A 模型编码,查询时用 B 模型编码,两个向量不在一个 “频道”,没法计算相似度 —— 就像用中文和英文没法直接比 “意思相近” 一样。

3.6 知识子图重排序(Knowledge Sub-graphs Re-Ranking)

翻译

为了提升检索质量以增强推荐性能,下一步关键是知识子图重排序。如果用户\(u_{i}\)有很长的物品历史交互列表,将所有检索到的知识子图g' ∈ G直接输入大语言模型会导致信息过载。因此,我们执行重排序以缩短检索到的知识子图,并确保最相关的知识子图排在提示词的前面。具体而言,我们将推荐提示词作为重排序的查询,该提示词包含任务描述和用户的历史物品。例如,这个推荐提示词可以是 “给看过《黑客帝国》《钢铁侠》等电影的用户推荐一部最可能喜欢的电影?”。为了保持一致性,我们采用相同的预训练语言模型(PLM)来捕捉上述提示词的语义信息 P,并对 G 中的知识子图进行重排序,得到 top-N 个知识子图集合

讲解
  • 核心:解决 “信息过载” 和 “噪声” 问题 —— 只保留最相关的 N 个知识子图。
  • 步骤:
    1. 生成重排序查询 p:把完整的推荐提示词(比如 “用户看过《沙丘 2》《星际穿越》,推荐一部电影”)用 PLM 变成向量 p。
    2. 计算相似度并排序(公式 6):用 p 和之前检索到的子图集合 G 中的每个子图向量计算相似度,选最像的 N 个(比如 N=5),组成新的集合\(\hat{G}\)。
  • 为什么要重排序?比如用户看过 10 部电影,每部检索 3 个子图,一共 30 个子图 —— 直接传给大模型,大模型会 “看不过来”(信息过载),还会有无关子图(噪声)。重排序后只传 5 个最相关的,大模型能高效利用。

3.7 知识增强推荐(Knowledge-augmented Recommendation)

翻译

为了帮助大语言模型更好地理解检索到的知识子图的结构,并避免长上下文输入,我们进一步整合了另一个图神经网络(GNN)编码器

GNN_{\phi_{2}}^{Encoding }

(参数为

\phi_{2}

),以增强结构信息的表示学习:

h_{\hat{g}_{*}}=GNN_{\phi_{2}}^{Encoding }\left(\left\{\hat{g}_{*}: \hat{g}_{*} \in \hat{G}\right\}\right)

  (7)

我们还引入了一个多层感知机(MLP)投影器

MLP_{\theta}

(参数为 θ),用于将

\hat{G}

中所有子图的嵌入映射到大语言模型的语义空间:

其中[.;.]表示拼接操作。提取的知识子图嵌入

\hat{h}_{\hat{G}}

作为软提示词(soft prompt),被附加在大语言模型的输入 token 嵌入之前。

讲解
  • 核心:解决 “结构化信息没用好” 的问题 —— 用 GNN 处理子图结构,用 MLP 让大模型看懂。
  • 步骤:
    1. 输入大模型:把软提示词加在原始提示词前面,一起传给大模型 —— 比如 “[科幻片、太空场景、诺兰风格] + 用户看过《沙丘 2》,推荐电影”。
  • 关键优势:
    • 不用把子图转换成文字,保留了结构信息(GNN 的作用)。
    • 软提示词是向量,不是长文本,避免了大模型处理长文本的问题(慢、出错)。

MLP 投影到大模型空间(公式 8):把 5 个结构向量拼接起来,用 MLP 转换成大模型能看懂的向量

\hat{h}_{\hat{G}}

(软提示词)。

GNN 编码结构信息(公式 7):把重排序后的子图集合

\hat{G}

(比如 5 个科幻片子图)输入 GNN,GNN 会提取它们的 “结构关系”(比如 “都是科幻片”“都有太空场景”),生成每个子图的结构向量 

h_{\hat{g}_{*}}

3.8 K-RagRec 的优化(Optimization for K-RagRec)

翻译

训练过程大致可以看作是软提示词调优(soft prompt tuning),其中检索到的知识子图是一系列软图提示词(soft graph prompts)。形式上,生成过程可以表示为:

因此,我们不需要对大语言模型进行大规模微调,只需要学习两个 GNN(即

GNN_{\phi_{1}}^{Indexing }

GNN _{\phi_{2}}^{Encoding }

和投影器

MLP_{\theta}

的参数,而大语言模型的参数 δ 保持冻结。我们通过交叉熵损失

L(Y, A)

更新参数

\phi_{1}

\phi_{2}

和 θ,其中 Y 是真实标签(用户真正喜欢的物品),A 是大语言模型的预测结果。

讲解
  • 核心:训练时只调小部分参数,不微调大模型 —— 省成本、快。
  • 训练细节:
    • 冻结大模型参数 δ:GPT、LLaMA 这些大模型的参数不动,不用花几百万微调。
    • 只训练 3 个部分的参数:
      1. MLP 投影器(θ):让它更好地把结构向量转换成大模型能看懂的格式。
    • 损失函数:交叉熵损失(L (Y, A))—— 简单说就是 “让模型的预测 A 尽可能接近真实标签 Y”(比如用户真正喜欢的是《银翼杀手 2049》,就让模型预测这个的概率最高)。

编码用的 GNN(

\phi_{2}

):让它更好地提取结构信息。

索引用的 GNN(

\phi_{1}

):让它更好地生成子图索引。

4 实验(Experiment)

4.1 实验设置(Experimental Settings)

4.1.1 数据集(Datasets)
翻译

为了评估 K-RagRec 框架的性能,我们采用了三个真实世界数据集。MovieLens-1M¹ 包含约一百万条电影评分和电影的文本描述(即 “标题”)。MovieLens-20M² 是一个大规模电影评分数据集,包含超过 138,000 名用户对 27,000 部电影的 2000 多万条评分。Amazon Book³ 是一个书籍推荐数据集,记录了超过 1000 万条用户对书籍的评分和书籍标题。此外,我们采用了流行的知识图谱 Freebase⁴,并过滤出与这三个数据集相关的三元组,以重构知识图谱。这三个数据集和知识图谱的统计信息如表 3 所示。

讲解
  • 数据集选择:覆盖 “电影” 和 “书籍” 两个领域,既有小规模(MovieLens-1M)也有大规模(MovieLens-20M、Amazon Book)—— 证明我们的方法在不同领域、不同规模下都有效。
  • 知识图谱:用 Freebase(谷歌的知识图谱,包含大量真实实体和关系),但只保留和数据集相关的三元组(比如只保留 MovieLens 数据集中电影的导演、类型等关系)—— 避免无关信息干扰。
  • 表 3 关键信息(汇报时可以提):
    • MovieLens-1M:6038 个用户,3533 个电影,3498 个电影在知识图谱中(覆盖率很高)。
    • Amazon Book:600 多万用户,189 万本书,91700 本书在知识图谱中(虽然覆盖率低,但仍能有效推荐 —— 证明方法鲁棒)。
4.1.2 基线模型(Baselines)
翻译

在基于大语言模型的推荐研究领域,我们的工作率先探索了从知识图谱中检索知识以增强大语言模型的推荐能力。因此,为了评估有效性,我们将提出的框架与一系列精心设计的基于知识图谱RAG增强的大语言模型推荐基线进行了比较。首先,我们纳入了两种典型的仅推理方法:Retrieve-Rewrite-Answer(Wu 等人,2023b)(KG-Text)和 KAPING(Baek 等人,2023),前者检索子图并将其文本化,后者检索三元组。我们排除了一些基于知识推理路径的方法(Luo 等人,2023),因为仅从用户的交互物品中检索可靠的知识推理路径较为困难。接下来,我们将 K-RagRec 与各种基于检索增强的提示词调优方法进行比较,包括结合 KG-Text 的提示词调优(PT w/ KG-Text)、结合检索的 GraphToken(Perozzi 等人,2024)(GraphToken w/ RAG)以及 G-retriever(He 等人,2024)。此外,我们还将我们的方法与结合检索的 LoRA 微调(Lora w/ KG-Text)(Hu 等人,2021)进行了比较。

一、仅推理类(Inference-only):“拿来就用,完全不训练”

这类模型没有任何训练步骤,直接把知识图谱的信息丢给大模型生成推荐,属于 “最基础的 RAG”。 1. KG-Text(Wu et al., 2023b)具体做法:① 从知识图谱里检索目标物品的子图(比如《沙丘 2》的导演、类型、系列等三元组);② 把这些结构化的子图(三元组)转成自然语言文本(比如 “《沙丘 2》的导演是丹尼斯,类型是科幻,属于沙丘系列”);③ 把文本直接喂给大模型,让大模型基于这段文本推荐。缺点:转文本时会引入冗余 / 噪声(比如多余的描述),而且子图的结构关系(比如 “丹尼斯→其他科幻片”)被文本化后丢了——K-RagRec 是直接用 GNN 处理子图结构,不丢信息。2. KAPING(Baek et al., 2023)具体做法:① 从知识图谱里直接检索目标物品的三元组列表(比如只拿 “《沙丘 2》- 导演 - 丹尼斯”“《沙丘 2》- 类型 - 科幻”);② 把三元组列表直接传给大模型,让大模型基于这些零散的三元组推荐。缺点:只拿零散的三元组,没有子图的关联信息(比如丹尼斯的其他作品),大模型只能看到 “孤立的属性”,推荐不够准 ——K-RagRec 会检索高阶子图,包含间接关联。二、提示词调优类(Frozen LLM w/ PT):“训练提示词,不碰大模型参数”

这类模型冻结大模型的所有参数,只训练 “软提示词”(一段可学习的向量),把提示词和知识图谱信息结合喂给大模型,比 “仅推理” 效果好,但还是有缺陷。1. PT w/ KG-Text(Prompt Tuning with KG-Text)具体做法:① 流程和 “KG-Text” 一样(检索子图→转文本);② 额外训练一个软提示词(比如 “[科幻 | 导演关联 | 系列作品]” 对应的向量);③ 把 “软提示词 + KG-Text 的文本” 一起喂给大模型,大模型参数不动,只训提示词。缺点:检索还是用 KG-Text 那套(子图转文本、丢结构),检索深度只有一阶(没有间接关联)——K-RagRec 是粗细粒度检索 + 高阶子图,关联信息更多。2. GraphToken w/ RAG(Perozzi et al., 2024)具体做法:① 把知识图谱的 “节点 / 边” 转成特殊的图 Token(比如把 “《沙丘 2》” 编码成一个专属 Token [Node_Dune2]);② RAG 检索目标物品的图 Token,把这些 Token 加到提示词里;③ 训练这些图 Token 作为 “软提示词” 的一部分,大模型参数冻结。缺点:只检索 “单个图 Token”,没有子图的结构关系(比如 Token 之间的 “导演 - 作品” 关联没体现)——K-RagRec 是用 GNN 处理子图的结构,能捕捉关系。3. G-retriever(He et al., 2024)具体做法:① 从多种图(知识图谱、用户社交图)里检索目标物品的子图;② 把这些子图的信息整合到提示词中;③ 训练提示词,大模型参数冻结。缺点:检索时没有 “选择性”(所有物品都检索)+ 子图不重排序,导致冗余信息多、效率低 ——K-RagRec 有流行度选择性检索 + 子图重排序,又快又准。三、微调类(Fine-tuning):“微调大模型的部分参数”

这类模型会动大模型的参数(但用 LoRA 降低成本),效果不错但成本更高。1. Lora w/ KG-Text具体做法:① 流程和 “KG-Text” 一样(检索子图→转文本);② 用LoRA(低秩适配)微调大模型(只训大模型里的少量参数,不是全量微调);③ 让大模型学习 “结合 KG-Text 文本做推荐”。缺点:还是需要微调大模型,成本比 “仅训提示词 + GNN” 高(LoRA 虽然便宜,但比 K-RagRec 的 “训 GNN + 投影器” 贵)——K-RagRec 冻结大模型,只训小组件,成本更低。2. Lora w/ K-RagRec具体做法:把 K-RagRec 的组件(GNN 索引、选择性检索等)和 LoRA 微调结合,既用 K-RagRec 的知识子图,又微调大模型的 LoRA 参数。为什么这是 “最佳但没必要”:它效果最好,但 K-RagRec不微调大模型也能接近这个效果—— 突出 K-RagRec“低成本 + 高性能” 的优势。
讲解
  • 基线模型选择逻辑:覆盖 “仅推理”“提示词调优”“微调” 三类方法,全面对比。
  • 各基线模型特点(汇报时可以简单说,突出我们的优势):
    • 仅推理(KG-Text、KAPING):不训练,直接检索后生成 —— 简单但效果差(有噪声、没利用结构)。
    • 提示词调优(PT w/ KG-Text、GraphToken w/ RAG、G-retriever):训练提示词,不微调大模型 —— 比仅推理好,但检索深度不够、效率低。
    • 微调(Lora w/ KG-Text):用 LoRA 微调大模型(低成本微调方法)—— 效果不错,但仍需要微调(比我们的检索 + 提示词调优成本高)。
4.1.3 评估指标(Evaluation Metrics)
翻译

为了评估 K-RagRec 框架的有效性,我们采用了两种广泛使用的评估指标:准确率(Accuracy, ACC)和召回率 @k(Recall@k)(He 等人,2020)。我们报告 k=3 和 k=5 的结果。受近期研究(Zhang 等人,2024; Hou 等人,2022)的启发,我们采用留一法(leave-one-out)进行评估。具体而言,对于每个用户,我们选择用户最后交互的物品作为目标物品(正样本),并将目标物品之前的 10 个交互物品作为历史交互。然后,我们利用大语言模型从 20 个候选物品(M=20)中预测用户偏好的物品,其中包含 1 个目标物品和 19 个随机采样的负样本。对于训练过的模型(包括提示词调优和微调),我们通过提取每个物品的分配概率来计算 Recall@k,评估模型将目标物品排在前 k 个预测中的能力。此外,我们还在附录 A.5 中展示了候选物品数 M=10 的对比实验。

讲解
  • 评估指标通俗解释:
    • 准确率(ACC):模型预测的物品正好是用户喜欢的目标物品的比例 —— 比如 100 个用户,模型猜对了 40 个,ACC=40%。
    • 召回率 @k(Recall@k):用户喜欢的目标物品排在模型预测的前 k 个中的比例 —— 比如 k=3,100 个用户中,有 70 个用户的目标物品在模型推荐的前 3 名里,Recall@3=70%。
  • 评估方法(留一法):
    • 每个用户的 “最后一个交互物品” 作为 “要推荐的目标”(比如用户最后看了《银翼杀手 2049》,就假设模型要推荐这部)。
    • 用用户之前看的 10 部电影作为历史交互,让模型从 20 个候选物品(1 个目标 + 19 个无关)中选 —— 这样能真实模拟 “基于历史推荐下一个物品” 的场景。
4.1.4 参数设置(Parameter Settings)
翻译

我们基于 PyTorch 实现了该框架,并在 2 块 NVIDIA A6000-48GB GPU 上进行实验。我们采用 SentenceBert 对实体、关系和查询属性进行编码。对于 MovieLens-1M,我们使用 3 层图 Transformer 作为 GNNIndexing 和 GNNEncoding;对于 MovieLens-20M 和 Amazon Book,我们使用 4 层。层维度设置为 1024,头数设置为 4。流行度选择性检索策略的阈值 p 设置为 50%。对于每个需要检索的物品,我们检索 top-3 个最相似的子图。重排序后的知识子图数量 N 设置为 5。更多实验细节见附录 A.1。我们还在附录 A.12 中展示了几个提示词示例。

讲解
  • 关键参数(汇报时老师可能问,要记住):
    • 硬件:2 块 A6000-48GB GPU(不用管,只是说明实验条件)。
    • 编码模型:SentenceBert(常用的文本编码模型,效果好、速度快)。
    • GNN 层数:小规模数据集(1M)3 层,大规模(20M、Book)4 层 —— 层数多能捕捉更复杂的关系,但太多会过拟合。
    • 阈值 p=50%(热门前 50% 不检索,后 50% 检索)。
    • K=3(每个物品检索 3 个子图),N=5(重排序后保留 5 个子图)。

4.2 整体性能对比(Overall Performance Comparison)

翻译

我们在三个开源骨干大语言模型上比较了 K-RagRec 与各种基线模型的推荐性能:LLama-2-7b(Touvron 等人,2023)、LLama-3-8b(Dubey 等人,2024)和 QWEN2-7b(Yang 等人,2024)。结果如表 1 所示。从对比中,我们得到以下主要观察结果:

  • 简单地从知识图谱中检索并通过文本增强大语言模型的方法(即 KG-Text 和 KAPING)在 MovieLens-1M、MovieLens-20M 和 Amazon Book 数据集上的推荐准确率有限。
  • 与其他提示词调优 RAG 方法相比,以 LLama-2-7B 为骨干大语言模型的 K-RagRec 在所有数据集上比次优基线平均提升了 41.6%。以 LLama-3-8B 和 QWEN2-7B 为骨干大语言模型时,K-RagRec 也带来了 13% 到 32% 的平均提升,突显了我们提出的方法在增强大语言模型推荐性能方面的有效性。
  • 与结合简单 RAG 方法的 LoRA 微调相比,基于提示词调优的 K-RagRec 在大多数设置下实现了接近或更好的性能。值得注意的是,当用 LoRA 微调 K-RagRec 时,它取得了最佳性能。
讲解
  • 核心结论(汇报时重点强调):我们的 K-RagRec 效果最好!
  • 具体亮点:
    1. 比 “仅推理” 方法(KG-Text、KAPING)好太多 —— 因为它们把图转文本,有噪声、没利用结构。
    2. 比其他 “提示词调优 RAG” 方法平均提升 41.6%(LLama-2-7B)、13%-32%(其他大模型)—— 因为我们的检索更深、效率更高、结构利用更好。
    3. 比 “LoRA 微调 + 简单 RAG” 效果接近或更好,而且我们不用微调大模型(省成本);如果我们再加上 LoRA 微调,效果会是最好的 —— 证明我们的框架兼容性强。

4.3 消融实验(Ablation Study)

翻译

为了评估我们提出的框架中每个组件的影响,我们进行了消融实验,在 MovieLens 和 Amazon Book 数据集上比较了 K-RagRec 与四个消融变体,使用 LLama-2-7B 作为骨干大语言模型。每个消融变体的细节见附录 A.6。结果如图 3 所示。观察实验结果,我们发现移除框架的任何一个组件都会导致推荐的整体性能下降,证明了每个模块的有效性。其次,移除 GNN 编码器(GNN Encoder)会导致模型在 MovieLens 和 Amazon Book 数据集上的准确率分别下降 37% 和 45.9%,突显了采用 GNN 对知识子图的结构进行编码的重要性。更多细节见附录 A.6。

讲解
  • 消融实验:就是 “去掉框架的某个组件,看效果会不会变差”—— 变差了就说明这个组件有用。
  • 四个消融变体(附录 A.6,汇报时可以简单说):
    1. K-RagRec (-Indexing):去掉索引用的 GNN—— 没法捕捉高阶邻居。
    2. K-RagRec (-Popularity):去掉流行度选择性检索 —— 所有物品都检索,效率低、有噪声。
    3. K-RagRec (-Re-ranking):去掉重排序 —— 所有检索到的子图都输入,信息过载。
    4. K-RagRec (-Encoding):去掉编码用的 GNN—— 把图转文本,没利用结构。
  • 关键结论:
    1. 所有组件都有用 —— 去掉任何一个,效果都下降。
    2. GNN Encoder 最重要 —— 去掉后准确率下降 37%-45.9%,因为它是处理结构信息的核心。

4.4 效率评估(Efficiency Evaluation)

翻译

在本小节中,我们在 MovieLens-1M 数据集和 LLama-2-7b 上评估了我们提出的 K-RagRec 框架与基线模型的推理效率。我们记录了使用两块 NVIDIA A6000-48G GPU 进行一次推理的时间成本。单次推理的时间成本如表 2 所示。观察实验结果,我们注意到各种知识图谱 RAG 方法显著增加了推理时间,这是由于知识图谱的规模较大。相比之下,K-RagRec 与各种知识图谱 RAG 方法相比实现了最佳的计算效率,仅比无检索的直接推理慢约 0.1 秒。这些发现突显了 K-RagRec 的效率,并验证了我们的流行度选择性检索策略的有效性。

讲解
  • 核心:我们的方法不仅效果好,而且速度快!
  • 表 2 关键数据(汇报时可以提):
    • 无检索(w/o RAG):0.92 秒 / 次推理。
    • 其他 RAG 方法(KG-Text、KAPING 等):2.19 秒 - 6.47 秒 / 次(比无检索慢 2-7 倍)。
    • 我们的 K-RagRec:1.06 秒 / 次(只比无检索慢 0.14 秒)。
  • 原因:流行度选择性检索策略 —— 只检索 50% 的物品,省了一半时间。

4.5 参数分析(Parameter Analysis)

翻译

在本节中,我们评估了 K-RagRec 的三个主要超参数的影响:流行度选择性检索策略阈值 p、检索到的知识子图数量 K 和重排序后的知识子图数量 N。此外,我们在附录 A.10 和 A.11 中分析了各种 GNN 编码器变体和不同 GNN 层数对所提出框架的影响。

  1. 流行度选择性检索策略阈值 p 的影响:为了理解阈值 p 如何影响 K-RagRec,我们在 MovieLens-1M 和 LLama-2-7b 上进行了两个指标的实验。结果如图 4 所示。随着阈值 p 的增加,推荐性能先提升后下降。当阈值 p 设置为较小值时,只有少数物品被增强,导致检索不足和推荐准确率低。当 p 设置为较大值时,更多物品被检索用于增强。然而,由于重排序后的子图数量 N 是固定的,一些检索到的冷启动物品的知识子图被丢弃或排在列表后面,导致推荐性能不佳。另一方面,如图 4(c)所示,推理时间随着阈值 p 的增加几乎线性增长。因此,选择合适的阈值 p 对于平衡性能和推理时间至关重要。
  1. 检索到的知识子图数量 K 和重排序后的子图数量 N 的影响:在本部分中,我们分析了两个关键超参数的影响:检索到的知识子图数量 K 和重排序后的子图数量 N。首先,为了衡量 K 的影响,我们在 MovieLens 数据集上进行实验,固定 p=50%,N=5。如图 5 所示,当 K=1 时,可能会忽略一些相关的知识子图。另一方面,K 值过大可能会引入无关信息。因此,我们在实验中设置 K=3。接下来,我们通过固定 p=50% 和 K=3 来评估 N 的影响,并在图 6 中呈现结果。我们观察到,当 N 设置为 5 到 7 之间时,Amazon Book 数据集上的性能得到提升。一般而言,需要根据数据集和知识图谱的规模仔细选择 K 和 N。
讲解
  • 核心:我们的参数设置是经过实验验证的,不是瞎选的!
  • 三个参数的影响(汇报时简单说结论):
    1. 阈值 p:选 50% 最好 ——p 太小,检索的物品太少(知识不够);p 太大,检索的物品太多(噪声多、速度慢)。
    2. 检索子图数 K:选 3 最好 ——K=1,可能漏了相关子图;K>3,会引入无关子图。
    3. 重排序子图数 N:选 5-7 最好 ——N 太小,知识不够;N 太大,信息过载。

5 结论(Conclusion)

翻译

在本文中,我们提出了一个新颖的框架 K-RagRec,通过从知识图谱中检索可靠和最新的知识,来增强大语言模型的推荐能力。具体而言,我们首先引入了一个 GNN 和预训练语言模型(PLM)对知识图谱进行语义索引,实现知识图谱的粗粒度和细粒度检索。为了进一步提高检索效率,我们引入了一种流行度选择性检索策略,基于物品的流行度确定是否需要检索该物品。值得注意的是,K-RagRec 对检索到的知识子图进行了更具表达力的图编码,使大语言模型能够有效利用结构信息,并避免长上下文输入。在三个真实世界数据集上进行的大量实验证明了我们提出的框架的有效性。

讲解
  • 结论 = 方法论总结 + 核心贡献重申(汇报时可以和摘要呼应):
    1. 我们做了什么:提出 K-RagRec,用知识图谱 RAG 增强大语言模型推荐。
    2. 关键创新:语义索引(粗 + 细粒度)、流行度选择性检索(高效)、图编码(用好结构)。
    3. 结果:实验证明有效。

6 局限性(Limitations)

翻译

据我们所知,本工作是首次研究知识图谱 RAG 在基于大语言模型的推荐中的应用。因此,我们认识到本工作仍有以下三个主要局限性,可在未来研究中加以改进:

  • 首先,由于 GPU 资源限制,我们仅能在 7b 和 8b 模型上评估我们的框架。因此,在未来的工作中,我们计划将我们的方法扩展到更大的模型(如 13b、70b),以全面评估其有效性和可扩展性。
  • 其次,我们仅使用 Freebase 作为外部知识图谱,因为它在推荐任务中最常用。因此,我们还计划采用其他知识图谱(如 YAGO、DBpedia、Wikipedia),以更好地理解不同知识源对所提出方法性能的影响。
  • 最后,为基于大语言模型的推荐系统设计智能的选择性检索策略是一项重要且具有挑战性的任务。在本工作中,我们提出利用流行度来确定检索哪些物品,以提高检索效率。未来,我们将探索更灵活的机制(如强化学习),根据用户兴趣的变化动态更新策略。
讲解
  • 局限性 = 诚实承认不足 + 未来改进方向(汇报时老师会觉得你有深入思考):
    1. 模型规模有限:只在 7b/8b 模型上实验,未来要试 13b/70b 大模型。
    2. 知识图谱单一:只用电 Freebase,未来要试 YAGO、DBpedia 等。
    3. 检索策略简单:只用流行度,未来要用强化学习(让策略根据用户兴趣动态调整)。

附录(Appendix)

A.7 泛化性研究(Generalization Study)
  • 做什么:在 MovieLens-1M 上训练,在 MovieLens-20M(同领域不同规模)和 Amazon Book(不同领域)上测试。
  • 结果:在 20M 上比 SOTA 提升 21.6%,在 Book 上比提示词调优基线提升 8.7%—— 证明我们的方法能跨领域、跨规模通用。
A.8 幻觉研究(Study of Hallucination)
  • 做什么:在候选物品中加入虚构电影,看模型会不会推荐。
  • 结果:LLama-2 直接推理时幻觉率 39.1%,用了 K-RagRec 后降到 2.7%(降了 93.1%);QWEN2 从 4.7% 降到 0.9%(降了 80.9%)—— 证明我们的方法能有效解决幻觉问题。
A.9 冷启动推荐研究(Study of Cold Start Recommendation)
  • 做什么:专门测试 “冷启动物品”(新物品 / 小众物品)的推荐效果。
  • 结果:K-RagRec 在冷启动场景下的 ACC=0.406,Recall@5=0.834,远高于其他基线 —— 证明我们的方法能解决冷启动问题(推荐系统的经典难题)。
A.10 GNN 编码器对比(Study of Four GNN Encoders)
  • 做什么:测试 GCN、GAT、Graph Transformer、GraphSAGE 四种 GNN 作为编码器的效果。
  • 结果:四种 GNN 效果都差不多 —— 证明我们的框架对 GNN 类型不敏感,鲁棒性强。
A.11 GNN 层数研究(Study of GNN Layer Numbers)
  • 做什么:测试 3、4、5 层 GNN 的效果。
  • 结果:4 层效果最好 —— 层数太少捕捉不到复杂关系,太多会过拟合。
A.12 提示词示例(Used Prompt)
  • 展示了电影和书籍推荐的具体提示词(比如用户历史 + 候选物品列表)—— 证明实验设置很具体,不是瞎做的。

Read more

从黑盒到白盒:基于GB28181/RTSP全栈源码交付的AI视频平台OEM与低代码集成实战

引言:掌握核心代码,重塑交付价值链 对于系统集成商(SI)和独立软件开发商(ISV)而言,依赖厂商的“黑盒”产品无异于将命运交予他人。功能定制周期长、接口开放受限、Logo无法替换、私有协议无法打通……这些痛点往往导致项目交付延期,利润微薄。据统计,在传统模式下,企业需投入大量人力重复开发基础视频能力,约95%的成本并未转化为业务价值。 如何破局?全源码交付是关键。今天,我将深度解析一款支持OEM贴牌、纯自研代码的企业级AI视频管理平台。它不仅提供了丰富的RESTful API,更开放了从流媒体内核到算法商城的完整工程代码,让开发者能像搭积木一样构建专属的安防应用。 一、源码交付的核心价值:从“使用者”到“拥有者” 该平台坚持“纯自研代码,任意形式合作”的理念,为合作伙伴提供极致的定制化能力。 * OEM贴牌自由:支持一键替换系统Logo、名称、版权信息,甚至深度修改UI风格,帮助ISV快速打造自有品牌产品,无需等待厂商排期。 * 算法自主可控:

(保姆级教程)通过官方API搭建一个自己的QQ群聊机器人

(保姆级教程)通过官方API搭建一个自己的QQ群聊机器人

简介 用官方api做了一个qq群聊机器人的demo,有获取天气、简单编辑待办、从本地发送图片等功能。 建了个群,欢迎来交流( QQ群号:710101225 重新写了个基于nonebot框架的教程,个人认为比官方sdk更容易开发:https://blog.ZEEKLOG.net/Clovertaa/article/details/145452834 获取 机器人demo GitHub仓库:GitHub - ClovertaTheTrilobita/SanYeCao-bot: 一个基于官方API的QQ群聊机器人 官方SDK GitHub仓库:GitHub - tencent-connect/botpy: QQ频道机器人PythonSDK 教程 前置需求 本项目使用conda环境和git操作。如果未安装这两个工具请首先移步 史上最全最详细的Anaconda安装教程-ZEEKLOG博客 Git 详细安装教程(详解 Git 安装过程的每一个步骤)_git安装-ZEEKLOG博客 (这俩教程我粗略看了下感觉挺好的,如果不适合你那烦请自行百度了qwq) 一

EgoPoseFormer v2:解决 AR/VR 场景中的第一视角人体动捕问题

目录 一、前言 二、EgoPoseFormer v2 核心内容总结 1. 研究背景与挑战 2. EPFv2 的核心创新 3. 实验结果 4. 应用价值 三、DeepSeek是不是发布过关于图像识别顺序的因果时间注意力机制?         3.1 它们各自是怎么实现的,技术上有没有底层的联系和区别? 1.DeepSeek的“视觉因果流” (空间逻辑重排) 2.Meta EPFv2的“因果时间注意力” (时间逻辑依赖) 3.底层联系与核心区别 4.总结 四、EPFv2和DeepSeek OCR2和SAM2跟踪的区别和联系         4.1 EPFv2和DeepSeek OCR2和SAM2跟踪的区别和联系是什么?         4.2 技术上的相似性 🧩 不同的应用方式:从“基础模块”到“特定智能”

Flutter 三方库 angular_bloc 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致响应、工业级的 AngularDart 与 BLoC 协同架构实战

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 angular_bloc 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致响应、工业级的 AngularDart 与 BLoC 协同架构实战 在鸿蒙(OpenHarmony)系统的桌面级协同(如分布式办公网页版)、后台管理终端或高度复杂的 Web 仪表盘开发中,如何将经典的 BLoC 状态管理应用于 AngularDart 环境?angular_bloc 为开发者提供了一套天衣无缝的组件化连接器。本文将实战演示其在鸿蒙 Web 生态中的深度应用。 前言 什么是 Angular BLoC?它是一套专门为 AngularDart 框架设计的 BLoC 实现。通过指令(Directives)和管道(Pipes),它实现了由于数据流变化触发的 UI