各位大佬,现在有 LLM,本地自建今日头条可行了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
summerLast
V2EX    分享创造

各位大佬,现在有 LLM,本地自建今日头条可行了

  •  
  •   summerLast
    weekend-project-space 6 天前 2214 次点击
  •   查看本主题需要登录

    信息来源通过 RSS 等信息抓取手段

    用 chat 模型理解用户的行为画像

    用 Embedding 模型对文章进行嵌入和检索

    用 ranker 模型对文章在其所在分类质量进行打分

    思路是这样,rss 抓来的内容=>用 chat 模型进行分类、标签和总结=> ranker 模型对该文章在其所在分类的内容质量进行评级=> 评级高的进行 Embedding 嵌入

    后面根据用户的互动行为用 chat 模型进行建用户画像 根据用户画像通过 U2I 去检索文章混合 TF-IDF 关键字匹配兜底,对内容进行推荐分发

    为了方便理解,我让 ai 根据刚才的描述画了一个文字版架构流程图

    内容处理

    ┌──────────────┐ │ RSS / 抓取 │ │ (Feed / Web) │ └──────┬───────┘ │ 原始文章 ┌────────────────────┐ │ 内容预处理 Pipeline │ │ - 去噪 / 去重 │ │ - 正文抽取 │ │ - 语言检测 │ └──────┬─────────────┘ │ 清洗后文本 ┌───────────────────────────────┐ │ Chat Model (内容理解) │ │ - 分类( Category ) │ │ - 标签( Tags ) │ │ - 摘要( Summary ) │ │ - 关键词 / 主题(可选) │ └──────┬────────────────────────┘ │ 结构化内容 ┌─────────────────────────────────────┐ │ Ranker Model (分类内质量评估) │ │ - 输入:文章 + 分类 + 标签 │ │ - 输出:质量分数 / 等级( A/B/C/D ) │ └──────┬──────────────────────────────┘ │ ├───────────────┐ │ 高质量内容 │ 低质量内容 │ (>= 阈值) │ (< 阈值) ┌──────────────────┐ ┌────────────────────┐ │ Embedding Pipeline│ │ 冷存 / 低频曝光 │ │ - 向量化 │ │ - 搜索兜底 │ │ - 向量索引 │ │ - 长尾内容池 │ └─────────┬────────┘ └────────────────────┘ │ ┌──────────────────────┐ │ 向量库 / 检索索引 │ │ (ANN / pgvector 等) │ └──────────────────────┘ 

    用户侧画像与推荐流程

    ┌──────────────┐ │ 用户行为采集 │ │ - 点击 │ │ - 阅读时长 │ │ - 收藏 / 分享│ │ - 跳过 │ └──────┬───────┘ │ 行为序列 ┌──────────────────────────────┐ │ Chat Model (用户画像理解) │ │ - 兴趣主题 │ │ - 偏好分类 │ │ - 阅读深度 / 新鲜度偏好 │ │ - 显式 + 隐式偏好 │ └──────┬───────────────────────┘ │ 用户画像(结构化) ┌─────────────────────────────────────┐ │ User → Item 召回( Recall ) │ │ │ │ ① 向量召回( U2I Embedding ) │ │ - 用户画像向量 │ │ - 文章向量 │ │ │ │ ② 关键词召回(兜底) │ │ - TF-IDF / BM25 │ │ - 用户兴趣关键词 │ └──────┬──────────────────────────────┘ │ 候选文章集合 ┌──────────────────────────────┐ │ 排序 / 混排(可扩展) │ │ - 质量分( Ranker ) │ │ - 相似度分 │ │ - 新鲜度 / 多样性 │ └──────┬───────────────────────┘ ┌──────────────┐ │ 内容分发展示 │ └──────────────┘ 

    花了两个月的时间改进与验证,结论是本地自建推荐系统已经在技术上具备可行性了

    感兴趣的可以自行验证,或在这个https://github.com/weekend-project-space/ifeed 的基础上进行验证

    第 1 条附言    6 天前

    内容分法这块除了信息流的用户主动获取(pull)之外,还有一个系统主动推(push)的机制可以当xx出现时,通过webhook的钩子进行主动通知,这个钩子就可以有很多种了,可以是聊天软件或邮箱,或其它

    [内容分发webhook钩子] - 是否命中条件 xx? 分类命中 质量阈值 关键词 / 实体 用户订阅规则 │ ┌─────┴────────────────────┐ │ │ [普通内容流] [事件内容流] │ │ │ │ [Webhook 事件生成] │ │ │ │ [Webhook 分发器] │ │ │ (是否需要 LLM 概要?) │ │ │ ┌───────────┴───────────┐ │ │ │ │ │ [直接分发] [LLM 概要增强流程] │ │ │ │ │ - 精炼概要总结 │ │ - 关键信息提取 │ │ - 引用原文 URL │ │ │ │ └───────────┬───────────┘ │ │ [通知内容构建] │ │ │ ┌─────────┼─────────┐ │ │ [聊天通知] [邮件通知] [其它系统] │ IM / Bot Email 搜索 / BI │ [内容存储 / Embedding] - 向量化 - 推荐 / 搜索 
    18 条回复    2025-12-24 10:24:13 +08:00
    summerLast
        1
    summerLast  
    OP
       6 天前
    假设是:时间有限,内容很多,但大多数内容质量很低,不值的花时间阅读,用 ai 去过滤掉这部分信息
    nevin47
        2
    nevin47  
       6 天前
    完全可行,我自己之前就 vibe 了一个,通过 RSS 订阅和 Google 最新信息抓取,定时给我推送我感兴趣的内容。
    dustookk
        3
    dustookk  
       6 天前
    @nevin47 #2 这个注意好,可以分享一下项目架构吗 比如新闻源是哪些 有没有自然语言直接修改兴趣点的机制。
    Hydsiun
        4
    Hydsiun  
       6 天前
    很棒的 idea 啊
    Muniesa
        5
    Muniesa  
       6 天前
    不错不错,而且感觉这个流程里的模型都不需要特别大,本地部署也没问题
    yuanyuan11
        6
    yuanyuan11  
       6 天前 via Android
    rss 抓不了全文怎么办?
    ronyin
        7
    ronyin  
       6 天前
    直接 rss 订阅不就完事了。。每天都都是看自己订阅的内容
    marquina
        8
    marquina  
       6 天前
    我对推荐算法了解不多,但看到的观点更多是:基于 LLM 的生成式推荐在顶尖团队手里确实能发挥很大价值,但也有不少局限。中小公司因为数据/技术能力有限,最好不要轻易尝试。

    [生成式推荐!推荐系统新范式还是新噱头? - 知乎]( https://zhuanlan.zhihu.com/p/1931701983313630556)
    [[笔记] 从 Tokenization 视角看生成式推荐( GR )近几年的发展( 2025 )]( https://arthurchiao.art/blog/large-generative-recommendation-tokenization-perspective-notes-zh/)

    回到 OP 这个帖子,给我一种强烈的大炮打蚊子的感觉……
    marquina
        9
    marquina  
       6 天前
    另外,llm 打分+向量数据库的方案疑似有点太简陋了。
    既然是为用户服务的,llm 的打分就需要和用户(不停变化的)偏好对齐,不然用户想看的是低分、不想看的打高分,那就玩不转了。
    向量数据库也只能解决最基本的相关性问题,现实世界要复杂的多,要想做的好的话需要考虑图数据库,包括实体(时间/地点/人物/事件)、实体属性、实体之间的关联,不然就永远只见树木不见森林,没法形成一个好的内容框架。
    jackkkie
        10
    jackkkie  
       6 天前
    SeanKK
        11
    SeanKK  
       6 天前
    @marquina 看 OP 这里的表达 LLM 应该是 for 用户意图理解的,抽取用户兴趣( LLM )->召回对应兴趣下的内容(传统搜推流程),这样的做法在大厂也比较流行... 能充分发挥 LLM 的 reasoning 的能力,同时 given 兴趣点进行传统召回排序成本和效果又比较可控
    Pepsigold
        12
    Pepsigold  
       6 天前
    @jackkkie 你这个就是好东西
    summerLast
        13
    summerLast  
    OP
       6 天前
    @dustookk #3 在这个的基础上采取 webhook 的机制,通过相关度匹配触发调用接口
    zero2me
        14
    zero2me  
       5 天前   1
    不用 AI ,我自己做了一个 https://www.fiflynote.com/news , 但是现在国内好的 RSS 源太难找了
    BeautifulSoup
        15
    BeautifulSoup  
       5 天前 via Android
    @marquina 生成式推荐大概率是个伪命题,落地的没有几家。楼主这种用例直接向量匹配就足够了,主要问题是历史数据太少,需要训练的模型学不出来什么信号
    summerLast
        16
    summerLast  
    OP
       5 天前
    @BeautifulSoup #15 不是直接大模型预测用户会看的内容 id 有哪些,是通过对用户做画像,用画像去做最近邻检索,这里面没有训练任何的模型
    BeautifulSoup
        17
    BeautifulSoup  
       5 天前 via Android
    @summerLast 我觉得做到 embedding 匹配一步就可以了,faiss 或者向量数据库都可以实现。大模型做画像的问题是要强行用离散文字表述一个连续隐含特征,信息损失太大,边际收益太低。
    BeautifulSoup
        18
    BeautifulSoup  
       5 天前
    @marquina
    > 要想做的好的话需要考虑图数据库,包括实体(时间/地点/人物/事件)、实体属性、实体之间的关联,不然就永远只见树木不见森林

    想法很好,但首先从无结构文本中抽取实体误差就不小,还涉及到实体标准化对齐等等一整个 pipeline (比如川普、特朗普、Trump 都指向一个实体)。这类想法学术界研究很多,但我的体会是落地很难,最主要原因是:1.既然要从文本中抽取这些片段,那为什么不直接用原始文本; 2.维护图数据库(也就是知识图谱)代价太高,更新困难。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5357 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 08:00 PVG 16:00 LAX 00:00 JFK 03:00
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86