标准回答
整体思路
核心是「向量化 + 最近邻」。把标题、正文、标签拼成一段文本,用 embedding 模型(如 bge、text-embedding-3)转成向量,落库到向量数据库。用户看某篇内容时,拿这篇的向量去库里做 ANN 检索,取相似度 Top-20 作为候选。
落地步骤
- 离线批量:把存量内容全部向量化入库,新内容发布时增量写入(消息队列触发)。
- 在线检索:请求来时取目标向量做 ANN,向量库返回 Top-N + 相似度分数。
- 后处理:过滤掉自身、已读、低于相似度阈值的;按规则去重(同作者/近重复只留一条)。
- 重排:把语义相似度和业务信号(新鲜度、点击率)加权融合再排序。
实战提示
embedding 维度和模型要全站统一,换模型必须全量重算。向量库选型先看数据量:百万级 pgvector 够用,上亿再考虑专用库。
常见误区
⚠️ 常见踩坑
只看向量相似度不做去重,结果一堆「几乎一样」的内容堆在一起;以及忘了过滤已读,老给用户推他刚看过的。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。
🛠️ AI 工具
- Milvus
云原生向量数据库,43,875+ stars。专为 AI 应用设计的分布式向量搜索引擎,支持千亿级向量检索,广泛应用于 RAG、推荐系统和相似性搜索场景