scann
Scalable Nearest Neighbor search library
Decision gist · record as of 2026-08-14
Yes, if you need fast approximate nearest neighbor search on Linux with Python 3.9–3.13 and have x86 or ARM hardware with the required instruction sets. The library is actively maintained, has no known vulnerabilities, and is well-suited for production recommendation and search workloads. Install friction is moderate due to compiled dependencies, but pre-built wheels mitigate build complexity. Not suitable for Windows or macOS without additional setup.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires x86 processors with AVX and FMA support (or ARM with NEON); libstdc++ version 3.4.23 or above must be installed on the system.
- Medium friction due to compiled wheels requiring specific CPU instruction sets (AVX and FMA for x86, NEON for ARM) and glibc version 2.27 or later.
- Actively maintained with recent releases; supports Python 3.9–3.13 on Linux.
License · maintenance · safety
Apache-2.0 (permissive) — Apache-2.0 permissive license allows commercial and private use with minimal restrictions; attribution required.
last release 2025-08-29 (350 days) · last repo commit 2026-08-14 · 38,531 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 679,845 downloads/mo, #5,367 on PyPI
Alternatives
Verify before relying
pip install scann
import scann
# Build index from numpy array of vectors
builder = scann.scann_ops_pybind.builder(data, num_leaves=100, leaves_to_search=10)
index = builder.build()
# Search for nearest neighbors
neighbors, distances = index.search(query_vector, k=10)- Exact performance metrics on ann-benchmarks.com for glove-100-angular dataset mentioned in description
- Whether TensorFlow integration (scann[tf]) is necessary for typical use cases or only for SavedModel embedding
- Memory overhead and scaling characteristics for datasets larger than those in published benchmarks
What it is and what it does
ScaNN is a research-grade library for fast approximate nearest neighbor search on large vector datasets. It implements techniques for search space pruning and vector quantization to accelerate similarity lookups while trading off recall for speed. The library is optimized for x86 processors with AVX support and provides both Python and TensorFlow APIs, with the core Python bindings available by default and TensorFlow ops available as an optional extra.
The package depends on numpy for array handling and protobuf for serialization. It is designed for machine learning workflows where you need to find similar embeddings or vectors quickly—typical use cases include semantic search, recommendation systems, and clustering. Installation requires Linux with glibc 2.27 or later and Python 3.9–3.13; the compiled wheels are pre-built for common architectures, avoiding the need to compile from source in most cases.
Use it for
- Semantic search over document embeddings or text representations to find similar content quickly
- Recommendation systems that retrieve similar items based on learned vector representations
- Large-scale clustering or nearest-neighbor analysis on high-dimensional datasets
- Real-time similarity lookup in machine learning inference pipelines
- Embedding-based retrieval for information retrieval or question-answering systems
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need fast approximate nearest neighbor search on Linux with Python 3.9–3.13 and have x86 or ARM hardware with the required instruction sets.
The library is actively maintained, has no known vulnerabilities, and is well-suited for production recommendation and search workloads. Install friction is moderate due to compiled dependencies, but pre-built wheels mitigate build complexity. Not suitable for Windows or macOS without additional setup.
Install
scann on PyPI
Before you install
Medium friction due to compiled wheels requiring specific CPU instruction sets (AVX and FMA for x86, NEON for ARM) and glibc version 2.27 or later. Actively maintained with recent releases; supports Python 3.9–3.13 on Linux.
Requires x86 processors with AVX and FMA support (or ARM with NEON); libstdc++ version 3.4.23 or above must be installed on the system.
License in practice
Apache-2.0 permissive license allows commercial and private use with minimal restrictions; attribution required.
Quickstart
pip install scann
import scann
# Build index from numpy array of vectors
builder = scann.scann_ops_pybind.builder(data, num_leaves=100, leaves_to_search=10)
index = builder.build()
# Search for nearest neighbors
neighbors, distances = index.search(query_vector, k=10)
Verify before relying
- Exact performance metrics on ann-benchmarks.com for glove-100-angular dataset mentioned in description
- Whether TensorFlow integration (scann[tf]) is necessary for typical use cases or only for SavedModel embedding
- Memory overhead and scaling characteristics for datasets larger than those in published benchmarks
Package facts
| License | Apache-2.0 permissive |
| Python support | Supports the current Python release <3.14,>=3.9 |
| Install friction | Medium. Platform-specific wheel |
| Runtime dependencies | 2 packagesnumpyprotobuf |
| Maintenance | Actively maintained 350 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 679,845 / month, #5,367 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Intended Audience :: DevelopersIntended Audience :: EducationIntended Audience :: Science/ResearchProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.9Topic :: Scientific/Engineering :: MathematicsTopic :: Software Development :: LibrariesTopic :: Software Development :: Libraries :: Python Modules |
Evidence: scann-1.4.2-cp310-cp310-manylinux_2_27_aarch64.whl; scann-1.4.2-cp310-cp310-manylinux_2_27_x86_64.whl; scann-1.4.2-cp311-cp311-manylinux_2_27_aarch64.whl; scann-1.4.2-cp311-cp311-manylinux_2_27_x86_64.whl; scann-1.4.2-cp312-cp312-manylinux_2_27_aarch64.whl; scann-1.4.2-cp312-cp312-manylinux_2_27_x86_64.whl; scann-1.4.2-cp313-cp313-manylinux_2_27_aarch64.whl; scann-1.4.2-cp313-cp313-manylinux_2_27_x86_64.whl; scann-1.4.2-cp39-cp39-manylinux_2_27_aarch64.whl; scann-1.4.2-cp39-cp39-manylinux_2_27_x86_64.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “large-scale similarity”
- scannScaNN performs efficient vector similarity search at scale using…
- pyspark-hnswProvides a PySpark-compatible implementation of the Hierarchical…
- nmslibnmslib provides efficient similarity search in metric and non-metric…
Give your agent the search over MCP, or paste the wish link into any chat.
More Libraries packages
urllib3 is an HTTP client library that provides thread-safe connection pooling, SSL/TLS verification, multipart file uploads, request retries, compression support, and proxy handling for Python applications.
Requests is a Python HTTP library that simplifies sending HTTP/1.1 requests with automatic handling of headers, authentication, cookies, and response parsing.
Pluggy provides a plugin system that lets you define hook specifications and register implementations to be called in sequence, enabling extensible Python applications without tight coupling.
Install it if you're building an extensible application or framework.
Provides parsing, arithmetic, and recurrence rule computation for dates and times, with timezone support and iCalendar RFC compliance.
Install it if you need to parse flexible date strings, compute relative dates, handle timezones, or work with recurrence rules—it's the de facto choice for these tasks.
Six provides utility functions to write Python code that runs on both Python 2.7 and Python 3.3+, smoothing over language differences between the two versions.
pytest is a testing framework that lets you write test functions using plain assert statements and automatically discovers and runs them, with detailed failure reporting.
See also nmslib · annoy · libcuvs-cu12 · cuvs-cu12 · pynndescent · voyager · simsimd · edt · pyspark-hnsw · usearch