Could not load the embeddings engine to get the dimensions. Please check the configuration.Error executing "InvokeModel" on "https://bedrock-runtime.us-east-1.amazonaws.com/model/amazon.titan-embed-text-v2%3A0/invoke";

Created on 14 April 2025, 4 months ago

Problem/Motivation

Could not load the embeddings engine to get the dimensions. Please check the configuration.Error executing "InvokeModel" on "https://bedrock-runtime.us-east-1.amazonaws.com/model/amazon.titan-embed..."; AWS HTTP error: Client error: `POST https://bedrock-runtime.us-east-1.amazonaws.com/model/amazon.titan-embed...` resulted in a `400 Bad Request` response: {"message":"Malformed input request: #: only 1 subschema matches out of 2, please reformat your input and try again."} ValidationException (client): Malformed input request: #: only 1 subschema matches out of 2, please reformat your input and try again. - {"message":"Malformed input request: #: only 1 subschema matches out of 2, please reformat your input and try again."}

Steps to reproduce

When I try to create a server using AWS Bedrock and Milvus I get the above error. I'm trying to use the Titan Text Embeddings V2 (amazon.titan-embed-text-v2.0) model.

Proposed resolution

Is this really happening because the formatInput method in TitanEmbeddings.php lists amazon.titan-embed-text-v1 in it?

If I change it to v2 the error goes away and I can index things into Milvus.

public static function formatInput($input = "", $image = NULL, $config = [], $model_id = '') {
    if ($input) {
      $payload['inputText'] = $input;
    }
    elseif ($image && strpos($model_id, 'amazon.titan-embed-image') === 0) {
      $payload['inputImage'] = $image->getAsBase64EncodedString('');
    }
    else {
      throw new AiBadRequestException('You need to give an input text or an image or you used as image in a none-image embeddings model.');
    }
    if (strpos($model_id, 'amazon.titan-embed-image') === 0) {
      $payload['embeddingConfig']['outputEmbeddingLength'] = (int) $config['outputEmbeddingLength'];
    }
    elseif (strpos($model_id, 'amazon.titan-embed-text-v2') !== 0) {
      $payload['dimensions'] = (int) $config['dimensions'];
    }
    return $payload;
  }
πŸ› Bug report
Status

Active

Version

1.1

Component

Code

Created by

πŸ‡ΊπŸ‡ΈUnited States keiserjb

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Merge Requests

Comments & Activities

  • Issue created by @keiserjb
  • Merge request !6Edit TitanEmbeddings.php, change to v2 β†’ (Open) created by keiserjb
  • Pipeline finished with Success
    4 months ago
    Total: 142s
    #473963
  • πŸ‡³πŸ‡ΏNew Zealand danielveza Brisbane, AU

    I've just run into this as well, it would be good to get this committed if we no longer need to support v1. Otherwise we might need to alter the if statements to check both v1 and v2.

    I wonder if we can turn these into plugins or do something a little nicer than elseifs checking strings. But I think thats something to think about later.

Production build 0.71.5 2024