{"record":{"id":"72782dbca0307c72","repo":"BerriAI/litellm","slug":"bedrock-batch-embedding-currently-supports-only-am","errorCode":null,"errorMessage":"Bedrock batch embedding currently supports only Amazon Titan Text Embeddings V2 (model id contains 'titan-embed-text-v2'). Got model={model!r}. Track other embedding models in https://github.com/BerriAI/litellm/issues.","messagePattern":"Bedrock batch embedding currently supports only Amazon Titan Text Embeddings V2 \\(model id contains 'titan-embed-text-v2'\\)\\. Got model=(.+?)\\. Track other embedding models in https://github\\.com/BerriAI/litellm/issues\\.","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"litellm/llms/bedrock/files/transformation.py","lineNumber":613,"sourceCode":"        Currently routes Amazon Titan Text Embeddings V2 only; other\n        embedding providers (Titan G1, Titan Multimodal, Cohere Embed,\n        Nova Multimodal Embeddings) raise NotImplementedError until they\n        get a dedicated branch. Splitting them keeps PR scope tight and\n        lets each model's request schema be exercised by its own tests.\n\n        AWS docs (Titan v2 InvokeModel body):\n        https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-titan-embed-text.html\n        \"\"\"\n        from litellm.llms.bedrock.embed.amazon_titan_v2_transformation import (\n            AmazonTitanV2Config,\n        )\n\n        if not self._is_titan_v2_embed_model(model):\n            # Refuse early instead of silently shaping the body for the wrong\n            # provider. The synchronous /v1/embeddings path supports more\n            # models, but each has a different InvokeModel schema; mapping\n            # them here without dedicated tests would risk corrupt batches.\n            raise NotImplementedError(\n                \"Bedrock batch embedding currently supports only Amazon \"\n                \"Titan Text Embeddings V2 (model id contains \"\n                f\"'titan-embed-text-v2'). Got model={model!r}. Track other \"\n                \"embedding models in https://github.com/BerriAI/litellm/issues.\"\n            )\n\n        input_text: Final = self._coerce_embedding_input_to_string(openai_request_body.get(\"input\"), model=model)\n\n        # Map OpenAI-style params (dimensions, encoding_format) onto the\n        # Titan v2 schema (dimensions, embeddingTypes) via the embed config\n        # so this stays in sync with the synchronous /v1/embeddings path.\n        non_default_params: Final = {k: v for k, v in openai_request_body.items() if k not in (\"model\", \"input\")}\n        titan_config: Final = AmazonTitanV2Config()\n        inference_params: Final = titan_config.map_openai_params(\n            non_default_params=non_default_params,\n            optional_params={},\n        )\n        return dict(titan_config._transform_request(input=input_text, inference_params=inference_params))","sourceCodeStart":595,"sourceCodeEnd":631,"githubUrl":"https://github.com/BerriAI/litellm/blob/6c2dcb801bf2b75c18f1bb24140e7cf57465cc4d/litellm/llms/bedrock/files/transformation.py#L595-L631","documentation":"Error \"Bedrock batch embedding currently supports only Amazon Titan Text Embeddings V2 (model id contains 'titan-embed-text-v2'). Got model={model!r}. Track other embedding models in https://github.com/BerriAI/litellm/issues.\" thrown in BerriAI/litellm.","triggerScenarios":"Thrown at litellm/llms/bedrock/files/transformation.py:613 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use Amazon Titan Text Embeddings V2 for Bedrock batch embedding."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"6c2dcb801bf2b75c18f1bb24140e7cf57465cc4d","analyzedAt":"2026-08-15T07:12:03.035Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}