LLMRank
LLMRank旨在研究大语言模型作为推荐系统排序模型的能力。[论文]
Yupeng Hou†, Junjie Zhang†, Zihan Lin, Hongyu Lu, Ruobing Xie, Julian McAuley, Wayne Xin Zhao. 大语言模型作为推荐系统的零样本排序器。ECIR 2024。
🛍️ 大语言模型作为零样本排序器
我们在指令跟随范式中使用大语言模型作为排序模型。对于每个用户,我们首先构建两个自然语言模式,分别包含顺序交互历史和检索的候选项目。然后将这些模式填入自然语言模板作为最终指令。通过这种方式,预期大语言模型能理解指令并按照指令建议输出排序结果。
🚀 快速开始
- 将您的OpenAI API密钥写入
llmrank/openai_api.yaml
。 - 解压数据集文件。
有关数据准备的详细信息,请参阅[数据准备]。cd llmrank/dataset/ml-1m/; unzip ml-1m.inter.zip cd llmrank/dataset/Games/; unzip Games.inter.zip
- 安装依赖项。
pip install -r requirements.txt
- 在ML-1M数据集上评估ChatGPT的零样本排序能力。
cd llmrank/ python evaluate.py -m Rank
🔍 关键发现
请点击每个"观察"下方的链接,查找重现结果的代码和脚本。
观察1. 大语言模型难以感知用户历史的顺序,但可以被触发感知顺序
大语言模型可以利用历史行为进行个性化排序,但难以感知给定顺序交互历史的顺序。
通过采用特别设计的提示,如侧重近期的提示和上下文学习,大语言模型可以被触发感知历史用户行为的顺序,从而提高排序性能。
代码在这里 -> [重现脚本]
观察2. 使用大语言模型进行排序存在偏见
大语言模型在排序时受到位置偏见和流行度偏见的影响,这可以通过特别设计的提示或自举策略来缓解。
代码在这里 -> [重现脚本]
观察3. 有前景的零样本排序能力
大语言模型具有有前景的零样本排序能力,...
...,特别是对于由多个具有不同实用策略的候选生成模型检索的候选项。
代码在这里 -> [重现脚本]
🌟 致谢
如果您发现我们的代码有帮助,请引用以下论文。
@inproceedings{hou2024llmrank,
title={Large Language Models are Zero-Shot Rankers for Recommender Systems},
author={Yupeng Hou and Junjie Zhang and Zihan Lin and Hongyu Lu and Ruobing Xie and Julian McAuley and Wayne Xin Zhao},
booktitle={{ECIR}},
year={2024}
}
实验使用开源推荐库RecBole进行。