MCPcopy
hub / github.com/apple/embedding-atlas

github.com/apple/embedding-atlas @v0.21.0 sqlite

repository ↗ · DeepWiki ↗ · release v0.21.0 ↗
1,289 symbols 3,424 edges 223 files 198 documented · 15%
README

Embedding Atlas

NPM Version PyPI - Version Paper Build GitHub License

Embedding Atlas is a tool that provides interactive visualizations for large embeddings and their metadata. You can visualize, cross-filter, and search across your data.

For embeddings

  • 🏷️ Automatic data clustering & labeling: Interactively visualize and navigate overall data structure.

  • 🫧 Kernel density estimation & density contours: Easily explore and distinguish between dense regions of data and outliers.

  • 🧊 Order-independent transparency: Ensure clear, accurate rendering of overlapping points.

  • 🔍 Real-time search & nearest neighbors: Find similar data to a given query or existing data point.

  • 🚀 Smooth performance at scale: Up to a few million points, powered by WebGPU.

For any tabular data

  • 📊 Linked dashboards & cross-filtering: Standard chart types (bar, line, bubble, count plot, eCDF) plus a composable chart spec for building custom charts like heatmaps and average-line overlays. Charts can be configured to cross-filter.

  • 🧩 Multimodal data support: Built-in viewers for text, image, audio, numeric, categorical, and time columns.

  • 🤖 AI agent access via MCP: AI agents can query the schema, run SQL, create charts, and capture screenshots via Model Context Protocol.

Please visit https://apple.github.io/embedding-atlas for a demo and documentation.

screenshot of Embedding Atlas

Get started

To use Embedding Atlas with Python:

pip install embedding-atlas

embedding-atlas <your-dataset>

In addition to the command line tool, Embedding Atlas is available as a Python Notebook (e.g., Jupyter) widget:

from embedding_atlas.widget import EmbeddingAtlasWidget

# Show the Embedding Atlas widget for your data frame:
EmbeddingAtlasWidget(df)

Finally, components from Embedding Atlas are also available in an npm package:

npm install embedding-atlas
import { EmbeddingAtlas, EmbeddingView } from "embedding-atlas";

// or with React:
import { EmbeddingAtlas, EmbeddingView } from "embedding-atlas/react";

// or Svelte:
import { EmbeddingAtlas, EmbeddingView } from "embedding-atlas/svelte";

For more information, please visit https://apple.github.io/embedding-atlas/overview.html.

BibTeX

For the Embedding Atlas tool:

@misc{ren2025embedding,
  title={Embedding Atlas: Low-Friction, Interactive Embedding Visualization},
  author={Donghao Ren and Fred Hohman and Halden Lin and Dominik Moritz},
  year={2025},
  eprint={2505.06386},
  archivePrefix={arXiv},
  primaryClass={cs.HC},
  url={https://arxiv.org/abs/2505.06386},
}

For the algorithm that automatically produces clusters and labels in the embedding view:

@misc{ren2025scalable,
  title={A Scalable Approach to Clustering Embedding Projections},
  author={Donghao Ren and Fred Hohman and Dominik Moritz},
  year={2025},
  eprint={2504.07285},
  archivePrefix={arXiv},
  primaryClass={cs.HC},
  url={https://arxiv.org/abs/2504.07285},
}

Development

For development instructions, please visit https://apple.github.io/embedding-atlas/develop.html, or checkout packages/docs/develop.md.

License

This code is released under the MIT license.

Extension points exported contracts — how you extend this code

State (Interface)
(no doc) [13 implementers]
packages/component/src/lib/dataflow.ts
Cache (Interface)
(no doc) [2 implementers]
packages/viewer/src/api.ts
UMAP (Interface)
(no doc) [1 implementers]
packages/umap/umap-wasm/index.d.ts
CallbackRef (Interface)
(no doc)
packages/utils/src/worker_helper.ts
Model (Interface)
(no doc)
packages/backend/src/anywidget/index.ts
Cluster (Interface)
(no doc)
packages/density-clustering/density_clustering_wasm/js/index.d.ts
Example (Interface)
(no doc)
packages/docs/examples/examples.data.ts
DatasetConfig (Interface)
(no doc)
packages/examples/src/sample_datasets.ts

Core symbols most depended-on inside this repo

get
called by 115
packages/viewer/src/app/data_source.ts
map
called by 105
packages/component/src/lib/dataflow.ts
set
called by 102
packages/viewer/src/app/data_source.ts
derive
called by 81
packages/component/src/lib/dataflow.ts
deepEquals
called by 53
packages/utils/src/equals.ts
statefulDerive
called by 42
packages/component/src/lib/dataflow.ts
compute_projection
called by 42
packages/backend/embedding_atlas/projection.py
pagerank
called by 39
packages/backend/embedding_atlas/pagerank.py

Shape

Function 644
Method 379
Interface 141
Class 107
Route 18

Languages

TypeScript69%
Python31%

Modules by API surface

packages/component/src/lib/dataflow.ts55 symbols
packages/backend/tests/test_pagerank.py49 symbols
packages/backend/tests/test_modality_detection.py47 symbols
packages/viewer/src/charts/spec/runtime.ts38 symbols
packages/backend/embedding_atlas/server.py35 symbols
packages/backend/tests/test_async_map.py31 symbols
packages/backend/tests/test_projection.py30 symbols
packages/backend/tests/test_cache.py30 symbols
packages/viewer/src/stores/embedding_atlas_store.ts29 symbols
packages/utils/src/worker_helper.ts27 symbols
packages/backend/tests/test_projection_transformers.py23 symbols
packages/viewer/src/app/mcp_server.ts20 symbols

Dependencies from manifests, versioned

@codemirror/autocomplete6.20.1 · 1×
@codemirror/commands6.10.3 · 1×
@codemirror/lang-json6.0.2 · 1×
@codemirror/lang-markdown6.5.0 · 1×
@codemirror/lang-sql6.10.0 · 1×
@codemirror/lint6.9.5 · 1×
@codemirror/search6.6.0 · 1×
@codemirror/state6.6.0 · 1×
@codemirror/theme-one-dark6.1.3 · 1×
@codemirror/view6.40.0 · 1×
@embedding-atlas/component* · 1×

For agents

$ claude mcp add embedding-atlas \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact