跳转到内容
~/tosaki
返回

AI副屏(下):利用LLM构建多源新闻的个性化推荐流

编辑页面

在上篇中,我们探讨了副屏的硬件部署。对我而言,副屏最核心的需求是准实时地展示我感兴趣的最新资讯。传统上,这往往需要一个复杂的推荐系统来支持;但借助LLM的强大能力,我们可以通过极简的配置(Almost One-Shot),构建一个专属于个人的精准推荐流。

为此,我开发了 AI-News-Dashboard 项目。其实践思路是:利用 RSS/API 从多种渠道广泛召回新闻,使用 LLM 根据我的个人偏好对每条内容进行评分,最后结合 时间衰减算法 生成一个兼顾时效性与精准度的推荐榜单。

AI-News-Demo

你可以通过以下两个 Demo 体验不同偏好下的推荐效果:

技术实现细节

1. 新闻获取(召回层)

目前主要通过 RSS 协议进行广泛的内容拉取,这是目前最通用的网页聚合方案。针对 RSS 的配置,主要的实现策略如下:

获取到的新闻及后续处理结果都会存入 SQLite 数据库。主程序会定期轮询,仅存储增量内容以供后续处理。

2. 个性化偏好设定

为了让 LLM 准确理解我的需求,Prompt 的设计至关重要。我在 Prompt 中详细定义了感兴趣的领域,并提供了几个具体的打分示例(Few-Shot),让 LLM 模仿我的标准进行评分。实践证明,LLM 在这种任务中表现出色,且调整偏好只需修改 Prompt 即可,非常灵活。

3. LLM 处理流程(粗排与精排)

在这个流程中,每条新闻会经过两轮 LLM 处理,分别承担不同的任务:

4. 排序算法(重排)

经过 LLM 处理后,我们得到了一组带有分数的候选新闻。如果仅按分数排序,可能会导致榜单被高分旧闻占据。因此,我引入了类似 Hacker News 的 重力排序算法(Gravity Sort),通过调整超参数,在“内容重要性”和“时效性”之间取得平衡,从而生成一份既精准又及时的推荐榜单。

5. 去重机制

由于订阅了多个重叠的信源,同一条热门新闻(如 Claude Opus 4.6 发布)可能会刷屏。目前的去重机制较为基础:仅在 Prompt 中指示 LLM 若在同一个 Batch 内发现重复内容则进行整合。

6. 输出与展示

项目最终会生成两份 JSON 数据:

服务端使用 Nginx 托管静态文件,实际上充当了一个定时更新的 API 服务器。前端页面(即开头的 Demo)通过请求该 API 进行渲染。

总结

本项目本质上是利用现代 LLM 极强的语义理解能力,构建了一个单用户推荐系统。其流程完美对应了推荐系统经典的四个阶段:召回(RSS)→ 粗排(Flash-Lite)→ 精排(Flash-Preview)→ 重排(重力算法)

与传统推荐系统相比,这种方案的特点非常鲜明:

如果你也希望摆脱算法黑箱,用一种可控、透明的方式构建个性化信息流,这个项目的思路或许能给你带来一些启发。


编辑页面
分享到:

下一篇
AI副屏(上):唤醒吃灰Kindle,打造优雅的墨水屏桌面Dashboard