LLM-Powered Content Embeddings for Multi-Vertical Search and Recommendations
doordash · E-commerce · 2026 · source Agentic: no · promotional bias: low · source-backed · extracted with prompt 0.5.6 (schema v2)
Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.
Problem
Domain: Multi-vertical search and recommendations
DoorDash needed better semantic retrieval and personalization across restaurants, grocery, retail, and gifting, where sparse metadata and engagement-only embeddings missed catalog meaning and cold-start intent.
Constraints:
- Behavioral signals are proxies for meaning and are sparse in transactional, short-session commerce.
- Catalogs span multiple verticals with different metadata quality and engagement density.
- Embeddings had to support both large offline catalog backfills and low-latency online query embedding.
- The system had to improve search, recommendation, and cold-start discovery without relying only on accumulated clicks.
Architecture
DoorDash built a content-first embedding pipeline that turns LLM-generated merchant and item profiles into reusable dense representations for search and recommendation surfaces. Image and metadata inputs become comprehensive text profiles, Metaflow incrementally refreshes changed catalog entities, gemini-embedding-001 with 256-dimensional MRL encodes entities and queries, and downstream search/recommendation systems use those embeddings for semantic retrieval, item-level RAG/reranking, and personalized homepage carousels.
Diagram confidence: reconstructed (reconstructed from prose).
flowchart LR LLM_profiles["LLM-generated profiles"] --> Embedding_pipeline["Embedding inference pipeline"] Item_images["Item image descriptions"] --> LLM_profiles Embedding_evaluation["Embedding model evaluation"] --> Gemini_model["Gemini embedding model"] Gemini_model --> Embedding_pipeline Embedding_pipeline --> Embedding_index["Embedding index"] Gemini_model --> Online_query["Online query embedding"] Online_query --> Semantic_search["Semantic search retrieval"] Embedding_index --> Semantic_search Semantic_search --> Qwen_reranker["Qwen reranker"] Embedding_index --> Homepage_retrieval["Homepage carousel retrieval"] Homepage_retrieval --> Store_ranker["Existing store ranker"] Qwen_reranker --> Search_presentation["Search result presentation"] Store_ranker --> Search_presentation
Components
| Component | Role | Interacts with |
|---|---|---|
LLM-generated profiles |
Rich standardized text profiles for merchants and items that repair sparse catalog metadata. | Embedding inference pipeline, Item image descriptions |
Item image descriptions |
Vision-language text descriptions generated from item images and folded into item profiles. | LLM-generated profiles |
Embedding inference pipeline |
Metaflow-based offline pipeline that refreshes changed catalog entities and creates entity embeddings. | LLM-generated profiles, Embedding index, Embedding model evaluation |
Embedding model evaluation |
Compares embedding families, task types, dimensionality, latency, and retrieval quality before production adoption. | Embedding inference pipeline, Gemini embedding model |
Gemini embedding model |
Selected off-the-shelf encoder using 256-dimensional MRL embeddings and asymmetric search task types. | Embedding model evaluation, Embedding inference pipeline, Online query embedding |
Embedding index |
Persistent storage/index used by downstream experiments and production retrieval paths. | Embedding inference pipeline, Semantic search retrieval, Homepage carousel retrieval |
Online query embedding |
Embeds search queries online using retrieval-query semantics for ANN-style retrieval. | Gemini embedding model, Semantic search retrieval |
Semantic search retrieval |
Retrieves semantically aligned stores and items for tail, compositional, and vibe-based searches. | Online query embedding, Embedding index, Qwen reranker |
Qwen reranker |
Fine-tuned reranker that scores item and store profile candidates for upgraded item-level search. | Semantic search retrieval, Search result presentation |
Homepage carousel retrieval |
Uses generated themes and profile embeddings to retrieve nearest-neighbor stores and representative dishes. | Embedding index, Existing store ranker |
Existing store ranker |
Final ordering layer for production constraints such as availability and delivery radius. | Homepage carousel retrieval, Search result presentation |
Search result presentation |
Displays query-relevant store/item results, including item image contextualization on search cards. | Qwen reranker, Existing store ranker |
Data flow
Merchant/item metadata and, when present, images are transformed into natural-language profiles. The embedding pipeline refreshes only entities whose underlying content changed, writes embeddings into persistent storage/indexes, and serves them to entity similarity, embedding-based retrieval, item-level search RAG/reranking, and homepage generative carousel retrieval.
3 supporting quotes
Why this architecture
DoorDash chose content-first embeddings because commerce sessions are intentful and sparse, making engagement-only representations weak for tail queries and cross-vertical coverage. LLM profiles improve input representation, then embeddings, rankers, and sequence models bend the semantic space toward DoorDash's transactional objectives.
3 supporting quotes
Models used: gemini-embedding-001 · text-embedding-005 · MiniLM · Qwen embedding models · Qwen 3 Rerank · vision-language model · LLMs
Scale
- The system spans DoorDash food, grocery, retail, and gifting verticals.“This problem spans every DoorDash vertical — including food, groceries, retail, and gifting, with each holding catalog richness that sparse metadata flattens away.”article, stated
- DoorDash adopted 256-dimensional MRL embeddings to balance quality and index efficiency.“we adopted gemini-embedding-001 with 256-dimensional output -- leveraging MRL — using SEMANTIC_SIMILARITY task type for entity-entity comparisons”article, stated
- Semantic search reduced null search rate by 3.65% and raised core search session conversion by 0.66%.“The null search rate reduction is particularly telling — 3.65% fewer searches return nothing useful, which is precisely the tail-query scenario”article, stated“Core search session CVR is increased by +0.66%”article, stated
- Homepage generative carousels increased order rate by 2.4% and improved offline precision@10 from 68% to 85%.“Consumer homepage order rate increased by 2.4% relatively; consumer reorder rate in the previous seven days increased by+0.164% relatively”article, stated“Offline precision@10 on the homepage improved 68% to 85%.”article, stated
Alternatives considered (roads not taken)
Behavior-only embeddings from co-visitation and engagement
Rejected because: Clicks and co-visitation were only proxies and did not capture identity, context, intent, or semantic distinctions in DoorDash's catalog.
Relying on metadata or human labels without LLM profile generation
Rejected because: Content encoders were historically constrained by metadata richness and label quality; LLM profiles changed the data-quality bottleneck.
Swapping to a better embedding model without improving input representation
Rejected because: DoorDash's offline evaluation showed data quality moved performance more than model choice alone.
Single consumer text-profile embedding for personalization
Rejected because: Consumer intent varies by time, location, occasion, and trajectory, so a static text vector averaged away useful distinctions.
Patterns
fine-tuning-adaptation (modeling)
DoorDash used domain-specific LLM-generated text profiles as the main adaptation layer before embedding, improving representation quality for merchants and items without custom-training every retriever.
hybrid-search (retrieval)
The search stack combines existing lexical/store retrieval with embedding-based retrieval and item-level reranking rather than replacing production retrieval in one step.
retrieval-ranking (retrieval)
Retrieved item/store candidates are reranked with a Qwen reranker and final production rankers, making semantic recall usable within existing ranking constraints.
batch-offline-processing (infrastructure)
Catalog embeddings are refreshed offline and incrementally so evolving menus and products do not force wasteful full-corpus regeneration.
eval-driven-development (evaluation)
DoorDash selected embeddings through retrieval metrics, semantic fidelity, latency, and index-efficiency evaluation instead of choosing by model reputation.
Tradeoffs
Use content-first embeddings as the bootstrap layer
Chose LLM-generated profiles plus off-the-shelf embedding models over pure co-visitation or engagement-derived embeddings.
Rationale: Content-first profiles gave day-zero semantics and cross-vertical coverage where engagement density was sparse.
Adopt compact MRL embeddings
Chose gemini-embedding-001 with 256-dimensional MRL output over larger-dimensional embeddings when index efficiency mattered.
Rationale: The model/dimension choice balanced quality with operational index efficiency for large-scale search retrieval.
Layer item-level EBR and reranking onto store-level retrieval
Chose item profile embeddings plus Qwen reranking over store-level EBR alone.
Rationale: Dish-specific queries needed item-level relevance and query-relevant imagery that store-level retrieval alone could not provide.
Keep consumer representation hybrid
Chose content semantics for entities plus engagement/sequence modeling for users over text-profile embeddings as a universal representation for consumers.
Rationale: Entity identity is expressible in language, but consumer intent is behavioral and situational.
Gotchas (what bit them)
Behavioral embeddings failed to capture semantic intent for sparse commerce sessions.
Root cause: DoorDash users do not produce social-feed-scale engagement streams, and clicks are an indirect proxy for cuisine, product, and occasion meaning.
Resolution: Bootstrap semantic content embeddings from LLM-generated profiles and use downstream retrieval/ranking to adapt them to business objectives.
Input representation mattered more than simply choosing a stronger embedding model.
Root cause: Noisy raw item metadata limited the benefit of better encoders when the semantic profile itself was weak.
Resolution: Generate richer LLM profiles before embedding and evaluate model/data combinations separately.
Consumer profile embeddings break down when preferences are contextual and temporally shifting.
Root cause: A consumer's intent varies by situation, so a single text profile vector averages away distinctions like weekday lunch versus family browsing.
Resolution: Move toward context-conditioned representations that modulate base engagement history by time, location, occasion, and inference context.
Embedding refreshes can become wasteful when catalogs evolve continuously.
Root cause: Menus and product catalogs change, but regenerating every entity embedding daily would create unnecessary offline inference cost.
Resolution: Use incremental Metaflow inference keyed to underlying content changes.
Evaluation
DoorDash evaluated embedding families and profile inputs using Hit Rate@K, nDCG@K, semantic fidelity, systems latency, index efficiency, offline precision, and online search/homepage product metrics.
Metrics: Hit Rate@K · nDCG@K · semantic fidelity · systems latency · index efficiency · null search rate · core search session CVR · homepage order rate · offline precision@10
Outcomes
- LLM-generated profiles materially improved item/store embedding quality.
- Semantic search reduced null search rates and increased conversion.
- Generative homepage carousels increased order rate and offline precision.
The system is deployed across DoorDash search and homepage recommendation surfaces using 256-dimensional embeddings, incremental catalog inference, and production search/ranking integrations.