# Semantic IDs: Product Understanding at Scale

DevFeed: [Semantic IDs: Product Understanding at Scale](<https://devfeed.tech/articles/semantic-ids-product-understanding-at-scale-20110.md>)

Original publisher: [Read original article](<https://tech.instacart.com/semantic-ids-product-understanding-at-scale-5283e0288f5a?source=rss----587883b5d2ee---4>)

Author: Shrikar Archak

Published: 2026-06-02T16:58:00Z

Content type: article

Language: en

Sources: [Instacart](<https://devfeed.tech/sources/instacart.md>)

Topics: [recommendation systems](<https://devfeed.tech/topics/recommendation-systems.md>), [data](<https://devfeed.tech/topics/data.md>), [systems](<https://devfeed.tech/topics/systems.md>)

Tags: [embedding](<https://devfeed.tech/tags/embedding.md>), [ids](<https://devfeed.tech/tags/ids.md>), [machine-learning](<https://devfeed.tech/tags/machine-learning.md>), [model](<https://devfeed.tech/tags/model.md>), [product](<https://devfeed.tech/tags/product.md>), [recommendation-system](<https://devfeed.tech/tags/recommendation-system.md>), [recommender-systems](<https://devfeed.tech/tags/recommender-systems.md>), [retrieval](<https://devfeed.tech/tags/retrieval.md>), [scale](<https://devfeed.tech/tags/scale.md>), [vector](<https://devfeed.tech/tags/vector.md>)

## AI overview

Instacart describes how it built semantic IDs to capture relationships among grocery products that a hierarchical taxonomy misses. The approach uses product embeddings, residual vector quantization, catalog structure, contrastive training, and separate precision and discovery strategies to address cold-start products, sparse categories, and catalog-quality issues.

## Source excerpt

Key Contributors: Shrikar Archak, Karuna Ahuja, Soroush Sobhkhiz, Marko Avdalovic, Xiyu Wang, JiChao Zhang, Hao Yan, Chris Hartley Introduction Operating a grocery catalog at Instacart's scale means managing millions of products across thousands of categories. Every product is assigned to a category in our hierarchical taxonomy like "Dairy > Cheese > Parmesan". These categories provide broad classification, but they miss the connections that drive how customers actually shop. For example, a customer is building a cheese board. They've added Parmigiano Reggiano, and now they need accompaniments. Our taxonomy puts it in "Dairy > Cheese > Parmesan," so a category-based system can suggest other parmesan cheeses. But it can't connect them to the Castelvetrano olives in Pantry > Condiments > Olives, the olive tapenade in Deli > Olives Dips and Spreads, or the crudité and pre-assembled cheese tray in Deli > Prepared Meals > Party Trays. These products live in completely different branches of the catalog, with no shared ancestor below "Food." But any customer would tell you they belong together. This cross-category blindness shows up in three ways. Cold start: new products arrive with zero purchase history. We can assign them to the right category, but a category alone can't connect them to the products customers would actually consider alongside them, so they stay invisible. Tail category coverage: recommendation models learn from volume, so they skew toward popular grocery staples. Products in sparse categories lack the interaction data to surface, and the taxonomy gives the model no bridge to related items in other branches. Catalog quality at scale: with millions of products, mislabeling is inevitable -- a protein bar filed under "Candy," a sparkling water under "Soda." A rigid tree has no way to flag these because the only signal is the label itself. In this post, we walk through how we built semantic IDs at Instacart to address these problems: the embedding choices, th