Skip to main content

Scalable Vector Search (SVS) is a performance library for vector similarity search.

Project description

Scalable Vector Search

Linux Build and Test CIBuildWheel License

Scalable Vector Search (SVS) is a performance library for vector similarity search. Thanks to the use of Locally-adaptive Vector Quantization (LVQ) [ABHT23] and its highly optimized indexing and search algorithms, SVS provides vector similarity search:

  • on billions of high-dimensional vectors,
  • at high accuracy
  • and state-of-the-art speed,
  • while enabling the use of less memory than its alternatives.

This enables application and framework developers using similarity search to unleash its performance on Intel(R) Xeon(R) CPUs (2nd generation and newer).

SVS offers a fully-featured and yet simple Python API, compatible with most standard libraries. SVS is written in C++ to facilitate its integration into performance-critical applications.

Please note that this repository only contains the open-source portion of the SVS library, which supports all functionalities and features described in the documentation, except for our proprietary vector compression techniques, specifically LVQ [ABHT23] and Leanvec [TBAH24]. These techniques are closed-source and supported exclusively on Intel hardware. We provide shared library and PyPI package to enable these vector compression techniques in C++ and Python, respectively. For guidance on using the shared library, please refer to this example.

Performance

SVS provides state-of-the-art performance and accuracy [ABHT23] for billion-scale similarity search on standard benchmarks.

For example, for the standard billion-scale Deep-1B dataset, different configurations of SVS yield significantly increased performance (measured in queries per second, QPS) with a smaller memory footprint (horizontal axis) than the alternatives[^1]:

SVS is primarily optimized for large-scale similarity search but it still offers state-of-the-art performance at million-scale.

Best performance is obtained with Intel(R) Xeon(R) 6 processors (Granite Rapids), by making use of Intel(R) AVX-512 instructions, with excellent results also with 2nd through 5th gen Intel(R) Xeon(R) processors (Cascade Lake, Ice Lake, Sapphire Rapids, and Emerald Rapids).

Performance will be degraded if Intel(R) AVX-512 instructions are not available. A warning message will appear when loading the SVS Python module if the system does not support Intel(R) AVX-512 instructions.

Key Features

SVS supports:

  • Similarity functions: Euclidean distance, inner product, cosine similarity.
  • Vectors with individual values encoded as: float32, float16, uint8, int8.
  • Vector compression (including Locally-adaptive Vector Quantization [ABHT23])
  • Optimizations for Intel(R) Xeon(R) processors:
    • 2nd generation (Cascade Lake)
    • 3rd generation (Ice Lake)
    • 4th generation (Sapphire Rapids)
    • 5th generation (Emerald Rapids)
    • 6th generation (Granite Rapids)

See Roadmap for upcoming features.

Documentation

SVS documentation includes getting started tutorials with installation instructions for Python and C++ and step-by-step search examples, an API reference, as well as several guides and benchmark comparisons.

References

Reference to cite when you use SVS in a research paper:

@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.:Similarity search in the blink of an eye with compressed indices. In: Proceedings of the VLDB Endowment, 16, 11, 3433 - 3446. (2023)

[TBAH24] Tepper M.; Bhati I.; Aguerrebere, C.; Hildebrand M.; Willke T.:LeanVec: Searching vectors faster by making them fit. In: Transactions on Machine Learning Research(TMLR), ISSN, 2835 - 8856. (2024)

Legal

Refer to the LICENSE file for details.

[^1]: Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex. Performance results are based on testing as of dates shown in configurations and may not reflect all publicly available updates. No product or component can be absolutely secure. Your costs and results may vary. Intel technologies may require enabled hardware, software or service activation. © Intel Corporation. Intel, the Intel logo, and other Intel marks are trademarks of Intel Corporation or its subsidiaries. Other names and brands may be claimed as the property of others.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

scalable_vs-0.1.0-0-cp314-cp314-manylinux_2_28_x86_64.whl (8.6 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

scalable_vs-0.1.0-0-cp313-cp313-manylinux_2_28_x86_64.whl (8.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

scalable_vs-0.1.0-0-cp312-cp312-manylinux_2_28_x86_64.whl (8.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

scalable_vs-0.1.0-0-cp311-cp311-manylinux_2_28_x86_64.whl (8.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

scalable_vs-0.1.0-0-cp310-cp310-manylinux_2_28_x86_64.whl (8.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

File details

Details for the file scalable_vs-0.1.0-0-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for scalable_vs-0.1.0-0-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 655624b1d00f6ecd7f4aea9d5c2c630cd72b2ee435e8b4d73c2774c615681f01
MD5 e3ca821391cc0b73e181fcb90bcca95c
BLAKE2b-256 1e2f9b1f42697ca636c1bb4ec3c9866a6e4c9cbf8f830c4f0801f93eca343179

See more details on using hashes here.

File details

Details for the file scalable_vs-0.1.0-0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for scalable_vs-0.1.0-0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 50f56035f78097a8d815aceec0eeded13bcae8155a8b573ff7b43cc71c84425c
MD5 a96d22a44421a5e48a6559622cdcda59
BLAKE2b-256 2542f277812f7c8a269d4baaac143f9a77f02f2736f07961506f1008b86f5b58

See more details on using hashes here.

File details

Details for the file scalable_vs-0.1.0-0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for scalable_vs-0.1.0-0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a3b3c55ba655fed2bdddc6288841f34ea71cdecd406b417f9ed8a3174d87e3b6
MD5 3e92c5d16bfd88b9d06d1973b00b9943
BLAKE2b-256 3c4235221e98785ba326b53628d1180ebc5af8d71d0dbc3df9c6daf8abbe1358

See more details on using hashes here.

File details

Details for the file scalable_vs-0.1.0-0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for scalable_vs-0.1.0-0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ca1ff6f505190616eaa28b6d8f6e78e368baffcb779c82ae6230332c4530d877
MD5 31e92dca33733e94b66208138d709133
BLAKE2b-256 4f19e8ca4e516e84136ec7866ee81d53c5646de114d6b85dca882904b74744fa

See more details on using hashes here.

File details

Details for the file scalable_vs-0.1.0-0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for scalable_vs-0.1.0-0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cabff72cb169e75bf3b2c3f32cc5382dc9626157ea8ac7d4395b8495503abef6
MD5 64aaf3198a828cbd83bfc4e2ed3fb866
BLAKE2b-256 da93c569d06119cd9a6561bf63262fb93f438f654f0b5bfbb9dca45a088116f9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page