How to visualise embeddings
- Paste or drop your embeddings. Accepted formats: a JSON array of vectors, objects with
label, optionalgroupandembeddingfields (one per line as JSONL also works), an OpenAI embeddings API response, or CSV with a label, an optional group and the numbers. - The vectors are projected to two dimensions with principal component analysis and plotted, coloured by group. The status line shows how much of the variance the plot captures.
- Click any point to list its nearest neighbours by cosine similarity, calculated on the full high-dimensional vectors, not the 2-D projection.
Reading an embedding plot
Embeddings turn text, images or other items into long lists of numbers, often 384 to 3,072 dimensions, arranged so that similar items end up close together. They power semantic search, RAG retrieval, recommendations, clustering and duplicate detection. Because nobody can picture a thousand dimensions, we project them down to two. PCA finds the two directions along which the data varies most and flattens everything onto them, so groups that form clear clusters in the plot are genuinely well separated.
Keep the limits in mind: the two components may capture only a small share of the total variance, so points that overlap in the plot can still be far apart in the full space, which is why nearest neighbours are computed on the original vectors. Non-linear methods such as t-SNE and UMAP often show clusters more clearly but distort distances. The demo data is synthetic. Your embeddings are processed entirely in your browser; this page does not create embeddings, so generate them with your model or API first.
How do I get embeddings for my text?
Call an embedding model, such as OpenAI's text-embedding-3, Cohere, Voyage or an open-source sentence-transformer, and save the vectors with labels as JSON or CSV.
Should I normalise the vectors?
Usually yes. Most embedding models are compared with cosine similarity, which ignores length, so normalising makes the plot match how they are used.
How many points can it handle?
A few thousand vectors of typical size work smoothly. Labels are hidden automatically above 150 points.