Type "cozy morning coffee" into our emoji search and it returns breakfast, warm-light and calm-mood emoji combinations β none of which share a single keyword with the query. No synonym table, no hand-tagging. That swap from keyword lookup to meaning-based matching is powered by the most boring-sounding stack in modern ML: text embeddings plus cosine similarity, scanned over ~310,000 precomputed vectors. This is the engineering tour of how it works and what we learned building it.
Keyword tables don't generalize
Classic emoji search is a lookup table: "happy" maps to π, and if you type "joyful" you get nothing. Every synonym must be hand-tagged and every phrasing anticipated.
Embedding-based search flips the problem.β¦