  Similarity search is a core component in various applications such as image
matching, product recommendation and low-shot classification. However, single
machine solutions are usually insufficient due to the large cardinality of
modern datasets and stringent latency requirement of on-line query processing.
We present Pyramid, a general and efficient framework for distributed
similarity search. Pyramid supports search with popular similarity functions
including Euclidean distance, angular distance and inner product. Different
from existing distributed solutions that are based on KD-tree or locality
sensitive hashing (LSH), Pyramid is based on Hierarchical Navigable Small World
graph (HNSW), which is the state of the art similarity search algorithm on a
single machine. To achieve high query processing throughput, Pyramid partitions
a dataset into sub-datasets containing similar items for index building and
assigns a query to only some of the sub-datasets for query processing. To
provide the robustness required by production deployment, Pyramid also supports
failure recovery and straggler mitigation. Pyramid offers a set of concise API
such that users can easily use Pyramid without knowing the details of
distributed execution. Experiments on large-scale datasets show that Pyramid
produces quality results for similarity search, achieves high query processing
throughput and is robust under node failure and straggler.
