The infrastructure behind AI search in Figma: embedding models, vector search, and scale optimizations
Figma users were struggling to locate specific designs or components, especially in large organizations with complex design systems. Component search relied on strict text matching, forcing designers to manually enumerate keywords in descriptions.
The initial indexing approach serialized entire Figma files as JSON and parsed that in Ruby, which was extremely slow and memory-intensive. An early experiment generating embeddings from textual JSON representations also produced worse results than image-based embeddings.
Figma launched AI-powered search in early beta, enabling semantic and visual search across designs and components.
Infrastructure optimizations reduced indexing data volume to 12% of the original by debouncing, and cut the search index in half by removing duplicates and draft files.
Frequently asked questions
What did this team achieve with this AI workflow?
Figma launched AI-powered search in early beta, enabling semantic and visual search across designs and components.
What tools did this team use?
CLIP, OpenSearch, AWS SageMaker, DynamoDB, S3, llvmpipe.
What results were reported?
Indexing data volume after debouncing: 12%; Search index size after deduplication: cut the index in half (source-reported, not independently verified).
What failed first in this deployment?
The initial indexing approach serialized entire Figma files as JSON and parsed that in Ruby, which was extremely slow and memory-intensive.
How is this back office ops AI workflow structured?
File change or publish triggers indexing → Headless C++ editor identifies frames → SageMaker generates embeddings in batches → Write embeddings and metadata to indexes → User submits search query → Query embedding generated on-the-fly → Nearest neighbor vector search → Hybrid lexical and semantic result ranking.