1.6 KiB
2026-02-22 Session Notes
Dashboard UMAP Projection Migration
Frontend-worker on the umap-perf team received task #5: migrate the embeddings dashboard from client-side UMAP computation to server-side projection fetching. The changes involve two main files and represent a significant architectural shift in how embedding visualizations are handled.
The new flow: instead of fetching raw embedding vectors and running UMAP in the browser, the dashboard now fetches pre-computed 2D/3D coordinates from the daemon via GET /api/embeddings/projection?dimensions=2|3. This reduces client-side computation burden and allows the server to cache expensive layout calculations.
Key changes required:
- api.ts: Add
ProjectionNodeandProjectionResponsetypes, implementgetProjection()function with polling logic for "computing" status (HTTP 202) - EmbeddingsTab.svelte: Remove UMAP import and all client-side vector math; rewrite
initGraph()to fetch projections and map nodes to GraphNode format; rewriteswitchGraphMode()for 3D; replacecomputeRelationsForSelection()to use asyncgetSimilarMemories()API call instead of cosine similarity
Preserved functionality: search/filter, EmbeddingInspector integration, canvas 2D/3D rendering, embeddingsHasMore indicator. Removed: embedding limit controls (server now sends all points), client-side cosine similarity computation, UMAP-related state variables.
Critical consideration: EmbeddingPoint type mapping from ProjectionNode must be preserved so downstream inspector and canvas components continue working despite vector data no longer being available client-side.