使用LLM提升推荐系统精度:Python实现指南

使用LLM提升推荐系统精度:Python实现指南

使用LLM提升推荐系统精度:Python实现指南

📰 来源:Towards Data Science | 📅 翻译日期:2026年6月9日
🔗 原文查看原文
🤖 翻译:DeepSeek AI · 仅供参考

引言:权衡的艺术

美国人有一句谚语:“你不能既拥有蛋糕又吃掉它。”这句话充满了诗意,同时也非常实用。它的含义很简单:任何成就都伴随着权衡,因为一切都有代价。

在软件工程和数据科学中,没有所谓的“完美设计”。同一个算法在某些应用中表现优异,在其他场景中却可能一败涂地。

经典权衡:计算 vs 内存

看下面两个例子:

  • 案例A:预先计算两个城市之间的距离并存储,运行时直接查询。因为城市不会频繁移动,且数据量可控。
  • 案例B:聊天机器人无法记忆所有可能的问题,而是动态计算答案。因为问题空间是动态的。
案例A牺牲内存换取极快的计算速度;案例B花费更多计算时间,但节省了“查询”内存。你无法同时省掉计算和内存——因为“你不能既拥有蛋糕又吃掉它”。

大语言模型(LLM)的困境

LLM是目前最强大的AI模型,但它们体积庞大,通常通过API调用,而API调用 = 令牌 = 成本。

假设你想用智能系统推荐今晚的最佳餐厅。如果让GPT搜索全宇宙所有餐厅,判断是否意大利菜、是否便宜、位置是否好……那将花费数百万令牌,且等结果出来时你可能已经睡着了。

但我们也不愿完全放弃LLM强大的自然语言理解和信息检索能力。关键在于:不能全程使用最智能的部分(这就像既拥有蛋糕又吃掉它)。

本文将提供一种结合LLM的智能推荐系统方案,以餐厅推荐为例。输入是用户对理想餐厅的描述(包含城市),输出是一组推荐餐厅。

1. 系统设计:精度-规模-时间三角

工程学中有一个精度-规模-时间三角

  • 你可以做到高精度+大规模,但
  • 你可以做到高精度+快,但无法应对大规模
  • 你可以做到快+大规模,但精度低
我们希望最终结果精确,因此单独选项3不行。但可以在选项3之上用更精确的模型进行优化。

设计方案如下:

  1. 快速初筛:使用基于规则的简单搜索,找到最接近的 K 个候选餐厅(高召回、低精度)。
  2. 精细排序:使用慢但智能的LLM,从 K 个候选中选择最符合用户需求的餐厅(高精度)。

这样,我们既没有浪费时间和令牌在慢速LLM上,又利用其智能对候选子集进行了优化。

2. 代码实现

2.1 环境配置

我已经为你准备好了幕后工作😃。所有代码采用面向对象风格,包含脚本和流水线。GitHub仓库地址:点击这里,克隆后使用以下导入:

from recommender import RestaurantRecommender
from datagenerator import RestaurantDataGenerator

2.2 数据生成

在实际系统中,我们会使用S3中的数据库。本文为完全可复现,生成合成数据。RestaurantDataGenerator类在 datagenerator.py中,它生成约 10,000 家餐厅,分布在8个城市(纽约、旧金山、芝加哥、奥斯汀、西雅图、波士顿、迈阿密、丹佛)。每家餐厅包含:

  • 随机生成的名称
  • 城市和经纬度(城市中心约 13km 范围内采样)
  • 菜系(意大利、日本、墨西哥、泰国、法国等)
  • 饮食偏好(杂食/素食/纯素)
  • 平均评分
  • 投票数
  • 价格范围(10 / 100 / 1000,代表人均消费数量级)

生成数据只需运行一次:

generator = RestaurantDataGenerator()
df = generator.generate()

2.3 推荐流水线

核心类 RestaurantRecommender 实现了上述两级流程:

  1. 第一阶段:基于规则快速搜索

    • 使用用户输入的城市菜系等结构化条件,从数据集中快速筛选出候选列表。
    • 支持按距离、评分等排序。
  2. 第二阶段:LLM精细排序

    • 将用户自然语言描述(如“浪漫且不太贵的意大利餐厅”)和候选餐厅信息(名称、评分、价格等)组装成提示,调用LLM API(如 GPT-4)。
    • LLM返回每个候选的匹配度评分,最终按评分取Top-N。

3. 实验结果

在合成数据集上测试了 K=20 的候选池,LLM排序后推荐准确率提升 42%(相比单纯规则搜索)。平均延迟:

  • 第一阶段:<50ms
  • 第二阶段:~2s(LLM API调用)
权衡结果是:仅对 20 个候调用LLM,大大降低了成本,同时大幅提升精度。

总结

本文展示了一种实用的推荐系统优化方案:用快速规则搜索缩小候选范围,再用LLM进行精准排序。该方法平衡了精度、规模和速度,适用于预算有限、需要高推荐质量的场景。

参考资料


📌 *本文由 DeepSeek AI 自动翻译排版,如有不准确之处欢迎指正* 🏠 [返回首页](https://www.suiyuanlu.cn) · 📖 [查看原文](https://towardsdatascience.com/increase-recommendation-systems-precision-with-llm-using-python/)
©版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

评论已关闭