大咖直播-鸿蒙原生开发与智能提效实战!>>> 了解详情
写点什么

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

评论

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

Rust 错误处理在 GreptimeDB 的实践

Greptime 格睿科技

rust 错误 错误处理

Web兼容性测试思路详解

测吧(北京)科技有限公司

测试

如何使用PHP开发1688商品详情API接口

科普小能手

数据采集 1688 API 接口 1688代采 1688 API

并行区块链全解:执行原理、代表项目及技术发展周期

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 钱包开发

创新实践:基于边缘智能的边云协同智能驾驶训练舱解决方案

火山引擎边缘云

IoT 智能驾驶 大模型 AI 基础设施 边缘智能

Altair 助力eVTOL,与航空航天初创企业Moya Aero合作

Altair RapidMiner

测试 仿真 智能制造 航天航空 altair

数字化浪潮下的数据资产管理:解锁保险行业的无限潜能

数造万象

保险 数据治理 数据血缘 数据资产管理 #数据

Pytest 参数化与基本装饰器用法

测吧(北京)科技有限公司

测试

如何选择最适合企业的ETL解决方案?

谷云科技RestCloud

kettle ETL 数据集成 DataX ETLCloud

工作坊报名|使用 TEN 与 Azure,探索你的多模态交互新场景

声网

国内首家! 阿里云人工智能平台 PAI 通过 ITU 国际标准测评

阿里云大数据AI技术

人工智能 阿里云 PAI ITU

web 自动化测试框架 cypress全面指南

测吧(北京)科技有限公司

测试

Pytest 编写自动化测试用例规则

测吧(北京)科技有限公司

测试

Pytest 结合数据驱动的用法详解

测吧(北京)科技有限公司

测试

软件测试丨Pytest 参数化与调度执行

测试人

软件测试

Supersonic 推出混合休闲游戏开发大赛 为开发者提供丰厚资金支持与专家指导

极客天地

App 测试必学技能 adb 命令

测吧(北京)科技有限公司

测试

Pytest框架:提升软件测试的利器

测试人

软件测试

WebRTC 作者加入 OpenAI 主导实时 AI 项目;TTS 小模型 OuteTTS v0.2 发布:声音克隆+多语言

声网

京东商品详情数据接口调用,商城上货实战案例(仅供参考)

tbapi

京东API接口 京东商品详情接口

Web兼容性测试思路详解

测吧(北京)科技有限公司

测试

显式等待与隐式等待详解:Selenium 自动化测试中的关键概念

测吧(北京)科技有限公司

测试

想要进行Facebook直播?快来看看这份详细指南!

Ogcloud

海外直播专线 海外直播 海外直播网络 facebook直播 facebook运营

用豆包MarsCode ,陪你云赏月

TRAE.ai

AIC和ScaleFlux(锐钲)发布基于NVIDIA BlueField-3 DPU的新型存储阵列

ScaleFlux

Selenium 框架与常用操作详解

测吧(北京)科技有限公司

测试

Page Object 设计模式:实现 Selenium 测试用例的良好分层

测吧(北京)科技有限公司

测试

自动化测试中常用的 JavaScript 脚本

测吧(北京)科技有限公司

测试

比特币临近10万美元回调:后市走势与关键因素解读

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

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