Image embeddings
This guide shows how you can create image embeddings using the Marengo 3.5 video understanding model. For complete specifications and input requirements, see the Marengo 3.5 page.
The Marengo video understanding model generates embeddings for all modalities in the same latent space. This shared space enables any-to-any searches across different types of content.
For details on how your usage is measured and billed, see the Pricing page.
Key concepts
This section explains the key concepts and terminology used in this guide:
- Asset: Your uploaded content. Once created, you can reference the same asset across multiple operations without uploading the file again.
- Embedding: Vector representation of your content.
- Embedding task: An asynchronous operation for processing your content and creating embeddings. Contains a status and the resulting embeddings when complete.
Workflow
This guide shows how to create one embedding for an image file, so your queries can match its content. The example uploads the image as an asset. You can also pass a URL or base64-encoded data inline instead of creating an asset; both are shown as commented-out lines in the code examples.
The platform processes your files asynchronously, one file per request. This example embeds one image; repeat the request for each file in your collection.
For an image, the type of embedding, the output format, and the scope fields each accept a single value. You can request a per-dimension uncertainty vector.
To combine an image with text or with other media in a single embedding, see the Embed a query guide.
Use these embeddings for similarity search, content classification, clustering, recommendations, or Retrieval-Augmented Generation (RAG).
Retention policy
Embeddings created with the asynchronous method are stored for seven days. After this, you must recreate them to obtain the results again.
Prerequisites
-
To use the platform, you need an API key:
-
Depending on the programming language you are using, install the TwelveLabs SDK by entering one of the following commands:
-
Your image files must meet the following requirements:
-
Upload limits: Image files up to 32 MB.
-
Model capabilities: See the complete input requirements for Marengo 3.5.
-
Complete example
Copy and paste the code below, replacing the placeholders surrounded by <> with your values.
Code explanation
Python
Node.js
Import the SDK and initialize the client
Create a client instance to interact with the TwelveLabs Video Understanding Platform.
Function call: You call the constructor of the TwelveLabs class.
Parameters:
api_key: The API key to authenticate your requests to the platform.
Return value: An object of type TwelveLabs configured for making API calls.
Upload an image
Upload an image file to create an asset.
Function call: You call the assets.create function.
Parameters:
method: The upload method for your asset. Useurlfor a publicly accessible ordirectto upload a local file. This example usesurl.urlorfile: The publicly accessible URL of your image file or an opened file object in binary read mode. This example usesurl.
Return value: An object of type Asset. This object contains, among other information, a field named id representing the unique identifier of your asset.
Check the status of the asset
Asset processing is asynchronous. Poll the status of the asset until it is ready before you use it.
Function call: You call the assets.retrieve function.
Parameters:
asset_id: The unique identifier of your asset.
Return value: An object of type Asset containing, among other information, a field named status representing the current status of the asset. Check this field until its value is ready.
Create an embedding task
Create an embedding task to start processing your image.
Function call: You call the embed.v_2.tasks.create function.
Parameters:
input_type: The type of content. Set this parameter toimage.model_name: The embedding model to use. This example usesmarengo3.5.- (Optional)
embedding_uncertainty: Set this parameter totrueto receive adata[].embedding_uncertaintyfield in the response. This field is a per-dimension uncertainty vector with the same length as theembeddingarray. A higher value shows lower confidence in that dimension. image: An object containing the following properties:media_source: An object specifying the source of the image file. Specify one of the following:-
asset_id: The unique identifier of an asset from a previous upload. -
url: The publicly accessible URL of the image file. -
base_64_string: The base64-encoded image data.This example uses the identifier of the asset created in the previous step.
-
Return value: An object of type TasksCreateResponse containing, among other information, a field named id, which represents the unique identifier of your embedding task. You can use this identifier to track the status of your embedding task.
Monitor the status
The platform requires some time to process images. Poll the status of the embedding task until it is ready. This example uses a loop to check the status every 5 seconds.
Function call: You repeatedly call the embed.v_2.tasks.retrieve function until the task completes.
Parameters:
task_id: The unique identifier of your embedding task.
Return value: An object of type EmbeddingTaskResponse containing, among other information, the following fields:
status: The current status of the task. The possible values are:processing: The platform is creating the embeddings.ready: Processing is complete. Embeddings are available in thedatafield.failed: The task failed.
data: When the status isready, this field contains a list with one embedding object. The embedding object includes:embedding: The embedding vector (a list of floats).embedding_option: The type of embedding. For an image, this field isvisual.embedding_scope: The scope of the embedding. For an image, this field isasset.