LLMRec

GitHub
520 66 中等 1 次阅读 昨天Apache-2.0数据工具
AI 解读 由 AI 自动生成,仅供参考

LLMRec 是一个专为推荐系统设计的开源框架,旨在利用大语言模型(LLM)的强大语义理解能力,解决传统推荐算法在数据稀疏和内容理解不足方面的难题。它通过三种创新的图增强策略,将自然语言视角引入用户与物品的交互图中:一是强化用户与物品之间的互动边连接;二是丰富物品节点的属性描述;三是构建更精准的用户画像。这种方法能有效挖掘如 Netflix、MovieLens 等平台中蕴含的多模态内容信息,显著提升推荐准确率。

该工具特别适合从事推荐系统研究的研究人员、算法工程师以及希望探索大模型与传统图神经网络结合的开发者使用。其核心亮点在于巧妙地将大语言模型生成的文本增强数据(如 GPT-3.5 生成的描述和嵌入)融入图结构学习中,无需复杂架构调整即可实现性能跃升。项目基于 PyTorch 构建,提供了完整的数据预处理脚本、多模态数据集及训练代码,支持快速复现论文结果并进行二次开发。无论是学术探索还是工业界落地尝试,LLMRec 都为提升推荐系统的智能化水平提供了一条高效可行的技术路径。

使用场景

某流媒体平台的数据科学团队正致力于优化其电影推荐系统,试图解决传统模型在冷启动和用户兴趣理解上的瓶颈。

没有 LLMRec 时

  • 交互数据稀疏:新用户或冷门电影缺乏足够的点击历史,导致基于协同过滤的算法无法建立有效的用户 - 物品连接,推荐结果随机且不准。
  • 内容理解浅层:系统仅依赖有限的标签(如“动作”、“喜剧”)描述电影,无法捕捉剧情深度、情感基调等细粒度语义特征。
  • 用户画像模糊:用户行为被简化为 ID 序列,缺乏自然语言层面的兴趣总结,难以区分“喜欢科幻特效”与“喜欢科幻哲学”的本质差异。
  • 多模态融合困难:虽然拥有海报和简介文本,但传统模型难以将这些非结构化数据有效融入图神经网络进行联合推理。

使用 LLMRec 后

  • 交互图增强:LLMRec 利用大模型生成潜在的“用户 - 电影”互动边,即使在没有实际点击的情况下,也能基于语义相似性补全稀疏图谱,显著缓解冷启动问题。
  • 属性深度扩充:通过 LLM 自动重写和扩充电影节点属性,将简短简介转化为包含主题、风格、情感色彩的丰富文本描述,提升了物品表征的区分度。
  • 精细化用户建模:工具自动分析用户历史行为并生成自然语言画像(如“偏爱高智商犯罪剧”),使推荐系统能从语义层面精准匹配用户深层需求。
  • 无缝多模态整合:LLMRec 将生成的文本增强数据直接嵌入图结构,让推荐模型能同时利用视觉特征和深层语义信息,大幅提升了排序准确率。

LLMRec 通过将大语言的语义理解能力注入推荐图谱,成功将稀疏的行为数据转化为丰富的语义连接,实现了从“猜你可能喜欢”到“懂你为何喜欢”的跨越。

运行环境要求

操作系统
  • 未说明
GPU

需要 NVIDIA GPU(用于运行 CLIP-ViT 和 Sentence-BERT 编码器及推荐模型训练),具体型号和显存大小未说明,需支持 CUDA

内存

未说明

依赖
notes1. 项目依赖 requirements.txt 文件安装环境,但 README 未列出具体包列表。 2. 第一阶段数据增强需调用 OpenAI API (gpt-3.5-turbo-0613, text-embedding-ada-002),需准备 API Key。 3. 视觉编码使用 CLIP-ViT (openai/clip-vit-base-patch32),文本编码使用 Sentence-BERT。 4. 支持的数据集为 Netflix 和 MovieLens,需手动下载预处理后的数据。
python未说明
torch
transformers (隐含,用于 CLIP-ViT)
sentence-transformers (隐含,用于 Sentence-BERT)
LLMRec hero image

快速开始

LLMRec:用于推荐的大语言模型与图增强

这是针对 WSDM 2024 论文 LLMRec:用于推荐的大语言模型与图增强 的 PyTorch 实现。

Wei Wei, Xubin Ren, Jiabin Tang, Qingyong Wang, Lixin Su, Suqi Cheng, Junfeng Wang, Dawei YinChao Huang*。 (*通讯作者)

数据智能实验室@香港大学, 百度公司。

YouTube

本仓库托管了 LLMRec 的代码、原始数据以及增强后的数据。


LLMRec

LLMRec 是一种新颖的框架,通过将三种简单而有效的基于大语言模型的图增强策略应用于推荐系统,从而提升推荐效果。LLMRec 充分利用在线平台(如 Netflix、MovieLens)中的内容,从自然语言的角度出发,通过 i) 强化用户-物品交互边,ii) 增强物品节点属性,iii) 进行用户节点画像,来对交互图进行增强。


🎉 新闻 📢📢

  • [2024.3.20] 🚀🚀 📢📢📢📢🌹🔥🔥🚀🚀 由于基线 LATTICEMMSSL 需要一些小的修改,我们提供了只需修改数据集路径即可轻松运行的代码。

  • [2023.11.3] 🚀🚀 发布了用于构建提示词的脚本。

  • [2023.11.1] 🔥🔥 发布了多模态数据集(Netflix、MovieLens),包括文本数据和视觉数据。

  • [2023.11.1] 🚀🚀 发布了由 gpt-3.5-turbo-0613 增强的文本数据,以及由 text-embedding-ada-002 增强的嵌入数据。

  • [2023.10.28] 🔥🔥 我们的 LLMRec 完整论文已在 LLMRec:用于推荐的大语言模型与图增强 中发布。

  • [2023.10.28] 🚀🚀 发布了 LLMRec 的代码。

👉 待办事项

  • 提供不同规模的数据集版本。
  • ...

依赖项

pip install -r requirements.txt

使用方法

第一阶段:基于大语言模型的数据增强

cd LLMRec/LLM_augmentation/
python ./gpt_ui_aug.py
python ./gpt_user_profiling.py
python ./gpt_i_attribute_generate_aug.py

第二阶段:使用 LLM 增强数据进行推荐训练

cd LLMRec/
python ./main.py --dataset {DATASET}

支持的数据集:netflix, movielens

以 'netflix' 数据集为例的具体代码执行:

# LLMRec
python ./main.py

# 不使用 u-i
python ./main.py --aug_sample_rate=0.0

# 不使用 u
python ./main.py --user_cat_rate=0

# 不使用 u&i
python ./main.py --user_cat_rate=0  --item_cat_rate=0

# 不进行剪枝
python ./main.py --prune_loss_drop_rate=0

数据集

├─ LLMRec/ 
    ├── data/
      ├── netflix/
      ...

多模态数据集

🌹🌹 如果您使用 'netflix' 数据集,请引用我们的论文~ ❤️

我们基于在 Kaggle 网站上发布的原始 Netflix Prize Data 收集了一个多模态数据集。该数据格式可以直接兼容最先进的多模态推荐模型,如 LLMRecMMSSLLATTICEMICRO 等,无需任何额外的数据预处理。

文本模态: 我们在 "item_attribute.csv" 文件中发布了从原始数据集中整理出的物品信息。此外,我们还将经过大语言模型增强的文本信息整合到了 "augmented_item_attribute_agg.csv" 文件中。(以下三张图片分别展示了 (1) Kaggle 网站上关于 Netflix 的描述,(2) 原始 Netflix Prize Data 中的文本信息,以及 (3) 经过大语言模型增强的文本信息。)

Image 1
Image 2
Image 2

视觉模态: 我们在 "Netflix_Posters" 文件夹中发布了通过网络爬取获得的视觉信息。(下图展示了根据 Netflix Prize Data 中的物品信息通过网络爬取得到的海报。)

Image 1

原始多模态数据集与增强数据集

Image 1

下载 Netflix 数据集。

🚀🚀 我们提供了处理后的数据(即协同过滤训练数据及基本的用户-物品交互信息、包含物品图像和文本的原始多模态数据、编码后的视觉/文本特征,以及经大语言模型增强的文本/嵌入)。 🌹 我们希望为社区做出贡献,并促进您的研究 🚀🚀 ~

对多模态内容进行编码。

我们分别使用CLIP-ViTSentence-BERT作为视觉侧信息和文本侧信息的编码器。


提示与完成示例

基于LLM的隐式反馈增强

提示

根据用户的观影历史,为用户推荐电影,每部电影需包含片名、年份和类型。历史:[332]《心灵奇旅》(1993),喜剧|奇幻 [364]《扫帚男》(2002),喜剧|剧情|浪漫 候选:[121]《吸血鬼情人》(1970),恐怖 [155]《水塘历险记》(2003),纪录片 [248]《看不见的客人》(2016),犯罪、剧情、悬疑 请从候选中给出用户喜欢和不喜欢的电影索引,仅以[]形式输出。

完成

[248] [121]

基于LLM的用户画像增强

提示

根据用户的观影历史,生成用户画像,每部电影需包含片名、年份和类型。历史:[332]《心灵奇旅》(1993),喜剧|奇幻 [364]《扫帚男》(2002),喜剧|剧情|浪漫 请输出以下用户信息,输出格式为:{age: , gender: , liked genre: , disliked genre: , liked directors: , country: , language: }

完成

{age: 50, gender: female, liked genre: 喜剧|奇幻, 喜剧|剧情|浪漫, disliked genre: 惊悚, 恐怖, liked directors: Ron Underwood, country: 加拿大, 美国, language: 英语}

基于LLM的物品属性增强

提示

提供给定电影的相关信息。[332]《心灵奇旅》(1993),喜剧|奇幻 需查询的信息为:导演、国家、语言。请以“导演,国家,语言”的形式输出。

完成

Ron Underwood, 美国, 英语

增强数据

增强的隐式反馈(边)

对于每个用户,0代表正样本,1代表负样本。
Image 2

增强的用户画像(用户节点)

对于每个用户,字典存储了增强后的信息,如‘年龄’、‘性别’、‘喜欢的类型’、‘不喜欢的类型’、‘喜欢的导演’、‘国家’和‘语言’。
Image 2
增强的物品属性

对于每个物品,字典存储了增强后的信息,如‘导演’、‘国家’和‘语言’。

Image 2

用于基于LLM的隐式反馈增强的候选准备

步骤1:选择基础模型,如MMSSL或LATTICE

步骤2:获取用户嵌入和物品嵌入

步骤3:生成候选

      _, candidate_indices = torch.topk(torch.mm(G_ua_embeddings, G_ia_embeddings.T), k=10)  
      pickle.dump(candidate_indices.cpu(), open('./data/' + args.datasets +  '/candidate_indices','wb'))

具体候选数据示例。

In [3]: candidate_indices
Out[3]: 
tensor([[ 9765,  2930,  6646,  ..., 11513, 12747, 13503],
        [ 3665,  8999,  2587,  ...,  1559,  2975,  3759],
        [ 2266,  8999,  1559,  ...,  8639,   465,  8287],
        ...,
        [11905, 10195,  8063,  ..., 12945, 12568, 10428],
        [ 9063,  6736,  6938,  ...,  5526, 12747, 11110],
        [ 9584,  4163,  4154,  ...,  2266,   543,  7610]])

In [4]: candidate_indices.shape
Out[4]: torch.Size([13187, 10])

引用

如果您认为本工作对您的研究有所帮助,请考虑引用我们的论文。

@article{wei2023llmrec,
  title={LLMRec: Large Language Models with Graph Augmentation for Recommendation},
  author={Wei, Wei and Ren, Xubin and Tang, Jiabin and Wang, Qinyong and Su, Lixin and Cheng, Suqi and Wang, Junfeng and Yin, Dawei and Huang, Chao},
  journal={arXiv preprint arXiv:2311.00423},
  year={2023}
}

致谢

本代码的结构主要基于MMSSLLATTICEMICRO。感谢他们的工作。

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85.1k|★★☆☆☆|4天前
图像数据工具视频

funNLP

funNLP 是一个专为中文自然语言处理(NLP)打造的超级资源库,被誉为"NLP 民工的乐园”。它并非单一的软件工具,而是一个汇集了海量开源项目、数据集、预训练模型和实用代码的综合性平台。 面对中文 NLP 领域资源分散、入门门槛高以及特定场景数据匮乏的痛点,funNLP 提供了“一站式”解决方案。这里不仅涵盖了分词、命名实体识别、情感分析、文本摘要等基础任务的标准工具,还独特地收录了丰富的垂直领域资源,如法律、医疗、金融行业的专用词库与数据集,甚至包含古诗词生成、歌词创作等趣味应用。其核心亮点在于极高的全面性与实用性,从基础的字典词典到前沿的 BERT、GPT-2 模型代码,再到高质量的标注数据和竞赛方案,应有尽有。 无论是刚刚踏入 NLP 领域的学生、需要快速验证想法的算法工程师,还是从事人工智能研究的学者,都能在这里找到急需的“武器弹药”。对于开发者而言,它能大幅减少寻找数据和复现模型的时间;对于研究者,它提供了丰富的基准测试资源和前沿技术参考。funNLP 以开放共享的精神,极大地降低了中文自然语言处理的开发与研究成本,是中文 AI 社区不可或缺的宝藏仓库。

79.9k|★☆☆☆☆|6天前
语言模型数据工具其他

cs-video-courses

cs-video-courses 是一个精心整理的计算机科学视频课程清单,旨在为自学者提供系统化的学习路径。它汇集了全球知名高校(如加州大学伯克利分校、新南威尔士大学等)的完整课程录像,涵盖从编程基础、数据结构与算法,到操作系统、分布式系统、数据库等核心领域,并深入延伸至人工智能、机器学习、量子计算及区块链等前沿方向。 面对网络上零散且质量参差不齐的教学资源,cs-video-courses 解决了学习者难以找到成体系、高难度大学级别课程的痛点。该项目严格筛选内容,仅收录真正的大学层级课程,排除了碎片化的简短教程或商业广告,确保用户能接触到严谨的学术内容。 这份清单特别适合希望夯实计算机基础的开发者、需要补充特定领域知识的研究人员,以及渴望像在校生一样系统学习计算机科学的自学者。其独特的技术亮点在于分类极其详尽,不仅包含传统的软件工程与网络安全,还细分了生成式 AI、大语言模型、计算生物学等新兴学科,并直接链接至官方视频播放列表,让用户能一站式获取高质量的教育资源,免费享受世界顶尖大学的课堂体验。

79.8k|★☆☆☆☆|6天前
其他图像数据工具

lobehub

LobeHub 是一个致力于工作与生活的智能体协作平台,旨在帮助用户发现、构建并与不断成长的 AI 智能体队友协同工作。它解决了当前 AI 应用中单点交互效率低、难以形成规模化协作网络的问题,将“智能体”确立为工作的基本单元,让人类与 AI 能够共同进化。 无论是开发者、研究人员还是普通用户,都能通过 LobeHub 轻松设计多智能体协作流程。平台支持一键安装 MCP 插件、访问丰富的智能体市场,并提供本地与云端数据库管理、多用户协作等高级功能。其独特的技术亮点包括对多种大模型服务商的兼容、本地大模型部署支持、视觉识别、语音对话(TTS/STT)、文生图以及思维链(Chain of Thought)等能力。此外,LobeHub 还具备分支对话、工件生成、文件上传与知识库集成等实用特性,并适配桌面端、移动端及 PWA 场景,支持自定义主题。 通过开源与自托管选项,LobeHub 为构建人机共演的未来协作网络提供了灵活、可扩展的基础设施。

75.1k|★★☆☆☆|昨天
语言模型数据工具Agent

scikit-learn

scikit-learn 是一个基于 Python 构建的开源机器学习库,依托于 SciPy、NumPy 等科学计算生态,旨在让机器学习变得简单高效。它提供了一套统一且简洁的接口,涵盖了从数据预处理、特征工程到模型训练、评估及选择的全流程工具,内置了包括线性回归、支持向量机、随机森林、聚类等在内的丰富经典算法。 对于希望快速验证想法或构建原型的数据科学家、研究人员以及 Python 开发者而言,scikit-learn 是不可或缺的基础设施。它有效解决了机器学习入门门槛高、算法实现复杂以及不同模型间调用方式不统一的痛点,让用户无需重复造轮子,只需几行代码即可调用成熟的算法解决分类、回归、聚类等实际问题。 其核心技术亮点在于高度一致的 API 设计风格,所有估算器(Estimator)均遵循相同的调用逻辑,极大地降低了学习成本并提升了代码的可读性与可维护性。此外,它还提供了强大的模型选择与评估工具,如交叉验证和网格搜索,帮助用户系统地优化模型性能。作为一个由全球志愿者共同维护的成熟项目,scikit-learn 以其稳定性、详尽的文档和活跃的社区支持,成为连接理论学习与工业级应用的最

65.8k|★☆☆☆☆|3天前
开发框架其他数据工具