Sunday, January 11, 2026

Crossmodal search with Amazon Nova Multimodal Embeddings


Amazon Nova Multimodal Embeddings processes textual content, paperwork, photographs, video, and audio by means of a single mannequin structure. Obtainable by means of Amazon Bedrock, the mannequin converts completely different enter modalities into numerical embeddings throughout the identical vector house, supporting direct similarity calculations no matter content material kind. We developed this unified mannequin to scale back the necessity for separate embedding fashions, which complicate architectures, are tough to keep up and function, and additional restrict use circumstances to a one-dimensional method.

On this put up, we discover how Amazon Nova Multimodal Embeddings addresses the challenges of crossmodal search by means of a sensible ecommerce use case. We study the technical limitations of conventional approaches and exhibit how Amazon Nova Multimodal Embeddings allows retrieval throughout textual content, photographs, and different modalities. You learn to implement a crossmodal search system by producing embeddings, dealing with queries, and measuring efficiency. We offer working code examples and share find out how to add these capabilities to your purposes.

The search drawback

Conventional approaches contain keyword-based search, textual content embeddings-based pure language search, or hybrid search and may’t course of visible queries successfully, creating a spot between person intent and retrieval capabilities. Typical search architectures separate visible and textual processing, shedding context within the course of. Textual content queries execute in opposition to product descriptions utilizing key phrase matching or textual content embeddings. Picture queries, when supported, function by means of a number of pc imaginative and prescient pipelines with restricted integration to textual content material. This separation complicates system structure and weaken the person expertise. A number of embedding fashions require separate upkeep and optimization cycles, whereas crossmodal queries can’t be processed natively inside a single system. Visible and textual similarity scores function in several mathematical areas, making it tough to rank outcomes persistently throughout content material sorts. This separation requires complicated mapping that may’t at all times be achieved, so embedding methods are saved individually, creating knowledge silos within the course of and limiting performance. Complicated product content material additional complicates it, as a result of product pages mix photographs, descriptions, specs, and typically video demonstrations.

Crossmodal embeddings

Crossmodal embeddings map textual content, photographs, audio, and video right into a shared vector house the place semantically related content material clusters collectively. For instance, when processing a textual content question pink summer season costume and a picture of a pink costume, each inputs generate vectors shut collectively within the embedding house, reflecting their semantic similarity and unlocking crossmodal retrieval.

Through the use of crossmodal embeddings, you possibly can search throughout completely different content material sorts with out sustaining separate methods for every modality, fixing the issue of segmented multimodal methods the place organizations handle a number of embedding fashions which are practically not possible to combine successfully as a result of embeddings from completely different modalities are incompatible. A single mannequin structure helps guarantee that you’ve constant embedding era throughout all content material sorts whereas associated content material, reminiscent of product photographs, movies, and their descriptions, generates related embeddings due to joint coaching goals. Purposes can generate embeddings for all content material sorts utilizing similar API endpoints and vector dimensions, decreasing system complexity.

Use case: Ecommerce search

Think about a buyer who sees a shirt on TV and needs to seek out related objects for buy. They will {photograph} the merchandise with their cellphone or attempt to describe what they noticed in textual content and use this to seek for a product. Conventional search handles textual content queries that reference metadata moderately effectively however can’t execute when clients need to use photographs for search or describe visible attributes of an merchandise. This TV-to-cart buying expertise exhibits how visible and textual content search work collectively. The shopper uploads a photograph, and the system matches it in opposition to product catalogs with each photographs and descriptions. The crossmodal ecommerce workflow is proven within the following determine.

How Amazon Nova Multimodal Embeddings helps

Amazon Nova handles various kinds of search queries by means of the identical mannequin, which creates each new search capabilities and technical benefits. Whether or not you add photographs, enter descriptions utilizing textual content, or mix each, the method works the identical manner.

Crossmodal search capabilities

As beforehand acknowledged, Amazon Nova Multimodal Embeddings processes all supported modalities by means of a unified mannequin structure. Enter content material will be textual content, photographs, paperwork, video, or audio after which it generates embeddings in the identical vector house. This helps direct similarity calculations between completely different content material sorts with out further transformation layers. When clients add photographs, the system converts them into embeddings and searches in opposition to the product catalog utilizing cosine similarity. You get merchandise with related visible traits, no matter how they’re described in textual content. Textual content queries work the identical manner—clients can describe what they need and discover visually related merchandise, even when the product descriptions use completely different phrases. If the shopper uploads a picture with a textual content description, the system processes each inputs by means of the identical embedding mannequin for unified similarity scoring. The system additionally extracts product attributes from photographs mechanically by means of automated product tagging, supporting semantic tag era that goes past handbook categorization.

Technical benefits

The unified structure has a number of advantages over separate textual content and picture embeddings. The only-model design and shared semantic house unlocks new use circumstances that aren’t attainable by managing a number of embedding methods. Purposes generate embeddings for all content material sorts utilizing the identical API endpoints and vector dimensions. A single mannequin handles all 5 modalities, so associated content material, reminiscent of product photographs and their descriptions, produce related embeddings. You possibly can calculate distances between any mixture of textual content, photographs, audio, and video to measure how related they’re.

The Amazon Nova Multimodal Embeddings mannequin makes use of Matryoshka illustration studying, supporting a number of embedding dimensions: 3072, 1024, 384, and 256. Matryoshka embedding studying shops a very powerful data within the first dimensions and fewer crucial particulars in later dimensions. You possibly can truncate from the top (proven within the following determine) to scale back cupboard space whereas sustaining accuracy to your particular use case.

Structure

Three primary elements are required to construct this method: embedding era, vector storage, and similarity search. Product catalogs endure preprocessing to generate embeddings for all content material sorts. Question processing converts person inputs into embeddings utilizing the identical mannequin. Similarity search compares question embeddings in opposition to saved product embeddings, as proven within the following determine.

Vector storage methods should assist the chosen embedding dimensions and supply environment friendly similarity search operations. Choices embody purpose-built vector databases, conventional databases with vector extensions, or cloud-centered vector providers reminiscent of Amazon S3 Vectors, a characteristic of Amazon S3 that gives native assist for storing and querying vector embeddings straight inside S3.

Stipulations

To make use of the characteristic successfully, there are some key facets required for this implementation. An AWS account with Amazon Bedrock entry permissions for the Amazon Nova Multimodal Embeddings mannequin. Further providers required embody S3 Vectors. You possibly can comply with alongside within the pocket book accessible in our Amazon Nova samples repository.

Implementation

Within the following sections, we skip the preliminary knowledge obtain and extraction steps, however the end-to-end method is out there so that you can comply with alongside on this pocket book. The omitted steps embody downloading the Amazon Berkeley Objects (ABO) dataset archives, which embody product metadata, catalog photographs, and 3D fashions. These archives require extraction and preprocessing to parse roughly 398,212 photographs and 9,232 product listings from compressed JSON and tar recordsdata. After being extracted, the information requires metadata alignment between product descriptions and their corresponding visible property. We start this stroll by means of after these preliminary steps are full, specializing in the core workflow: establishing S3 Vectors, producing embeddings with Amazon Nova Multimodal Embeddings, storing vectors at scale, and implementing crossmodal retrieval. Let’s get began.

S3 Vector bucket and index creation:

Create the vector storage infrastructure for embeddings. S3 Vectors is a managed service for storing and querying high-dimensional vectors at scale. The bucket acts as a container to your vector knowledge, whereas the index defines the construction and search traits. We configure the index with cosine distance metric, which measures similarity based mostly on vector path quite than magnitude, making it ideally suited for normalized embeddings from fashions offered by providers reminiscent of Amazon Nova Multimodal Embeddings.

*# S3 Vectors configuration*
s3vector_bucket = "amzn-s3-demo-vector-bucket-crossmodal-search"
s3vector_index = "product"
embedding_dimension = 1024
s3vectors = boto3.shopper("s3vectors", region_name="us-east-1")
*# Create S3 vector bucket*
s3vectors.create_vector_bucket(vectorBucketName=s3vector_bucket)
*# Create index*
s3vectors.create_index(
    vectorBucketName=s3vector_bucket,
    indexName=s3vector_index,
    dataType="float32",
    dimension=embedding_dimension,
    distanceMetric="cosine"
)

Product catalog preprocessing:

Right here we generate embeddings. Each product photographs and textual descriptions require embedding era and storage with acceptable metadata for retrieval. The Amazon Nova Embeddings API processes every modality independently, changing textual content descriptions and product photographs into 1024-dimensional vectors. These vectors dwell in a unified semantic house, which implies a textual content embedding and a picture embedding of the identical product shall be geometrically shut to one another.

# Initialize Nova Embeddings Consumer

class NovaEmbeddings:
    def __init__(self, area='us-east-1'):
        self.bedrock = boto3.shopper('bedrock-runtime', region_name=area)
        self.model_id = "amazon.nova-2-multimodal-embeddings-v1:0"

    def embed_text(self, textual content: str, dimension: int = 1024, goal: str = "GENERIC_INDEX"):
        request_body = {
            "taskType": "SINGLE_EMBEDDING",
            "singleEmbeddingParams": {
                "embeddingDimension": dimension,
                "embeddingPurpose": goal, 
                "textual content": {
                    "truncationMode": "END",
                    "worth": textual content
                }
            }
        }
        response = self.bedrock.invoke_model(modelId=self.model_id, physique=json.dumps(request_body))
        outcome = json.masses(response['body'].learn())
        return outcome['embeddings'][0]['embedding']

    def embed_image(self, image_bytes: bytes, dimension: int = 1024, goal: str = "GENERIC_INDEX"):
        request_body = {
            "taskType": "SINGLE_EMBEDDING",
            "singleEmbeddingParams": {
                "embeddingDimension": dimension,
                "embeddingPurpose": goal,
                "picture": {
                    "format": "jpeg",
                    "supply": {"bytes": base64.b64encode(image_bytes).decode()}
                }
            }
        }
        response = self.bedrock.invoke_model(modelId=self.model_id, physique=json.dumps(request_body))
        outcome = json.masses(response['body'].learn())
        return outcome['embeddings'][0]['embedding']

embeddings = NovaEmbeddings()

We use the next code to generate the embeddings and add the information to our vector retailer.

# Generate embeddings and add to Amazon S3 Vectors

def get_product_text(product):
    title = product.get('item_name', [{}])[0].get('worth', '') if isinstance(product.get('item_name'), checklist) else str(product.get('item_name', ''))
    model = product.get('model', [{}])[0].get('worth', '') if product.get('model') else ''
    return f"{title}. {model}".strip()

vectors_to_upload = []
batch_size = 10
catalog = []  # Maintain for native reference

for product in tqdm(sampled_products, desc="Processing merchandise"):
    img_path = get_image_path(product)
    textual content = get_product_text(product)
    product_id = product.get('item_id', str(len(catalog)))
    
    with open(img_path, 'rb') as f:
        img_bytes = f.learn()
    
    # Generate embeddings
    text_emb = embeddings.embed_text(textual content)
    image_emb = embeddings.embed_image(img_bytes)
    
    # Retailer in catalog for native use
    catalog.append({
        'textual content': textual content,
        'image_path': str(img_path),
        'text_emb': text_emb,
        'image_emb': image_emb,
        'product_id': product_id
    })
    
    # Put together vectors for S3 add
    vectors_to_upload.prolong([
        {
            "key": f"text-{product_id}",
            "data": {"float32": text_emb},
            "metadata": {"product_id": product_id, "text": text, "image_path": str(img_path), "type": "text"}
        },
        {
            "key": f"image-{product_id}",
            "data": {"float32": image_emb},
            "metadata": {"product_id": product_id, "text": text, "image_path": str(img_path), "type": "image"}
        },
        {
            "key": f"combined-{product_id}",
            "data": {"float32": np.mean([text_emb, image_emb], axis=0).tolist()},
            "metadata": {"product_id": product_id, "textual content": textual content, "image_path": str(img_path), "kind": "mixed"}
        }
    ])
    
    # Batch add
    if len(vectors_to_upload) >= batch_size * 3:
        s3vectors.put_vectors(vectorBucketName=s3vector_bucket, indexName=s3vector_index, vectors=vectors_to_upload)
        vectors_to_upload = []

# Add remaining vectors
if vectors_to_upload:
    s3vectors.put_vectors(vectorBucketName=s3vector_bucket, indexName=s3vector_index, vectors=vectors_to_upload)

Question processing: 

This code handles buyer enter by means of the API. Textual content queries, picture uploads, or mixtures convert into the identical vector format used to your product catalog. For multimodal queries that mix textual content and picture, we apply imply fusion to create a single question vector that captures data from each modalities. The question processing logic handles three distinct enter sorts and prepares the suitable embedding illustration for similarity search in opposition to the S3 Vectors index.

def search_s3(question=None, query_image=None, query_type="textual content", search_mode="mixed", top_k=5):
    """
    Search utilizing S3 Vectors
    query_type: 'textual content', 'picture', or 'each'
    search_mode: 'textual content', 'picture', or 'mixed'
    """
    # Get question embedding
    if query_type == 'each':
        text_emb = embeddings.embed_text(question)
        with open(query_image, 'rb') as f:
            image_emb = embeddings.embed_image(f.learn())
        query_emb = np.imply([text_emb, image_emb], axis=0).tolist()
        query_image_path = query_image
    elif query_type == 'textual content':
        query_emb = embeddings.embed_text(question)
        query_image_path = None
    else:
        with open(query_image, 'rb') as f:
            query_emb = embeddings.embed_image(f.learn())
        query_image_path = query_image

Vector similarity search: 

Subsequent, we add crossmodal retrieval utilizing the S3 Vectors question API. The system finds the closest embedding match to the question, no matter whether or not it was textual content or a picture. We use cosine similarity as the gap metric, which measures the angle between vectors quite than their absolute distance. This method works effectively for normalized embeddings and is useful resource environment friendly, making it appropriate for big catalogs when paired with approximate nearest neighbor algorithms. S3 Vectors handles the indexing and search infrastructure, so you possibly can give attention to the appliance logic whereas the service manages scalability and efficiency optimization.

# Question S3 Vectors
    response = s3vectors.query_vectors(
        vectorBucketName=s3vector_bucket,
        indexName=s3vector_index,
        queryVector={"float32": query_emb},
        topK=top_k,
        returnDistance=True,
        returnMetadata=True,
        filter={"metadata.kind": {"equals": search_mode}}
    )

End result rating: 

The similarity scores computed by S3 Vectors present the rating mechanism. Cosine similarity between question and catalog embeddings determines outcome order, with increased scores indicating higher matches. In manufacturing methods, you’d usually acquire click-through knowledge and relevance judgments to validate that the rating correlates with precise person conduct. S3 Vectors returns distance values which we convert to similarity scores (1 – distance) for intuitive interpretation the place increased values point out nearer matches.

# Extract and rank outcomes by similarity
    ranked_results = []
    for end in response['vectors']:
        metadata = outcome['metadata']
        distance = outcome.get('distance', 0)
        similarity = 1 - distance  # Convert distance to similarity rating
        
        ranked_results.append({
            'product_id': metadata['product_id'],
            'textual content': metadata['text'],
            'image_path': metadata['image_path'],
            'similarity': similarity,
            'distance': distance
        })
    
    # Outcomes are sorted by S3 Vectors (greatest matches first)
    return ranked_results

Conclusion

Amazon Nova Multimodal Embeddings solves the core drawback of crossmodal search by utilizing one mannequin as a substitute of managing separate methods. You need to use Amazon Nova Multimodal Embeddings to construct search that works whether or not clients add photographs, enter descriptions as textual content, or mix each approaches.

The implementation is simple utilizing Amazon Bedrock APIs, and the Matryoshka embedding dimensions allow you to optimize to your particular accuracy and price necessities. In case you’re constructing ecommerce search, content material discovery, or an utility the place customers work together with a number of content material sorts, this unified method reduces each improvement complexity and operational overhead.

Matryoshka illustration studying maintains embedding high quality throughout completely different dimensions [2]. Efficiency degradation follows predictable patterns, permitting purposes to optimize for particular use circumstances.

Subsequent steps

Amazon Nova Multimodal Embeddings is out there in Amazon Bedrock. See Utilizing Nova Embeddings for API references, code examples, and integration patterns for widespread architectures.

The AWS samples repository comprises implementation examples for multimodal embeddings.

Stroll by means of this particular ecommerce instance pocket book right here


In regards to the authors

Tony Santiago is a Worldwide Associate Options Architect at AWS, devoted to scaling generative AI adoption throughout International Techniques Integrators. He focuses on resolution constructing, technical go-to-market alignment, and functionality improvement—enabling tens of 1000’s of builders at GSI companions to ship AI-powered options for his or her clients. Drawing on greater than 20 years of worldwide expertise expertise and a decade with AWS, Tony champions sensible applied sciences that drive measurable enterprise outcomes. Exterior of labor, he’s obsessed with studying new issues and spending time with household.

Adewale Akinfaderin is a Sr. Information Scientist–Generative AI, Amazon Bedrock, the place he contributes to leading edge improvements in foundational fashions and generative AI purposes at AWS. His experience is in reproducible and end-to-end AI/ML strategies, sensible implementations, and serving to world clients formulate and develop scalable options to interdisciplinary issues. He has two graduate levels in physics and a doctorate in engineering.

Sharon Li is a options architect at AWS, based mostly within the Boston, MA space. She works with enterprise clients, serving to them resolve tough issues and construct on AWS. Exterior of labor, she likes to spend time along with her household and discover native eating places.

Sundaresh R. Iyer is a Associate Options Architect at Amazon Internet Providers (AWS), the place he works intently with channel companions and system integrators to design, scale, and operationalize generative AI and agentic architectures. With over 15 years of expertise spanning product administration, developer platforms, and cloud infrastructure, he focuses on machine studying and AI-powered developer tooling. Sundaresh is obsessed with serving to companions transfer from experimentation to manufacturing by constructing safe, ruled, and scalable AI methods that ship measurable enterprise outcomes.

Related Articles

Latest Articles