Create image embeddings
This guide shows how you can create image embeddings.
The following table lists the available models for generating text embeddings and their key characteristics:
Model | Description | Dimensions | Max size | Similarity metric |
---|---|---|---|---|
Marengo-retrieval-2.6 | Use this model to create embeddings that you can use in various downstream tasks | 1024 | 5 MB | Cosine similarity |
The “Marengo-retrieval-2.6” video understanding engine generates embeddings for all modalities in the same latent space. This shared space enables any-to-any searches across different types of content.
To create an embedding for an image, you must specify at least the following parameters:
engine_name
: The name of the video understanding engine you want to use.image_url
orimage_file
: The publicly accessible URL of your image file or the path of your image file. You must provide at least one of these parameters. If you specify both in the same request, theimage_url
parameter takes precedence.
The response is an object containing the following fields:
engine_name
: The name of the engine the platform has used to create this embedding.image_embedding
: An object that contains the embedding and additional information.
For a description of each field in the request and response, see the Create embeddings for text, image, and audio page.
Prerequisites
- You’re familiar with the concepts that are described on the Platform overview page.
- You have an API key. To retrieve your API key, navigate to the API Key page and log in with your credentials. Then, select the Copy icon to the right of your API key to copy it to your clipboard.
- The images you wish to use must meet the following requirements:
- Format: JPEG and PNG.
- Dimension: Must be larger than 378x378 pixels.
- Size: Must not exceed 5MB.
Example
The example code below creates an image embedding. Ensure you replace the placeholders surrounded by <>
with your values.
from twelvelabs import TwelveLabs
from typing import List
from twelvelabs.models.embed import SegmentEmbedding
def print_segments(segments: List[SegmentEmbedding], max_elements: int = 5):
for segment in segments:
print(
f" embedding_scope={segment.embedding_scope} start_offset_sec={segment.start_offset_sec} end_offset_sec={segment.end_offset_sec}"
)
print(f" embeddings: {segment.embeddings_float[:max_elements]}")
client = TwelveLabs(api_key="<YOUR_API_KEY>")
res = client.embed.create(
engine_name="Marengo-retrieval-2.6",
image_file="<YOUR_IMAGE_FILE>"
)
print(f"Created image embedding: engine_name={res.engine_name}")
if res.image_embedding is not None and res.image_embedding.segments is not None:
print_segments(res.image_embedding.segments)
import { TwelveLabs, SegmentEmbedding } from 'twelvelabs-js';
const printSegments = (segments: SegmentEmbedding[], maxElements = 5) => {
segments.forEach((segment) => {
console.log(
` embedding_scope=${segment.embeddingScope} start_offset_sec=${segment.startOffsetSec} end_offset_sec=${segment.endOffsetSec}`
);
console.log(
" embeddings: ",
segment.embeddingsFloat.slice(0, maxElements)
);
});
};
const client = new TwelveLabs({ apiKey:'<YOUR_API_KEY>' });
const embedding = await client.embed.create({
engineName: 'Marengo-retrieval-2.6',
imageFile: '<YOUR_IMAGE_FILE>',
});
console.log(`Created image embedding: engineName=${res.engineName}`);
if (res.imageEmbedding?.segments) {
printSegments(res.imageEmbedding.segments);
}
Updated about 23 hours ago