写点什么

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:005877

评论

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

运维黑匣子作用是什么?堡垒机是运维黑匣子吗?

行云管家

运维 堡垒机 黑匣子

CST电磁仿真技术:引领时代发展的前沿

思茂信息

电磁 仿真 cst

Vite打包碎片化,如何化解?

不在线第一只蜗牛

Java 前端 服务器

什么是低代码(Low-Code)?我们需要低代码吗?

优秀

低代码 低代码平台 低代码平台比较

一站实现高效开发,鸿蒙生态伙伴模板&组件专区全新上线

最新动态

解读Kuasar多沙箱容器技术,带来更强隔离性和安全性

华为云开发者联盟

Kubernetes 容器 沙箱

通过Forcebot压测实践简述“并发模式”与“RPS模式”两种模式的区别

京东科技开发者

海外专线:提升国外网站访问效率的方法

Ogcloud

企业组网 企业网络 海外网络专线 海外网络访问

约80%开发效率提升,原生鸿蒙政务、文旅行业样板间专区上线

最新动态

某市驾驶培训监管服务平台 GreatSQL 数据库适配之旅

GreatSQL

文献解读-Chromosome-Level Genome Assembly of the Green Peafowl (Pavo muticus)

INSVAST

基因数据分析 生信服务

DeFi复兴:让DeFi再次伟大

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 公链开发

阿里巴巴中国站商品详情API返回值的未来发展趋势

技术冰糖葫芦

API 接口 API 文档 API 测试 pinduoduo API

从混乱到可控:非结构化数据在远程监造中的作用

奇点云

人工智能 软件 IT 制造业

软件测试学习笔记丨Selenium—执行javascript脚本

测试人

软件测试

GenAI 时代的软件架构和设计:机遇、挑战和未来

俞凡

人工智能 架构

2025北京智能科技产业博览会(世亚智博会)

AIOTE智博会

智博会 世亚智博会 智能科技展 智能科技博览会

测试聊并发-入门篇

京东科技开发者

技术干货|企业如何通过创建可持续能源的数字孪生,实现即时洞察

Altair RapidMiner

人工智能 汽车 数字孪生 仿真 altair

90后程序员的职业成长漫谈

京东科技开发者

IT服务管理三重奏:SLA、SLO、SLI

ServiceDesk_Plus

SLA IT服务管理

软件测试学习笔记丨接口自动化框架

测试人

软件测试

供应链PC实操落地实践|得物技术

得物技术

#供应链

阿里巴巴1688商品详情API返回值:未来发展趋势与无限可能

代码忍者

三亚等保测评公司有哪些?在哪里?

行云管家

等保 等级保护 三亚

2024后量子区块链峰会:连接Web3、安全与后量子密码学的未来

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 公链开发

SD-WAN与传统WAN的区别

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

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