检索
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
假设您有一个嵌入模型。针对某个用户,您如何决定推荐哪些商品?
在服务时,给定一个查询,首先执行以下某项操作:
- 对于矩阵分解模型,查询(或用户)嵌入是静态已知的,系统只需从用户嵌入矩阵中查找即可。
- 对于 DNN 模型,系统会在传送时通过在特征矢量 \(x\)上运行网络来计算查询嵌入 \(\psi(x)\)。
获得查询嵌入 \(q\)后,在嵌入空间中搜索与 \(q\) 相近的商品嵌入\(V_j\) 。这是最近邻问题。例如,您可以根据相似度得分 \(s(q, V_j)\)返回前 k 项。

您可以在推荐相关商品时采用类似的方法。例如,当用户观看 YouTube 视频时,系统可以首先查找该项的嵌入,然后查找嵌入空间中相邻的其他项\(V_j\) 的嵌入。
大规模检索
为了计算嵌入空间中的最近邻,系统可以详尽地对每个潜在候选对象评分。对于非常大的语料库,穷尽评分可能非常耗费资源,但您可以使用以下任一策略来提高效率:
- 如果以静态方式知道查询嵌入,则系统可以离线执行详尽评分、预计算并存储每个查询的热门候选对象列表。这是推荐相关商品的常见做法。
- 使用近似最近邻。
Google 在 GitHub 上提供了一款名为 ScaNN(可伸缩的最近邻)的开源工具。该工具可大规模执行高效的向量相似度搜索。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-11-11。
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2024-11-11。"],[],[]]