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 v4
Cohere Embed v4è un modello di incorporamento multimodale che supporta input di testo e immagini. È in grado di elaborare contenuti interlacciati di testo e immagini, il che lo rende ideale per la comprensione di documenti, la ricerca visiva e le applicazioni di recupero multimodali. Il modello supporta vari tipi di incorporamento, tra cui i formati float, int8, uint8, binary e ubinary, con dimensioni di output configurabili da 256 a 1536.
L'ID del modello per è. Cohere Embed v4 cohere.embed-v4
Note di utilizzo aggiuntive
-
Lunghezza del contesto: sono supportati fino a ~128k token; per RAG, blocchi più piccoli spesso migliorano il recupero e i costi.
-
Dimensionamento delle immagini: le immagini con più di 2.458.624 pixel vengono sottocampionate fino a quelle dimensioni; le immagini con meno di 3.136 pixel vengono sovracampionate.
-
Input interlacciati: preferisci inputs.content [] per contenuti multimodali simili a pagine in modo che il contesto del testo (ad esempio, nome del file, entità) viaggi con l'immagine.
Richiesta e risposta
- Request
-
Tipo di contenuto: application/json
{
"input_type": "search_document | search_query | classification | clustering",
"texts": ["..."], // optional; text-only
"images": ["data:<mime>;base64,..."], // optional; image-only
"inputs": [
{ "content": [
{ "type": "text", "text": "..." },
{ "type": "image_url", "image_url": "data:<mime>;base64,..." }
]
}
], // optional; mixed (interleaved) text+image
"embedding_types": ["float" | "int8" | "uint8" | "binary" | "ubinary"],
"output_dimension": 256 | 512 | 1024 | 1536,
"max_tokens": 128000,
"truncate": "NONE | LEFT | RIGHT"
}
Parametri
-
input_type (obbligatorio) — Aggiunge token speciali per distinguere i casi d'uso. Consentito:search_document,,,. search_query classification clustering Per Search/rag, incorpora il tuo corpus con e interroga con. search_document search_query
-
texts (opzionale) — Matrice di stringhe da incorporare. Max 96 per chiamata. Se lo usitexts, non inviare images la stessa chiamata.
-
images (opzionale) — Matrice di immagini Data-URI base64 da incorporare. Max 96 per chiamata. Non texts inviate messaggi images insieme. (Usare inputs per interfogliare.)
-
input (opzionale; mixed/fused modalità): un elenco in cui ogni elemento ha un elenco di parti di contenuto. Ogni parte è { "type": "text", "text": ... } o. { "type": "image_url", "image_url": "data:<mime>;base64,..." } Invia qui contenuti interlacciati simili a pagine (ad esempio, immagine della pagina PDF più didascalia/metadati). Massimo 96 articoli.
-
embedding_types (opzionale) — Uno o più tra:float,,,int8,uint8. binary ubinary Se omesso, restituisce incorporamenti float.
-
output_dimension (opzionale) — Seleziona la lunghezza del vettore. Consentito:256,, 5121024, 1536 (impostazione predefinita 1536 se non specificata).
-
max_tokens (opzionale) — Budget di troncamento per oggetto di input. Il modello supporta fino a ~128.000 token; una parte più piccola per RAG, a seconda dei casi.
-
truncate (opzionale) — Come gestire gli input di lunghezza eccessiva: LEFT elimina i token dall'inizio; RIGHT elimina i token dalla fine; restituisce un errore se l'input supera il limite. NONE
Limiti e dimensionamento
-
Articoli per richiesta: fino a 96 immagini. Il tipo di file di immagine originale deve essere in formato png, jpeg, webp o gif e può avere una dimensione massima di 5 MB.
-
Dimensione massima della richiesta: ~20 MB di carico utile totale.
-
Numero massimo di token di input: massimo 128k token. I file di immagine vengono convertiti in token e il totale dei token deve essere inferiore a 128k.
-
Immagini: massimo 2.458.624 pixel prima del downsampling; le immagini inferiori a 3.136 pixel vengono sovracampionate. Fornisci immagini come data:<mime>;base64,....
-
Contabilità dei token (per inputs articolo): token provenienti da un input di immagine ≈ (pixel dell'immagine ÷ 784) x 4 token da un input di testo e immagine interlacciati = (pixel dell'immagine ÷ 784) x 4+ (token di testo)
Suggerimento: ad esempio PDFs, converti ogni pagina in un'immagine e inviala inputs insieme ai metadati della pagina (ad esempio, file_name, entità) in parti di testo adiacenti.
- Response
-
Tipo di contenuto: application/json
Se hai richiesto un singolo tipo di incorporamento (ad esempio solo): float
{
"id": "string",
"embeddings": [[ /* length = output_dimension */ ]],
"response_type": "embeddings_floats",
"texts": ["..."], // present if text was provided
"inputs": [ { "content": [ ... ] } ] // present if 'inputs' was used
}
Se hai richiesto più tipi di incorporamento (ad es.): ["float","int8"]
{
"id": "string",
"embeddings": {
"float": [[ ... ]],
"int8": [[ ... ]]
},
"response_type": "embeddings_by_type",
"texts": ["..."], // when text used
"inputs": [ { "content": [ ... ] } ] // when 'inputs' used
}
Richiesta e risposta per diversi tipi di input_type
A) Pagina interlacciata (immagine+didascalia) con vettori int8 compatti
Richiesta
{
"input_type": "search_document",
"inputs": [
{
"content": [
{ "type": "text", "text": "Quarterly ARR growth chart; outlier in Q3." },
{ "type": "image_url", "image_url": "data:image/png;base64,{{BASE64_PAGE_IMG}}" }
]
}
],
"embedding_types": ["int8"],
"output_dimension": 512,
"truncate": "RIGHT",
"max_tokens": 128000
}
Risposta (troncata)
{
"id": "836a33cc-61ec-4e65-afaf-c4628171a315",
"embeddings": { "int8": [[ 7, -3, ... ]] },
"response_type": "embeddings_by_type",
"inputs": [
{ "content": [
{ "type": "text", "text": "Quarterly ARR growth chart; outlier in Q3." },
{ "type": "image_url", "image_url": "data:image/png;base64,{{...}}" }
] }
]
}
B) Indicizzazione del corpus in solo testo (float predefinito, 1536-dim)
Richiesta
{
"input_type": "search_document",
"texts": [
"RAG system design patterns for insurance claims",
"Actuarial loss triangles and reserving primer"
]
}
Risposta (esempio)
{
"response_type": "embeddings_floats",
"embeddings": [
[0.0135, -0.0272, ...], // length 1536
[0.0047, 0.0189, ...]
]
}
Codici di esempio
- Text input
-
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Shows how to generate embeddings using the Cohere Embed v4 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-v4:0'
text1 = "hello world"
text2 = "this is a test"
input_type = "search_document"
embedding_types = ["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()
- Mixed modalities
-
# 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 v4 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_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"
text = "hello world"
model_id = 'cohere.embed-v4:0'
input_type = "search_document"
image_base64_uri = get_base64_image_uri(image_file_path, image_mime_type)
embedding_types = ["int8","float"]
try:
body = json.dumps({
"inputs": [
{
"content": [
{ "type": "text", "text": text },
{ "type": "image_url", "image_url": "data:image/png;base64,{{image_base64_uri}}" }
]
}
],
"input_type": input_type,
"embedding_types": embedding_types
})
response = generate_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("inputs")
for i, input in enumerate(response_body.get('inputs')):
print(f"\tinput {i}: {input}")
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 embeddings with Cohere model {model_id}.")
if __name__ == "__main__":
main()