向量数据库实战:选型、调优与落地~系列文章20:向量数据库在推荐系统中的应用:从协同过滤到向量召回
向量数据库在推荐系统中的应用从协同过滤到向量召回 本文是《向量数据库实战选型、调优与落地》专栏第 20 篇⏱️阅读时间约 13 分钟 开篇推荐系统的召回革命传统推荐系统的核心流程 ┌─────────────────────────────────────────────────────────┐ │ 推荐系统经典架构 │ ├─────────────────────────────────────────────────────────┤ │ │ │ 用户请求 │ │ │ │ │ ▼ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 召回层 │ → │ 粗排层 │ → │ 精排层 │ │ │ │ (Recall) │ │ (Pre- │ │ (Rank) │ │ │ │ │ │ ranking) │ │ │ │ │ │ 百万→千 │ │ 千→百 │ │ 百→几十 │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ │ ▼ │ │ ┌──────────┐ │ │ │ 重排层 │ │ │ │ (Re-rank)│ │ │ │ 几十→展示 │ │ │ └──────────┘ │ │ │ │ 召回层是核心它决定了推荐的天花板 │ │ → 向量数据库就是召回层的发动机 │ │ │ └─────────────────────────────────────────────────────────┘ 从协同过滤到向量召回传统协同过滤的问题用户 A 喜欢[商品1, 商品2, 商品3] 用户 B 喜欢[商品2, 商品3, 商品4] → A 和 B 有相似偏好 → 给用户 A 推荐商品4 问题 ❌ 只能发现显式相似的用户/物品 ❌ 稀疏性问题大部分用户-物品对没有交互 ❌ 无法理解为什么相似向量召回的优势商品1 的向量: [0.12, -0.34, ...] ← learned representation 商品2 的向量: [0.13, -0.33, ...] ← 语义相近 商品3 的向量: [0.89, 0.12, ...] ← 语义远 向量召回 ✅ 能发现隐式相似语义相近但没交互过的 ✅ 不受稀疏性影响 ✅ 能理解为什么相似向量空间中的距离 向量召回实战Step 1训练双塔模型importtorchimporttorch.nnasnnclassTwoTowerModel(nn.Module):双塔模型用户塔 物品塔def__init__(self,user_dim,item_dim,embedding_dim128):super().__init__()# 用户塔self.user_towernn.Sequential(nn.Linear(user_dim,256),nn.ReLU(),nn.Linear(256,128),nn.ReLU(),nn.Linear(128,embedding_dim),nn.LayerNorm(embedding_dim))# 物品塔self.item_towernn.Sequential(nn.Linear(item_dim,256),nn.ReLU(),nn.Linear(256,128),nn.ReLU(),nn.Linear(128,embedding_dim),nn.LayerNorm(embedding_dim))defforward(self,user_features,item_features):user_embself.user_tower(user_features)item_embself.item_tower(item_features)# 内积作为相似度return(user_emb*item_emb).sum(dim-1)defget_user_embedding(self,user_features):returnself.user_tower(user_features)defget_item_embedding(self,item_features):returnself.item_tower(item_features)Step 2生成物品向量并存入数据库frompymilvusimportCollection# 为所有物品生成向量item_embeddings[]foriteminall_items:item_featuresextract_features(item)# 类别、价格、标签等withtorch.no_grad():vecmodel.get_item_embedding(item_features)item_embeddings.append(vec.numpy()[0])# 存入向量数据库data[[item.idforiteminall_items],item_embeddings,[{category:item.category,price:item.price}foriteminall_items]]collection.insert(data)collection.flush()# 建索引collection.create_index(embedding,{index_type:HNSW,metric_type:IP,# 推荐系统用内积params:{M:32,efConstruction:256}})Step 3在线召回defrecall_for_user(user_id,user_features,collection,model,top_k100):为单个用户做向量召回# 1. 生成用户向量withtorch.no_grad():user_vecmodel.get_user_embedding(user_features).numpy()[0]# 2. 向量检索collection.load()resultscollection.search(data[user_vec.tolist()],anns_fieldembedding,param{metric_type:IP,params:{ef:128}},limittop_k,output_fields[category,price])# 3. 过滤已购买purchasedget_purchased_items(user_id)filtered[hitforhitinresults[0]ifhit.idnotinpurchased]returnfiltered[:top_k] 多路召回架构┌─────────────────────────────────────────────────────────┐ │ 多路召回架构 │ ├─────────────────────────────────────────────────────────┤ │ │ │ 用户请求 │ │ │ │ │ ├──→ 向量召回语义相似→ 100 个候选 │ │ │ │ │ ├──→ 热门召回全局热门→ 50 个候选 │ │ │ │ │ ├──→ 协同过滤召回 → 50 个候选 │ │ │ │ │ ├──→ 标签召回同类目→ 50 个候选 │ │ │ │ │ └──→ 实时召回最近浏览的相似品→ 50 个候选 │ │ │ │ ↓ 合并去重 │ │ ~300 个候选 │ │ ↓ │ │ 粗排 → 精排 → 重排 → 展示 │ │ │ └─────────────────────────────────────────────────────────┘ 本篇核心要点回顾要点说明向量召回用双塔模型生成用户/物品向量向量数据库检索度量选择推荐系统用内积IP不是余弦多路召回向量召回只是其中一路需要多路融合性能要求召回层要求极低延迟 10ms下篇预告《向量数据库在图像搜索引擎中的应用以图搜图的完整实现 》有问题欢迎评论区讨论觉得有用请点赞收藏 作者高炉炼铁智能化技术研究者专注钢铁冶金与人工智能 交叉领域。 如果觉得有帮助请点赞、收藏、转发版权归作者所有未经许可请勿抄袭套用商用(或其它具有利益性行为)。 关注专栏不错过后续精彩内容

相关新闻

LangChain大模型应用开发实战与架构解析

LangChain大模型应用开发实战与架构解析

1. LangChain大模型应用开发全景解析作为一位长期深耕AI工程化落地的开发者,我见证了从早期单一大模型调用到如今复杂Agent工作流编排的技术演进。LangChain框架的出现,彻底改变了我们构建大模型应用的方式——它不再是把prompt简单封装成API的玩具&…

2026/7/27 8:23:54 阅读更多 →
Claude Code工具链:AI辅助编程的Handler与Agent架构解析

Claude Code工具链:AI辅助编程的Handler与Agent架构解析

1. 项目概述:Claude Code工具链的核心价值在AI辅助编程领域,Claude Code正逐渐成为开发者效率提升的利器。这个基于先进语言模型的工具链,通过Handler机制和Agent扩展架构,实现了代码生成、问题诊断、自动化重构等核心功能。不同于…

2026/7/27 8:22:54 阅读更多 →
Python afs-py 包完全指南:功能、安装、语法、参数与8个实战案例

Python afs-py 包完全指南:功能、安装、语法、参数与8个实战案例

1. 引言 afs-py 是一个专为 Python 开发者设计的文件系统操作增强库,旨在简化文件读写、目录遍历、路径处理等常见任务。本文将全面介绍 afs-py 包的核心功能、安装方法、语法参数,并通过 8 个实际应用案例帮助读者快速上手,同时总结常见错误与使用注意事项。 2. afs-py 包…

2026/7/27 8:22:54 阅读更多 →

最新新闻

EKF与自适应博弈在航天追逃策略中的应用

EKF与自适应博弈在航天追逃策略中的应用

1. 项目背景与核心价值在航天器末端追逃博弈场景中,信息的不完全性一直是制约策略有效性的关键瓶颈。传统博弈论中的纳什均衡建立在完全信息假设基础上,而实际工程中我们往往只能获取对手的部分状态信息。这篇复现论文的创新点在于将EKF(扩展…

2026/7/27 8:34:59 阅读更多 →
AD-Copilot:工业异常检测新范式与多模态技术实践

AD-Copilot:工业异常检测新范式与多模态技术实践

1. 工业异常检测的痛点与AD-Copilot的突破 工业生产线上的质检环节,往往需要工人用肉眼比对产品与标准模板的差异。这种工作看似简单,实则暗藏挑战:微小划痕的识别需要将图片放大到像素级比对,色差检测要求在不同光照条件下保持判…

2026/7/27 8:34:59 阅读更多 →
人工智能训练师拿证后必做的5件事|3天更新简历+90天申领补贴+1周加入社群

人工智能训练师拿证后必做的5件事|3天更新简历+90天申领补贴+1周加入社群

摘要:人工智能训练师拿证后必做的5件事:3天内更新简历突出AI技能、90天内申领技能补贴3120元、1周内加入AI行业社群、1个月内申请积分落户加分、3个月内开始个税抵扣申报。错过任一项就亏钱。 一、为什么拿证不是终点 考证的真正价值在于「把证书用起来」:┌───────…

2026/7/27 8:34:59 阅读更多 →
AI绘图实战:高级时尚杂志风男士人像提示词拆解

AI绘图实战:高级时尚杂志风男士人像提示词拆解

🔥 个人主页: 杨利杰YJlio ❄️ 个人专栏: 《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》 《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》 《超简单:用Python让Excel飞起来》…

2026/7/27 8:34:59 阅读更多 →
3步革命性优化:让SillyTavern资源占用降低40%的智能调优指南

3步革命性优化:让SillyTavern资源占用降低40%的智能调优指南

3步革命性优化:让SillyTavern资源占用降低40%的智能调优指南 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern 你是否在使用SillyTavern时遇到过内存飙升、加载缓慢的困扰&#x…

2026/7/27 8:34:59 阅读更多 →
在TI AM57xx/AM65x开发板上构建Android Automotive OS完整指南

在TI AM57xx/AM65x开发板上构建Android Automotive OS完整指南

1. 项目概述与核心价值 如果你手头有一块德州仪器(TI)的AM57xx或AM65x系列开发板,并且一直在琢磨如何让它跑起来一套真正为汽车座舱优化的操作系统,那么这篇文章就是为你准备的。我最近花了相当长的时间,在TI的BeagleB…

2026/7/27 8:33:58 阅读更多 →

日新闻

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述:从寄存器手册到实战指南 如果你手头有一份类似德州仪器(TI)TMS320x240xA系列DSP的SPI模块技术手册,看着里面密密麻麻的寄存器位定义、时序图和公式,是不是感觉头大?这份资料虽然权威&#xff0…

2026/7/27 0:00:54 阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/27 4:33:59 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/27 6:31:56 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/27 4:01:12 阅读更多 →

月新闻