Titan Embeddings G1 - Text doesn't support the use of inference parameters. The following sections detail the request and response formats and provides a code example.
Request and response
The request body is passed in the body
field of an InvokeModel request.
The inputText parameter is required. The normalize and dimensions parameters are optional.
-
inputText – Enter text to convert to an embedding.
-
normalize – (optional) Flag indicating whether or not to normalize the output embedding. Defaults to true.
-
dimensions – (optional) The number of dimensions the output embedding should have. The following values are accepted: 1024 (default), 512, 256.
-
embeddingTypes – (optional) Accepts a list containing "float", "binary", or both. Defaults to
float
.
{
"inputText": string,
"dimensions": int,
"normalize": boolean,
"embeddingTypes": list
}
Example code
The following examples show how to call the Amazon Titan Embeddings models to generate embedding. Select the tab that corresponds to the model you're using:
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Shows how to generate an embedding with the Amazon Titan Embeddings G1 - Text model (on demand).
"""
import json
import logging
import boto3
from botocore.exceptions import ClientError
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)
def generate_embedding(model_id, body):
"""
Generate an embedding with the vector representation of a text input using Amazon Titan Embeddings G1 - Text on demand.
Args:
model_id (str): The model ID to use.
body (str) : The request body to use.
Returns:
response (JSON): The embedding created by the model and the number of input tokens.
"""
logger.info("Generating an embedding with Amazon Titan Embeddings G1 - Text model %s", model_id)
bedrock = boto3.client(service_name='bedrock-runtime')
accept = "application/json"
content_type = "application/json"
response = bedrock.invoke_model(
body=body, modelId=model_id, accept=accept, contentType=content_type
)
response_body = json.loads(response.get('body').read())
return response_body
def main():
"""
Entrypoint for Amazon Titan Embeddings G1 - Text example.
"""
logging.basicConfig(level=logging.INFO,
format="%(levelname)s: %(message)s")
model_id = "amazon.titan-embed-text-v1"
input_text = "What are the different services that you offer?"
# Create request body.
body = json.dumps({
"inputText": input_text,
})
try:
response = generate_embedding(model_id, body)
print(f"Generated an embedding: {response['embedding']}")
print(f"Input Token count: {response['inputTextTokenCount']}")
except ClientError as err:
message = err.response["Error"]["Message"]
logger.error("A client error occurred: %s", message)
print("A client error occured: " +
format(message))
else:
print(f"Finished generating an embedding with Amazon Titan Embeddings G1 - Text model {model_id}.")
if __name__ == "__main__":
main()