我把书封面扔给 CLIP 向量库,真能推出你想读的书吗

PromptCube 中级 2小时前 163 浏览 9 点赞 约 1 分钟

前两天把 By-Its-Cover 上线了,想把生疏的 SWE 技能捡回来,顺便把推荐系统那套理论落地跑一遍。现在的结论是:只靠封面向量做检索和排序,勉强能跑通,但离“好用”还有段距离。

核心架构分两条线。语义搜索那边,用户上传一张封面或输一句描述,同时走 CLIP 向量检索和 GLiNER 抽实体再走 Hardcover API 的关键词搜索,最后用 Reciprocal Rank Fusion 融合。GLiNER 已经转 ONNX 了,推理延迟能接受。向量库里目前只有两千多本书,冷启动靠用户搜什么、补什么,搜得多库才大。

排序侧用的是两塔神经协同过滤,显式反馈只有 Dislike / Like / Love 三档,隐式信号全没有。训练好的用户塔、物品塔做内积召回,再套一层 Determinantal Point Process 去重——不然全是同一本书的不同版本封面。按 Eugene Yan 那套离线更新思路:增量微调两小时跑一次,全量重训每天早 8:30 EST 定时触发。模型配置全在 bic-learn 里,想复现的可以直接看。

部署全在 AWS 上跑,前后端分离,模型服务统一 ONNX Runtime,省得折腾 PyTorch 运行时。目前匿名用户看到的都是“默认用户”推荐,注册打几分大概两小时后能见到个性化结果。

最大的坑还是数据量:两千本书连长尾都覆盖不了,协同过滤矩阵稀疏得离谱,DPP 去重后候选集经常不够分。下一步想接点点击、停留时长当隐式信号,再把封面以外的元数据(简介、标签、作者向量)拼进去,看能不能把召回率拉上来。

站点和代码都开着,感兴趣的可以去踩踩坑:

  • 站点:https://by-its-cover.com/
  • 主仓库:https://github.com/ByItsCover
  • 训练侧配置:https://github.com/ByItsCover/bic-learn
By-Its-CoverCLIPGLiNERONNXHardcover API
这个方向的上手步骤与避坑记录见用Claude整理的AI副业教程,有不少直接可参考的案例。

全部回复 (3)

阿Sam的日常 高级 2小时前
自己试过以图搜图,封面风格相似≠内容相似,翻车太多次了
0 回复
大Jerry 高级 2小时前
加个作者向量,系列书推得准多了
0 回复
脚本小子小柯 专家 2小时前
RRF 融合权重怎么调的?CLIP 和关键词检索权重固定还是动态?
0 回复

发表回复

支持 Markdown 格式