{"adoption": {"forks": 82, "observed_at": "2026-08-28T04:05:08.590780+00:00", "stars": 1591}, "canonical_url": "https://ross.abutalabs.com/products/spotify-voyager", "card": {"archived": false, "artifact_type": "library", "description": "🛰️ An approximate nearest-neighbor search library for Python and Java with a focus on ease of use, simplicity, and deployability.", "domain": ["machine-learning", "large-language-models", "developer-tools"], "enriched": true, "function": ["search-engine", "vector-database", "machine-learning"], "health_score": 77, "homepage": "https://spotify.github.io/voyager/", "language": "C++", "license": "Apache-2.0", "license_family": "permissive", "maturity": "stable", "member_repos": ["spotify/voyager"], "name": "spotify/voyager", "platform": ["python", "jvm", "windows", "cross-platform"], "pushed_at": "2026-03-01T06:14:00+00:00", "repo": "spotify/voyager", "stars": 1591, "tags": ["hnsw", "ann", "embeddings", "in-memory", "nearest-neighbor-search", "java-bindings", "scala", "no-server", "search", "macos", "linux"], "topics": ["hnsw", "hnswlib", "java", "machine-learning", "nearest-neighbor-search", "python"], "urls": [], "use_cases": ["search millions of embeddings with millisecond latency in a Python or Java app", "build semantic search over document embeddings", "power recommendation or similarity features without running a vector database server", "find nearest neighbors for image or audio embeddings", "share a single vector index between Python and Java services", "replace Annoy with a higher-recall, faster ANN library", "embed vector search directly in an application with no operational overhead"], "what_it_is": "Voyager is an in-memory approximate nearest-neighbor search library implementing the HNSW algorithm, with bindings for Python and Java (and Scala) that share index compatibility. Built by Spotify and used in production at scale, it offers fast, dependency-free vector similarity search without requiring a server or GPUs.", "when_to_avoid": ["you need a distributed, persistent, or multi-node vector database", "you need exact (non-approximate) nearest-neighbor results", "you work in a language other than Python, Java, or Scala", "your index must be updated concurrently by many writers or exceed available memory"], "when_to_choose": ["you need fast approximate nearest-neighbor search embedded in Python or Java code", "you want no server, no dependencies, and minimal memory footprint", "you need high recall and speed compared to Annoy", "you want index compatibility across Python and Java", "you need a battle-tested library used in large-scale production"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/spotify-voyager", "repo": "spotify/voyager", "role": "main", "score": 55}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:08.590780+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:54:45.763682+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be154ef57b84bb28a1a477960a7fa630d0e12547a44df19ba719a89e39f75590", "fetched_at": "2026-08-28T04:05:08.590780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spotify/voyager"}, {"content_hash": "b5242230c1af1a43301522ecbcb4417b638159487e99ac41aaa6a61aea31d32c", "fetched_at": "2026-08-29T11:25:18.356850+00:00", "kind": "homepage", "missing": false, "url": "https://spotify.github.io/voyager/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:08.590780+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:54:45.763682+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be154ef57b84bb28a1a477960a7fa630d0e12547a44df19ba719a89e39f75590", "fetched_at": "2026-08-28T04:05:08.590780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spotify/voyager"}, {"content_hash": "b5242230c1af1a43301522ecbcb4417b638159487e99ac41aaa6a61aea31d32c", "fetched_at": "2026-08-29T11:25:18.356850+00:00", "kind": "homepage", "missing": false, "url": "https://spotify.github.io/voyager/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:54:45.763682+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be154ef57b84bb28a1a477960a7fa630d0e12547a44df19ba719a89e39f75590", "fetched_at": "2026-08-28T04:05:08.590780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spotify/voyager"}, {"content_hash": "b5242230c1af1a43301522ecbcb4417b638159487e99ac41aaa6a61aea31d32c", "fetched_at": "2026-08-29T11:25:18.356850+00:00", "kind": "homepage", "missing": false, "url": "https://spotify.github.io/voyager/"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:08.590780+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:08.590780+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:08.590780+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:54:45.763682+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be154ef57b84bb28a1a477960a7fa630d0e12547a44df19ba719a89e39f75590", "fetched_at": "2026-08-28T04:05:08.590780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spotify/voyager"}, {"content_hash": "b5242230c1af1a43301522ecbcb4417b638159487e99ac41aaa6a61aea31d32c", "fetched_at": "2026-08-29T11:25:18.356850+00:00", "kind": "homepage", "missing": false, "url": "https://spotify.github.io/voyager/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:08.590780+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:08.590780+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:54:45.763682+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be154ef57b84bb28a1a477960a7fa630d0e12547a44df19ba719a89e39f75590", "fetched_at": "2026-08-28T04:05:08.590780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spotify/voyager"}, {"content_hash": "b5242230c1af1a43301522ecbcb4417b638159487e99ac41aaa6a61aea31d32c", "fetched_at": "2026-08-29T11:25:18.356850+00:00", "kind": "homepage", "missing": false, "url": "https://spotify.github.io/voyager/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:08.590780+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:08.590780+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:08.590780+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:54:45.763682+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be154ef57b84bb28a1a477960a7fa630d0e12547a44df19ba719a89e39f75590", "fetched_at": "2026-08-28T04:05:08.590780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spotify/voyager"}, {"content_hash": "b5242230c1af1a43301522ecbcb4417b638159487e99ac41aaa6a61aea31d32c", "fetched_at": "2026-08-29T11:25:18.356850+00:00", "kind": "homepage", "missing": false, "url": "https://spotify.github.io/voyager/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:08.590780+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:08.590780+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:54:45.763682+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be154ef57b84bb28a1a477960a7fa630d0e12547a44df19ba719a89e39f75590", "fetched_at": "2026-08-28T04:05:08.590780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spotify/voyager"}, {"content_hash": "b5242230c1af1a43301522ecbcb4417b638159487e99ac41aaa6a61aea31d32c", "fetched_at": "2026-08-29T11:25:18.356850+00:00", "kind": "homepage", "missing": false, "url": "https://spotify.github.io/voyager/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:54:45.763682+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be154ef57b84bb28a1a477960a7fa630d0e12547a44df19ba719a89e39f75590", "fetched_at": "2026-08-28T04:05:08.590780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spotify/voyager"}, {"content_hash": "b5242230c1af1a43301522ecbcb4417b638159487e99ac41aaa6a61aea31d32c", "fetched_at": "2026-08-29T11:25:18.356850+00:00", "kind": "homepage", "missing": false, "url": "https://spotify.github.io/voyager/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:54:45.763682+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be154ef57b84bb28a1a477960a7fa630d0e12547a44df19ba719a89e39f75590", "fetched_at": "2026-08-28T04:05:08.590780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spotify/voyager"}, {"content_hash": "b5242230c1af1a43301522ecbcb4417b638159487e99ac41aaa6a61aea31d32c", "fetched_at": "2026-08-29T11:25:18.356850+00:00", "kind": "homepage", "missing": false, "url": "https://spotify.github.io/voyager/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:54:45.763682+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be154ef57b84bb28a1a477960a7fa630d0e12547a44df19ba719a89e39f75590", "fetched_at": "2026-08-28T04:05:08.590780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spotify/voyager"}, {"content_hash": "b5242230c1af1a43301522ecbcb4417b638159487e99ac41aaa6a61aea31d32c", "fetched_at": "2026-08-29T11:25:18.356850+00:00", "kind": "homepage", "missing": false, "url": "https://spotify.github.io/voyager/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 70, "longevity": 88, "rhythm": 16}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1238, "days_push": 185, "days_rel": 344, "gap_med": 283, "n_releases_24m": 2}, "score": 55, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}