--- title: "TwelveLabs" id: integrations-twelvelabs description: "TwelveLabs integration for Haystack" slug: "/integrations-twelvelabs" --- ## haystack_integrations.components.converters.twelvelabs.video_converter ### TwelveLabsVideoConverter Converts videos to Haystack Documents using TwelveLabs Pegasus. Pegasus is a video-language model that analyzes a video on the fly (its visuals **and** its own audio ASR) and returns text. Each source video becomes one Document whose content is Pegasus's analysis (e.g. a description plus a transcript) — no frame extraction or separate transcription step. Sources may be publicly accessible direct video URLs or local file paths (uploaded to TwelveLabs, up to 200 MB). ### Usage example ```python from haystack_integrations.components.converters.twelvelabs import TwelveLabsVideoConverter # Set the TWELVELABS_API_KEY environment variable converter = TwelveLabsVideoConverter() result = converter.run(sources=["https://example.com/clip.mp4"]) print(result["documents"][0].content) ``` #### __init__ ```python __init__( *, api_key: Secret = Secret.from_env_var("TWELVELABS_API_KEY"), model: str = DEFAULT_MODEL, prompt: str = DEFAULT_PROMPT, temperature: float = 0.2, max_tokens: int = 16384 ) -> None ``` Create a TwelveLabsVideoConverter. **Parameters:** - **api_key** (Secret) – The TwelveLabs API key. Read from the `TWELVELABS_API_KEY` environment variable by default. - **model** (str) – The Pegasus model name (`pegasus1.5` or `pegasus1.2`). - **prompt** (str) – The analysis prompt sent to Pegasus for each video. - **temperature** (float) – Sampling temperature (0-1). - **max_tokens** (int) – Maximum output tokens per analysis. #### to_dict ```python to_dict() -> dict[str, Any] ``` Serializes the component to a dictionary. **Returns:** - dict\[str, Any\] – Dictionary with serialized data. #### from_dict ```python from_dict(data: dict[str, Any]) -> TwelveLabsVideoConverter ``` Deserializes the component from a dictionary. **Parameters:** - **data** (dict\[str, Any\]) – Dictionary to deserialize from. **Returns:** - TwelveLabsVideoConverter – Deserialized component. #### run ```python run( sources: list[str], meta: dict[str, Any] | list[dict[str, Any]] | None = None, ) -> dict[str, list[Document]] ``` Convert videos to Documents with Pegasus. **Parameters:** - **sources** (list\[str\]) – Video sources — publicly accessible direct video URLs or local file paths. - **meta** (dict\[str, Any\] | list\[dict\[str, Any\]\] | None) – Optional metadata to attach to the produced Documents. Either a single dict applied to all, or a list aligned with `sources`. **Returns:** - dict\[str, list\[Document\]\] – A dictionary with key `documents`: the produced Documents. ## haystack_integrations.components.embedders.twelvelabs.document_embedder ### TwelveLabsDocumentEmbedder Embeds the text content of Documents using TwelveLabs Marengo. Computes a Marengo embedding for each Document's `content` and stores it on `Document.embedding`. Because Marengo embeds text, images, audio, and video into one shared space, these embeddings support cross-modal retrieval. ### Usage example ```python from haystack import Document from haystack_integrations.components.embedders.twelvelabs import TwelveLabsDocumentEmbedder # Set the TWELVELABS_API_KEY environment variable doc_embedder = TwelveLabsDocumentEmbedder() docs = [Document(content="a cat playing piano")] docs = doc_embedder.run(documents=docs)["documents"] print(docs[0].embedding) ``` #### __init__ ```python __init__( *, api_key: Secret = Secret.from_env_var("TWELVELABS_API_KEY"), model: str = DEFAULT_MODEL, prefix: str = "", suffix: str = "", batch_size: int = 32, progress_bar: bool = True, meta_fields_to_embed: list[str] | None = None, embedding_separator: str = "\n" ) -> None ``` Create a TwelveLabsDocumentEmbedder. **Parameters:** - **api_key** (Secret) – The TwelveLabs API key. Read from the `TWELVELABS_API_KEY` environment variable by default. - **model** (str) – The Marengo model name. - **prefix** (str) – A string to add to the beginning of each text before embedding. - **suffix** (str) – A string to add to the end of each text before embedding. - **batch_size** (int) – Number of Documents per batch; within a batch `run_async` embeds concurrently. - **progress_bar** (bool) – Whether to show a progress bar while embedding. Can be helpful to disable in production deployments to keep the logs clean. - **meta_fields_to_embed** (list\[str\] | None) – List of meta fields that should be embedded along with the Document text. - **embedding_separator** (str) – Separator used to concatenate the meta fields to the Document text. #### to_dict ```python to_dict() -> dict[str, Any] ``` Serializes the component to a dictionary. **Returns:** - dict\[str, Any\] – Dictionary with serialized data. #### from_dict ```python from_dict(data: dict[str, Any]) -> TwelveLabsDocumentEmbedder ``` Deserializes the component from a dictionary. **Parameters:** - **data** (dict\[str, Any\]) – Dictionary to deserialize from. **Returns:** - TwelveLabsDocumentEmbedder – Deserialized component. #### run ```python run(documents: list[Document]) -> dict[str, Any] ``` Embed a list of Documents. **Parameters:** - **documents** (list\[Document\]) – The Documents to embed (their `content` is embedded). **Returns:** - dict\[str, Any\] – A dictionary with keys: - `documents`: New Documents that are copies of the inputs with `embedding` populated. - `meta`: Metadata about the request (the model used). **Raises:** - TypeError – If the input is not a list of Documents. #### run_async ```python run_async(documents: list[Document]) -> dict[str, Any] ``` Asynchronously embed a list of Documents. Documents within each batch of `batch_size` are embedded concurrently. **Parameters:** - **documents** (list\[Document\]) – The Documents to embed. **Returns:** - dict\[str, Any\] – A dictionary with keys `documents` (copies with `embedding` populated) and `meta`. **Raises:** - TypeError – If the input is not a list of Documents. ## haystack_integrations.components.embedders.twelvelabs.text_embedder ### TwelveLabsTextEmbedder Embeds strings using TwelveLabs Marengo. Marengo embeds text, images, audio, and video into a single shared vector space, so embeddings from this component are directly comparable (cosine similarity) with image/video embeddings from the same model — enabling cross-modal retrieval. Use it to embed a query before searching a document store populated with Marengo embeddings. ### Usage example ```python from haystack_integrations.components.embedders.twelvelabs import TwelveLabsTextEmbedder # Set the TWELVELABS_API_KEY environment variable text_embedder = TwelveLabsTextEmbedder() result = text_embedder.run(text="a cat playing piano") print(result["embedding"]) ``` #### __init__ ```python __init__( *, api_key: Secret = Secret.from_env_var("TWELVELABS_API_KEY"), model: str = DEFAULT_MODEL, prefix: str = "", suffix: str = "" ) -> None ``` Create a TwelveLabsTextEmbedder. **Parameters:** - **api_key** (Secret) – The TwelveLabs API key. Read from the `TWELVELABS_API_KEY` environment variable by default. - **model** (str) – The Marengo model name. - **prefix** (str) – A string to add to the beginning of the text before embedding. - **suffix** (str) – A string to add to the end of the text before embedding. #### to_dict ```python to_dict() -> dict[str, Any] ``` Serializes the component to a dictionary. **Returns:** - dict\[str, Any\] – Dictionary with serialized data. #### from_dict ```python from_dict(data: dict[str, Any]) -> TwelveLabsTextEmbedder ``` Deserializes the component from a dictionary. **Parameters:** - **data** (dict\[str, Any\]) – Dictionary to deserialize from. **Returns:** - TwelveLabsTextEmbedder – Deserialized component. #### run ```python run(text: str) -> dict[str, Any] ``` Embed a single string. **Parameters:** - **text** (str) – The string to embed. **Returns:** - dict\[str, Any\] – A dictionary with keys: - `embedding`: The embedding vector for the input string. - `meta`: Metadata about the request (the model used). **Raises:** - TypeError – If the input is not a string. #### run_async ```python run_async(text: str) -> dict[str, Any] ``` Asynchronously embed a single string. **Parameters:** - **text** (str) – The string to embed. **Returns:** - dict\[str, Any\] – A dictionary with keys `embedding` and `meta`. **Raises:** - TypeError – If the input is not a string.