可扩展矢量搜索(SVS)是一个矢量相似度搜索的性能库。
项目描述
可扩展矢量搜索
可扩展矢量搜索(SVS) 是一个矢量相似度搜索的性能库。得益于局部自适应矢量量化[ABHT23]及其高度优化的索引和搜索算法,SVS提供了矢量相似度搜索
- 在 数十亿 的 高维 向量上,
- 以 高精度
- 和 最先进的速度,
- 同时使用比其替代品更少的内存。
这使应用程序和框架开发者能够在Intel® Xeon CPU(第二代及更高版本)上释放相似度搜索的性能。
SVS 提供了一个功能全面且简单易用的 Python API,兼容大多数标准库。SVS 使用 C++ 编写,以便将其集成到性能关键型应用中。
性能
SVS 在标准基准测试中提供了最先进的性能和准确性,适用于百亿规模的相似性搜索[ABHT23]。
例如,对于标准的百亿规模数据集Deep-1B,SVS 的不同配置比其他替代方案(以每秒查询次数,QPS 计量)提供了显著提高的性能,同时内存占用更小(水平轴)[^1]
SVS 主要针对大规模相似性搜索进行了优化,但在百万规模上仍提供最先进的性能。
通过使用英特尔(R) AVX-512 指令,在第四代(Sapphire Rapids)上可以获得最佳性能,同时第二代和第三代英特尔® 至强® 处理器(Cascade Lake 和 Ice Lake)也能获得出色的结果。
如果系统不支持英特尔(R) AVX-512 指令,性能将会降低。当加载 SVS Python 模块时,如果系统不支持英特尔(R) AVX-512 指令,将会出现警告信息。
关键特性
SVS 支持
- 相似性函数:欧几里得距离、内积、余弦相似性。
- 将向量值编码为:float32、float16、uint8、int8。
- 向量压缩(包括局部自适应向量量化[ABHT23])
- 针对英特尔® 至强® 处理器的优化
- 第二代(Cascade Lake)
- 第三代(Ice Lake)
- 第四代(Sapphire Rapids)
查看路线图以获取即将推出的功能。
文档
SVS 文档包括入门教程、Python 和 C++ 的安装说明、逐步搜索示例、API 参考,以及一些指南和基准比较。
参考文献
在研究论文中使用 SVS 时应引用的参考文献
@article{aguerrebere2023similarity,
title={Similarity search in the blink of an eye with compressed indices},
volume = {16},
number = {11},
pages = {3433--3446},
journal = {Proceedings of the VLDB Endowment},
author={Cecilia Aguerrebere and Ishwar Bhati and Mark Hildebrand and Mariano Tepper and Ted Willke},
year = {2023}
}
[ABHT23] Aguerrebere, C.; Bhati I.; Hildebrand M.; Tepper M.; Willke T.: 以压缩索引在眨眼间进行相似性搜索。在:VLDB 奖励会论文集,16,11,3433 - 3446。(2023)
法律
有关详细信息,请参阅LICENSE 文件。
[^1]: 性能因使用、配置和其他因素而异。更多信息请访问www.Intel.com/PerformanceIndex。性能结果基于截至配置中显示的日期的测试,可能不反映所有公开可用的更新。没有任何产品或组件可以绝对安全。您的成本和结果可能有所不同。英特尔技术可能需要启用硬件、软件或服务激活。© 英特尔公司。英特尔、英特尔标志和其他英特尔标志是英特尔公司或其子公司的商标。其他名称和品牌可能是其他人的财产。
项目详情
哈希值 for scalable_vs-0.0.5-0-cp312-cp312-manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5ce503e31fb6775a855dec1af950be43d15f4799d90291adc32ab86b2660df50 |
|
MD5 | acdaf6064e4facdb3969c8c6366999ff |
|
BLAKE2b-256 | cafa7f9b8b13e400845dec1602926808bfcc2eeed99271b979160d8d6433bf8f |
哈希值 for scalable_vs-0.0.5-0-cp311-cp311-manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f2b580d5f6347cc2b85f03879afcd1e6f6b591e9cd941756bda38859c977fa76 |
|
MD5 | 1c6a2c19937f13a015cdb4c8c6f1440e |
|
BLAKE2b-256 | 8da8d476448873a7dcc8e18598800bf3f1c5f82b25278d40476b9b7ac89b59f0 |
哈希值 for scalable_vs-0.0.5-0-cp310-cp310-manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f7072ea08f1dc75354a22e798380c51c13d48e348b8c32f01c2e8369061b41c4 |
|
MD5 | 0faa6a82f716a96bc7067c424b0e5ed6 |
|
BLAKE2b-256 | 08983fb9885e8f9490966a6993e1b54739276d7b030e5ca296a637801d0a8200 |
哈希值 for scalable_vs-0.0.5-0-cp39-cp39-manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8d429fef5e8bf0a2fee9e679c9558c76d46a9d7ca843f365e2c9b14f979bec5d |
|
MD5 | 42888770891b3db834f4cd07f8e7d539 |
|
BLAKE2b-256 | 025c43a2ed1e8fba169fa7d51f387c4b56221169392ba6df8df3a6fa7e350d87 |