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, 5 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
    5 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.

  • πŸ‡¦πŸ‡ΊAustralia kim.pepper πŸ„β€β™‚οΈπŸ‡¦πŸ‡ΊSydney, Australia

    I think this is critical as the Titan V1 embedding model doesn't work at all.

  • πŸ‡¦πŸ‡ΊAustralia kim.pepper πŸ„β€β™‚οΈπŸ‡¦πŸ‡ΊSydney, Australia
  • First commit to issue fork.
  • πŸ‡©πŸ‡ͺGermany marcus_johansson

    Its a general problem with AWS that each model works differently, so we have to map the configuration into their own class. There is no record of them deprecating the old model, but I could replicate the issue that its not listed as a on-demand model anymore at least.

    I did a small fix to the code from @danielveza, thank you. As soon as that is approved I will push a new version of both 1.0.x and 1.1.x versions.

    As a note - in general we are looking for maintainers for any provider module, so if you are using it and want to be a maintainer let us know.

  • πŸ‡¦πŸ‡ΊAustralia kim.pepper πŸ„β€β™‚οΈπŸ‡¦πŸ‡ΊSydney, Australia

    Thanks @marcus_johansson. Can't speak for @danielveza but I will put my hand up for maintainership.

  • πŸ‡¦πŸ‡ΊAustralia kim.pepper πŸ„β€β™‚οΈπŸ‡¦πŸ‡ΊSydney, Australia

    I like @danielveza 's idea of

    I wonder if we can turn these into plugins or do something a little nicer than elseifs checking strings.

Production build 0.71.5 2024