Cohere Embed v3 - Amazon Bedrock

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Cohere Embed v3

Richiesta e risposta

Request

I Cohere Embed modelli hanno i seguenti parametri di inferenza.

{ "input_type": "search_document|search_query|classification|clustering|image", "texts":[string], "images":[image_base64_image_uri] "truncate": "NONE|START|END", "embedding_types": embedding_types }

I seguenti sono parametri obbligatori.

  • text — Una serie di stringhe da incorporare nel modello. Per prestazioni ottimali, consigliamo di ridurre la lunghezza di ogni testo a meno di 512 token. 1 token corrisponde a circa 4 caratteri.

    Di seguito sono riportati i limiti di testo per chiamata e di caratteri.

    Testi per chiamata

    Minimo Massimo

    0 testi

    96 testi

    Personaggi

    Minimo Massimo

    0 caratteri

    2048 caratteri

  • input_type — Aggiunge token speciali per differenziare ogni tipo l'uno dall'altro. Non conviene mischiare tipi diversi, tranne quelli per la ricerca e il recupero. In questo caso, incorpora il corpus con il tipo search_document e le query incorporate con il tipo search_query.

    • search_document: nei casi d'uso legati alla ricerca, utilizza search_document per codificare i documenti per gli incorporamenti archiviati in un database vettoriale.

    • search_query: utilizza search_query per interrogare il database vettoriale al fine di trovare i documenti pertinenti.

    • classification: utilizza classification quando gli incorporamenti sono usati come input per un classificatore di testo.

    • clustering: utilizza clustering per raggruppare gli incorporamenti.

    • images— Questa è una serie di immagini.

      • Una serie di dati URIs di immagine da incorporare nel modello. Il numero massimo di immagini per chiamata è 1 (ovvero, il modello supporta solo un input di immagini).

      • L'immagine deve essere un URI di dati valido. L'immagine deve essere in uno dei due image/jpeg image/png formati e avere una dimensione massima di 5 MB.

      • È necessario fornire solo una delle «immagini» o dei «testi».

I seguenti sono parametri opzionali:

  • truncate: specifica in che modo l'API gestisce gli input più lunghi della lunghezza massima del token. Utilizzare una delle seguenti operazioni:

    • NONE: (impostazione predefinita) restituisce un errore quando l'input supera la lunghezza massima del token di input.

    • START— Scarta l'inizio dell'input.

    • END: elimina la fine dell'input.

    Se specifichi START oEND, il modello elimina l'input finché quello rimanente non raggiunge esattamente la lunghezza massima del token di input per il modello.

  • embedding_types: specifica i tipi di incorporamenti che si desidera vengano restituiti. Facoltativo e predefinito èNone, che restituisce il tipo di risposta. Embed Floats Può essere uno o più dei seguenti tipi:

    • float— Utilizzate questo valore per restituire gli incorporamenti float predefiniti.

    • int8— Utilizzate questo valore per restituire incorporamenti int8 firmati.

    • uint8— Utilizzate questo valore per restituire incorporamenti int8 non firmati.

    • binary— Utilizzate questo valore per restituire incorporamenti binari firmati.

    • ubinary— Utilizzate questo valore per restituire incorporamenti binari non firmati.

Per ulteriori informazioni, consulta https://docs.cohere.com/reference/embed nella documentazione. Cohere

Response

Di seguito è riportata la risposta body da una chiamata InvokeModel.

{ "embeddings": [ [ array of 1024 floats. ] ], "id": string, "response_type" : "embeddings_floats, "texts": [string], "images": [image_description] }

La risposta body ha i seguenti campi possibili:

  • id: un identificatore per la risposta.

  • response_type — Il tipo di risposta. Questo valore è sempre embeddings_floats.

  • embeddings: un array di incorporamenti, ognuno dei quali è un array di numeri a virgola mobile con 1024 elementi. La lunghezza dell'array embeddings sarà uguale alla lunghezza dell'array texts originale.

  • texts: un array contenente le voci di testo per le quali sono stati restituiti incorporamenti.

  • images — Una serie di descrizioni per ogni immagine in ingresso.

    Un'image_descriptionimage_description ha il seguente formato:

    { "width": long, "height": long, "format": string, "bit_depth": long }

    Se l'immagine è stata utilizzata come input, il campo di “texts” risposta sarà un array vuoto. Viceversa non è vero (cioè, quando si usano dei testi, non “images” lo saranno nella risposta)

Per ulteriori informazioni, consulta embed. https://docs.cohere.com/reference/

esempio di codice

Questo esempio mostra come chiamare il CohereEmbed Englishmodello.

# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 """ Shows how to generate text embeddings using the Cohere Embed English model. """ import json import logging import boto3 from botocore.exceptions import ClientError logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) def generate_text_embeddings(model_id, body, region_name): """ Generate text embedding by using the Cohere Embed model. Args: model_id (str): The model ID to use. body (str) : The reqest body to use. region_name (str): The AWS region to invoke the model on Returns: dict: The response from the model. """ logger.info("Generating text embeddings with the Cohere Embed model %s", model_id) accept = '*/*' content_type = 'application/json' bedrock = boto3.client(service_name='bedrock-runtime', region_name=region_name) response = bedrock.invoke_model( body=body, modelId=model_id, accept=accept, contentType=content_type ) logger.info("Successfully generated embeddings with Cohere model %s", model_id) return response def main(): """ Entrypoint for Cohere Embed example. """ logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") region_name = 'us-east-1' model_id = 'cohere.embed-english-v3' text1 = "hello world" text2 = "this is a test" input_type = "search_document" embedding_types = ["int8", "float"] try: body = json.dumps({ "texts": [ text1, text2], "input_type": input_type, "embedding_types": embedding_types }) response = generate_text_embeddings(model_id=model_id, body=body, region_name=region_name) response_body = json.loads(response.get('body').read()) print(f"ID: {response_body.get('id')}") print(f"Response type: {response_body.get('response_type')}") print("Embeddings") embeddings = response_body.get('embeddings') for i, embedding_type in enumerate(embeddings): print(f"\t{embedding_type} Embeddings:") print(f"\t{embeddings[embedding_type]}") print("Texts") for i, text in enumerate(response_body.get('texts')): print(f"\tText {i}: {text}") 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 text embeddings with Cohere model {model_id}.") if __name__ == "__main__": main()

Immissione dell'immagine

# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 """ Shows how to generate image embeddings using the Cohere Embed English model. """ import json import logging import boto3 import base64 from botocore.exceptions import ClientError logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) def get_base64_image_uri(image_file_path: str, image_mime_type: str): with open(image_file_path, "rb") as image_file: image_bytes = image_file.read() base64_image = base64.b64encode(image_bytes).decode("utf-8") return f"data:{image_mime_type};base64,{base64_image}" def generate_image_embeddings(model_id, body, region_name): """ Generate image embedding by using the Cohere Embed model. Args: model_id (str): The model ID to use. body (str) : The reqest body to use. region_name (str): The AWS region to invoke the model on Returns: dict: The response from the model. """ logger.info("Generating image embeddings with the Cohere Embed model %s", model_id) accept = '*/*' content_type = 'application/json' bedrock = boto3.client(service_name='bedrock-runtime', region_name=region_name) response = bedrock.invoke_model( body=body, modelId=model_id, accept=accept, contentType=content_type ) logger.info("Successfully generated embeddings with Cohere model %s", model_id) return response def main(): """ Entrypoint for Cohere Embed example. """ logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") region_name = 'us-east-1' image_file_path = "image.jpg" image_mime_type = "image/jpg" model_id = 'cohere.embed-english-v3' input_type = "image" images = [get_base64_image_uri(image_file_path, image_mime_type)] embedding_types = ["int8", "float"] try: body = json.dumps({ "images": images, "input_type": input_type, "embedding_types": embedding_types }) response = generate_image_embeddings(model_id=model_id, body=body, region_name=region_name) response_body = json.loads(response.get('body').read()) print(f"ID: {response_body.get('id')}") print(f"Response type: {response_body.get('response_type')}") print("Embeddings") embeddings = response_body.get('embeddings') for i, embedding_type in enumerate(embeddings): print(f"\t{embedding_type} Embeddings:") print(f"\t{embeddings[embedding_type]}") print("Texts") for i, text in enumerate(response_body.get('texts')): print(f"\tText {i}: {text}") 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 text embeddings with Cohere model {model_id}.") if __name__ == "__main__": main()