写点什么

Spotify 开源 ANN 搜索库 Voyager,比 Annoy 快 10 倍

作者:Anthony Alford

  • 2023-11-30
    北京
  • 本文字数:1137 字

    阅读完需:约 4 分钟

Spotify 开源 ANN 搜索库 Voyager,比Annoy快10倍

Spotify 最近开源了Voyager,一个近似最近邻(Approximate Nearest-Neighbor,ANN)搜索库。Voyager 基于Hierarchical Navigable Small Word(HNSW)算法,比 Spotify 之前的 ANN 库 Annoy 快 10 倍。


Spotify 使用 ANN 来支持其音乐推荐功能,比如 Discover Weekly。他们于 2013 年开发了 Annoy 来执行 ANN 搜索,但在 10 年后的当前规模下表现不佳。部分原因是由于底层算法:Annoy 使用树分区算法,而 Voyager 使用更新的 HNSW 算法。Voyager 比 Annoy 使用的内存少 4 倍,比 hnswlib(HNSW 的实现之一)少 16 倍。根据 Spotify 机器学习工程师和 Voyager 贡献者 Peter Sobot 所说:


Voyager 结合了 HNSW 更高的精度和速度,提供了经过充分测试、具有完善文档、可以在生产环境中使用的 Java 和 Python 绑定。Voyager 的理念是提供一个稳定、可靠、可在生产环境中使用的库,让任何人都可以在其应用中添加近似最近邻检索功能,无论使用的是 Python 还是 Java。


Spotify 的推荐功能首先通过机器学习算法计算歌曲或 音轨 的 Embedding。两个音轨在播放列表中频繁出现,它们在 Embedding 空间中就会被映射得越近。用户也根据他们所听的歌曲被映射到这个空间。为了推荐用户可能喜欢的歌曲,Spotify 使用 ANN 搜索来找到与用户在 Embedding 空间中位置接近的音轨。Spotify 还可以使用 ANN 进行歌曲去重:通过计算音频数据的 Embedding,ANN 可以识别具有基本相同音频的音轨。


像 Spotify 这样的规模,要快速执行这种搜索要困难得多:他们的嵌入向量有数千个维度,目录中包含了数百万音轨。Annoy 显然无法提供足够好的性能,于是 Spotify 的工程师们尝试使用现有的开源库 hnswlib,但"遇到了问题"。其核心代码存在 Spotify 工程师无法修复的错误。他们还希望拥有更简单的 API。这导致他们开发了 Voyager,该项目考虑到了 Spotify 的生产基础设施需求。


Voyager 的设计目标是快速和轻量级。其 API 针对 Java 和 Python 做了绑定,但库本身没有 Java 依赖,并且仅需要 Python 的 NumPy 库。该库可以在 Intel 和 ARM 芯片架构的机器(Linux 和 MacOS)和 Windows (Intel 芯片架构)上运行。


用户在 Hacker News 上将 Voyager 其与其前身 Annoy 进行了比较


我看到的最大区别是,Annoy 使用只读索引文件(如文档所述:"树一旦创建,就无法再添加更多的项"),而 Voyager 允许你随时调用.add_item


Peter Sobot 在 Twitter 的某个关于 Voyager 的帖子中回答道


我认为 Voyager 是一个可嵌入、超轻量、快速的向量搜索库。Voyager 没有向量数据库的花哨功能,但它没有依赖,并且只有大约 300KB。


Voyager 的源代码可以在 GitHub 上获取。Voyager 已经提交到 ANN-Benchmarks 页面,但尚未运行基准测试


原文链接:

https://www.infoq.com/news/2023/11/spotify-ann-voyager/

2023-11-30 08:005670

评论

发布
暂无评论
发现更多内容

华为云828营销季即将来袭,快来解锁明星产品优惠福利!

平平无奇爱好科技

四项代表厂商,Kyligence 入选 Gartner 数据及人工智能相关领域多项报告

Kyligence

数据分析 指标建设

【华秋干货铺】DDR电路的PCB布局布线要求

华秋电子

PCB板

报表分析工具瓴羊Quick BI企业适用吗?

夜雨微澜

smardaten实战丨谁说无代码不能开发出漂亮的门户首页?

热爱编程的小白白

坚持梦想,心向光明

何元

ARTS 打卡计划 个人感悟

在线一键生成安卓证书keystore 文件

中国大学生服务外包创新创业大赛丨借 AI 之力,助“记账”难题

热爱编程的小白白

分析商务报表使用什么工具?

对不起该用户已成仙‖

无需MAC电脑就可以上传ipa文件到AppStore开发者中心

初雪CIoud

ARTS 打卡第 8 天

自由

ARTS 打卡计划

解构软件开发中的破窗效应

互联网工科生

敏捷开发 软件开发 破窗效应

手把手教你如何挑选适合你的AI编程辅助工具

飞算JavaAI开发助手

微服务最佳实践,零改造实现 Spring Cloud & Apache Dubbo 互通

阿里巴巴云原生

Apache 阿里云 云原生 dubbo spring coud

面部表情识别:人工智能的新前沿

数据堂

VisualStudio打包项目文件为.exe安装包

芯动大师

ARTS 打卡第1周(8.14~8.20)

向东是大海

ARTS 打卡计划 arts

Kyligence x 百胜数睿|电商全渠道运营增长新利器

Kyligence

数智化 指标平台

AntDB数据库受邀参加【ACDU 中国行】,共促行业发展和创新

亚信AntDB数据库

数据库 AntDB AntDB数据库 企业号 8 月 PK 榜

七月 NFT 行业解读:游戏和音乐 NFT 引领增长,Opepen 掀起热潮

Footprint Analytics

区块链游戏 NFT 链游

面部表情识别:从实验室到现实世界的应用

数据堂

史上最全!80个数字化工厂常见术语合集,看完秒懂~

优秀

数字化转型 数字化工厂

澳鹏高精度AI辅助数据标注平台推出全新SaaS版本

澳鹏Appen

人工智能 SaaS 数据标注

倒计时 1 天!CommunityOverCode Asia 2023 参会攻略出炉,共享开源盛宴

Apache IoTDB

教学实训平台,新增批量设置作业小组|ModelWhale 版本更新

ModelWhale

人工智能 数据分析 组织协同 教学实训 在线编程

低代码平台怎么选?5大通用要素可以参考

互联网工科生

软件开发 低代码

面部表情识别的伦理问题与挑战

数据堂

Spotify 开源 ANN 搜索库 Voyager,比Annoy快10倍_数据库_InfoQ精选文章