Represent the catalog for retrieval

Use one record per searchable product or variant, depending on how inventory and price are managed. Create an embedding from meaningful catalog content: title, category, description, attributes, and approved merchandising text. Store availability, market, tenant, brand, category, price, currency, and lifecycle state as metadata.

Add `sparse_text` with the title, brand, SKU, category, synonyms, and user-facing attributes. This gives lexical search the exact terms shoppers expect while the vector captures broader intent. Use stable IDs so a catalog refresh can upsert an existing product instead of creating duplicate records.

Filter before ranking

Inventory, market, assortment, customer segment, and tenant are eligibility constraints. Derive them from the storefront session or trusted catalog service and inject them as metadata filters on every query. A result that is semantically relevant but out of stock, unavailable in the user's market, or owned by another tenant should not enter the ranking list.

Keep the source of truth for price, checkout, and inventory in the commerce platform. Talqora is the retrieval layer. Return stable product IDs and metadata from search, then let the application hydrate current transactional fields from the authoritative system when necessary.

Use hybrid search for real shopper language

A query such as lightweight shoes for wet mountain trails benefits from dense similarity. A query such as `SKU-4829-R`, a brand, or a product line benefits from BM25. Hybrid retrieval uses both ranked lists and avoids forcing dense distance and lexical relevance into one artificial score scale.

AWS has published hybrid ecommerce search examples combining keyword and semantic search, including multimodal product discovery. Test search with real queries from site search logs, including misspellings, exact identifiers, low-intent browsing, zero-result queries, and high-value category terms. Measure clicks, add-to-cart behavior, empty results, latency, and transfer.

Operate catalog refreshes safely

Write catalog updates in bounded idempotent batches. Use a deterministic `Idempotency-Key` per source checkpoint and only advance the catalog cursor after the API accepts the batch. Writing an existing ID replaces its active representation, while documents measures current cardinality and rows written measures accepted activity.

Use a branch to evaluate a new embedding model or catalog representation before changing production traffic. Give staging a branch-scoped read-only key, compare relevance and latency against the production index, then update the application configuration only after the evaluation succeeds.

Apply the AWS multimodal discovery lesson

AWS has published a retail search pattern that combines keyword and semantic search across text and images. The practical takeaway is that no single representation is sufficient for a real catalog. Shoppers may search by a visual concept, a synonym, a brand, an exact identifier, a product attribute, or a constraint such as size or availability.

Start with text embeddings and the catalog fields you can maintain reliably. Add image-derived representations only when product imagery is a material discovery signal and you can evaluate it against conversion-quality queries. Keep search evaluation separate from business ranking: Talqora returns eligible retrieval candidates; your commerce service can apply merchandising, margin, sponsored placement, inventory, and price policy afterward.