Use named vectors for independent text and image embeddings
I would use one Qdrant collection with two named dense vector fields, for example "text" and "image". Each product is one point, with catalog metadata in payload. The two named vectors can have different dimensions and distance configurations, which is why I would not concatenate unrelated model outputs just to force one vector schema. At query time the application selects the appropriate named vector, or uses a multimodal ranking strategy when the product experience requires combining both signals. A common mistake is assuming all vectors in a collection must use one dimension and metric; named vectors are designed for multiple vector configurations in the same point.
Trade-off: one collection keeps product data together, but storing two vectors increases storage and memory compared with one vector. Separate collections can be better when modalities have different scaling, retention, or operational requirements.
Each named vector has its own size and distance configuration, and queries must specify the correct vector name.
For production search, I would also index payload fields used for filtering, such as category, brand, availability, and merchant or tenant ID.
The current Python client commonly uses query_points for general querying; older Qdrant examples may use search, so client API syntax is version-sensitive. A shared multimodal embedding space is an alternative when direct text-to-image similarity is a core requirement.
A product has a 384-dimensional text embedding and a 512-dimensional image embedding. How would you store both in Qdrant?
A developer queries the image vector with a text embedding. How would you diagnose the failure?
Your UI supports text search and image-upload search against the same catalog. How would you structure the collection and query paths?
Images are re-embedded with a new model while text embeddings remain unchanged. How would you migrate the image vector safely?
A retailer wants text search, visual similarity, and category filters over 100 million products. How would you design the Qdrant schema and rollout?
You have legacy and new image models with different dimensions. Would you keep both named vectors in one collection, and what trade-offs matter?
Text and image traffic have very different scaling characteristics. Would you use named vectors in one collection, separate collections, or a hybrid architecture?
How would you perform a zero-downtime migration when the replacement text model changes both vector dimension and similarity metric?