Similarity search over embeddings
Finding the stored vectors closest to a query vector, usually embeddings of text or images, quickly enough to serve an application.
What it asks of a system
An embedding model turns a piece of text or an image into a vector of a few hundred to a few thousand numbers, and similar items end up close together. Finding the nearest neighbours exactly means comparing the query with every stored vector, which gives perfect recall but grows linearly with the data. Approximate indexes such as HNSW (a layered graph) or IVF (clusters) answer far faster by looking at only part of the data, and trade some recall for that speed.
To tell whether a system really handles it, measure recall and latency together on your own vectors, since either one alone is easy to improve. Check how much memory the index needs, how long it takes to build and whether it can take updates and deletes, and how it combines similarity with metadata filters: if filtering happens after the approximate search, a selective filter can return fewer results than you asked for. Hybrid search, which mixes vector similarity with keyword relevance, is a common extra requirement.
Good at it · 11
Compare side by sideSearch indexes
Vector databases
ChromaOpen sourceHNSW on a single node and SPANN in the distributed version, with metadata, full-text and regex filters in the same query.An open-source vector database for AI apps that runs inside a Python or JavaScript process, as a single server, or as a distributed service on object storage.
Deep LakeOpen sourceTQL runs vector similarity search over a dataset, and LangChain and LlamaIndex use Deep Lake as a vector store.Activeloop’s storage format and database for AI data: images, video, audio, text and embeddings stored as compressed columns on object storage, searchable by vector and streamable straight into PyTorch or TensorFlow.
PineconeCommercialServerless indexes kept as slabs in object storage, with dense, sparse and metadata-filtered queries and a namespace per tenant.A managed, serverless vector database that keeps its indexes in object storage and serves dense-vector, sparse-vector and BM25 full-text search from the same index.
turbopufferCommercialA centroid-based ANN index derived from SPFresh, kept in object storage and cached on NVMe, so large and many-tenant indexes stay cheap.A managed vector and full-text search engine that keeps every index in object storage and caches the active parts on NVMe and in memory, trading occasional slow cold queries for a much lower price per GB.Sources
- Malkov and Yashunin: Hierarchical Navigable Small World graphs (arXiv, 2016)
- pgvector README (exact and approximate search, HNSW, IVFFlat, filtering, iterative scans)
- Douze et al.: The Faiss library (arXiv, 2024; inverted files, HNSW, vector-first and metadata-first filtering)
Why each technology is listed comes from the sources on its own page.
