Condividi tramite


Come usare i modelli Cohere Embed V3 con lo studio di Azure Machine Learning

In questo articolo vengono fornite informazioni sui modelli Cohere Embed V3 e su come usarli con studio di Azure Machine Learning. La famiglia Cohere è costituita da vari modelli ottimizzati per diversi casi d'uso, tra cui completamenti di chat, incorporamenti e rerank. I modelli Cohere sono ottimizzati per un'ampia gamma di casi d'uso, tra cui motivazione e risposta alla domanda.

Importante

Questa funzionalità è attualmente in anteprima pubblica. Questa versione di anteprima viene fornita senza contratto di servizio, pertanto se ne sconsiglia l’uso per i carichi di lavoro in ambienti di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate.

Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.

Modelli di incorporamento Cohere

La famiglia Cohere di modelli per incorporamenti include i modelli seguenti:

Cohere Embed English è un modello di rappresentazione bidirezionale (testo e immagine) usato per la ricerca semantica, la generazione aumentata di recupero (RAG), la classificazione e il clustering. Embed English offre prestazioni migliori sul benchmark MTEB HuggingFace (massive text embed) e su diversi casi d'uso per vari settori, ad esempio Finance, Legal e General-Purpose Corpora. Embed English ha anche gli attributi seguenti:

  • Embed English ha 1.024 dimensioni
  • La finestra di contesto del modello è di 512 token
  • Incorporare l'inglese accetta immagini come URL dati con codifica Base64

Gli incorporamenti di immagini usano un numero fisso di token per immagine, ovvero 1.000 token per immagine, che si traduce in un prezzo di $ 0,0001 per immagine incorporata. Le dimensioni o la risoluzione dell'immagine non influiscono sul numero di token utilizzati, a condizione che l'immagine si trova all'interno delle dimensioni, delle dimensioni del file e dei formati accettati.

Prerequisiti

Per usare i modelli Cohere Embed V3 con studio di Azure Machine Learning, sono necessari i prerequisiti seguenti:

Una distribuzione modello

Distribuzione in API serverless

È possibile distribuire i modelli Cohere Embed V3 in endpoint API serverless con fatturazione con pagamento in base al consumo. Questo tipo di distribuzione consente di usare i modelli come le API senza ospitarli nella sottoscrizione, mantenendo al contempo la sicurezza e la conformità aziendali necessarie alle organizzazioni.

La distribuzione in un endpoint API serverless non richiede la quota dalla sottoscrizione. Se il modello non è già stato distribuito, usare studio di Azure Machine Learning, Azure Machine Learning SDK per Python, l'interfaccia della riga di comando di Azure o i modelli ARM per distribuire il modello come API serverless.

Pacchetto di inferenza installato

È possibile usare le stime di questo modello usando il pacchetto azure-ai-inference con Python. Per installare questo pacchetto, sono necessari i prerequisiti seguenti:

  • Python 3.8 o versione successiva installata, incluso pip.
  • URL dell'endpoint. Per costruire la libreria client, è necessario passare l'URL dell'endpoint. L'URL dell'endpoint ha il formato https://your-host-name.your-azure-region.inference.ai.azure.com, in cui your-host-name è il nome host della distribuzione del modello univoco e your-azure-region è l'area di Azure in cui viene distribuito il modello ( ad esempio eastus2).
  • A seconda della distribuzione del modello e delle preferenze di autenticazione, è necessario disporre di una chiave per l'autenticazione nel servizio o delle credenziali di Microsoft Entra ID. La chiave è una stringa di 32 caratteri.

Dopo aver ottenuto questi prerequisiti, installare il pacchetto di inferenza di Intelligenza artificiale di Azure con il comando seguente:

pip install azure-ai-inference

Vedere altre informazioni sul pacchetto di inferenza di Azure per intelligenza artificiale e informazioni di riferimento.

Suggerimento

Cohere supporta inoltre l'utilizzo di un'API personalizzata per l'uso con funzionalità specifiche del modello. Per usare l'API specifica del provider di modelli, vedere la documentazione di Cohere.

Usare gli incorporamenti

In questa sezione viene usata l'API di inferenza del modello di Azure per intelligenza artificiale con un modello di incorporamento.

Creare un client per utilizzare il modello

Creare prima di tutto il client per utilizzare il modello. Il codice seguente usa un URL dell'endpoint e una chiave archiviati nelle variabili di ambiente.

import os
from azure.ai.inference import EmbeddingsClient
from azure.core.credentials import AzureKeyCredential

model = EmbeddingsClient(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=AzureKeyCredential(os.environ["AZURE_INFERENCE_CREDENTIAL"]),
)

Ottenere le funzionalità del modello

La route /info restituisce informazioni sul modello distribuito nell'endpoint. Restituire le informazioni del modello chiamando il metodo seguente:

model_info = model.get_model_info()

La risposta è la seguente:

print("Model name:", model_info.model_name)
print("Model type:", model_info.model_type)
print("Model provider name:", model_info.model_provider)
Model name: Cohere-embed-v3-english
Model type": embeddings
Model provider name": Cohere

Creare incorporamenti

Creare una richiesta di incorporamento per visualizzare l'output del modello.

response = model.embed(
    input=["The ultimate answer to the question of life"],
)

Suggerimento

La finestra di contesto per i modelli Cohere Embed V3 è 512. Assicurarsi di non superare questo limite durante la creazione di incorporamenti.

La risposta è la seguente, in cui è possibile visualizzare le statistiche di utilizzo del modello:

import numpy as np

for embed in response.data:
    print("Embeding of size:", np.asarray(embed.embedding).shape)

print("Model:", response.model)
print("Usage:", response.usage)

Può essere utile calcolare gli incorporamenti in batch di input. Il parametro inputs può essere un elenco di stringhe, in cui ogni stringa è un input diverso. A sua volta, la risposta è un elenco di incorporamenti, in cui ogni incorporamento corrisponde all'input nella stessa posizione.

response = model.embed(
    input=[
        "The ultimate answer to the question of life", 
        "The largest planet in our solar system is Jupiter",
    ],
)

La risposta è la seguente, in cui è possibile visualizzare le statistiche di utilizzo del modello:

import numpy as np

for embed in response.data:
    print("Embeding of size:", np.asarray(embed.embedding).shape)

print("Model:", response.model)
print("Usage:", response.usage)

Suggerimento

I modelli Cohere Embed V3 possono accettare batch di 1024 alla volta. Quando si creano batch, assicurarsi di non superare questo limite.

Creare tipi diversi di incorporamenti

I modelli Cohere Embed V3 possono generare più incorporamenti per lo stesso input a seconda del modo in cui si prevede di usarli. Questa funzionalità consente di recuperare incorporamenti più accurati per i modelli RAG.

Nell'esempio seguente viene illustrato come creare incorporamenti usati per creare un incorporamento per un documento che verrà archiviato in un database vettoriale:

from azure.ai.inference.models import EmbeddingInputType

response = model.embed(
    input=["The answer to the ultimate question of life, the universe, and everything is 42"],
    input_type=EmbeddingInputType.DOCUMENT,
)

Quando si lavora su una query per recuperare un documento di questo tipo, è possibile usare il frammento di codice seguente per creare gli incorporamenti per la query e ottimizzare le prestazioni di recupero.

from azure.ai.inference.models import EmbeddingInputType

response = model.embed(
    input=["What's the ultimate meaning of life?"],
    input_type=EmbeddingInputType.QUERY,
)

I modelli Cohere Embed V3 possono ottimizzare gli incorporamenti in base al relativo caso d'uso.

Modelli di incorporamento Cohere

La famiglia Cohere di modelli per incorporamenti include i modelli seguenti:

Cohere Embed English è un modello di rappresentazione bidirezionale (testo e immagine) usato per la ricerca semantica, la generazione aumentata di recupero (RAG), la classificazione e il clustering. Embed English offre prestazioni migliori sul benchmark MTEB HuggingFace (massive text embed) e su diversi casi d'uso per vari settori, ad esempio Finance, Legal e General-Purpose Corpora. Embed English ha anche gli attributi seguenti:

  • Embed English ha 1.024 dimensioni
  • La finestra di contesto del modello è di 512 token
  • Incorporare l'inglese accetta immagini come URL dati con codifica Base64

Gli incorporamenti di immagini usano un numero fisso di token per immagine, ovvero 1.000 token per immagine, che si traduce in un prezzo di $ 0,0001 per immagine incorporata. Le dimensioni o la risoluzione dell'immagine non influiscono sul numero di token utilizzati, a condizione che l'immagine si trova all'interno delle dimensioni, delle dimensioni del file e dei formati accettati.

Prerequisiti

Per usare i modelli Cohere Embed V3 con studio di Azure Machine Learning, sono necessari i prerequisiti seguenti:

Una distribuzione modello

Distribuzione in API serverless

È possibile distribuire i modelli Cohere Embed V3 in endpoint API serverless con fatturazione con pagamento in base al consumo. Questo tipo di distribuzione consente di usare i modelli come le API senza ospitarli nella sottoscrizione, mantenendo al contempo la sicurezza e la conformità aziendali necessarie alle organizzazioni.

La distribuzione in un endpoint API serverless non richiede la quota dalla sottoscrizione. Se il modello non è già stato distribuito, usare studio di Azure Machine Learning, Azure Machine Learning SDK per Python, l'interfaccia della riga di comando di Azure o i modelli ARM per distribuire il modello come API serverless.

Pacchetto di inferenza installato

È possibile usare le stime di questo modello usando il pacchetto @azure-rest/ai-inference di npm. Per installare questo pacchetto, sono necessari i prerequisiti seguenti:

  • Versioni LTS di Node.js con npm.
  • URL dell'endpoint. Per costruire la libreria client, è necessario passare l'URL dell'endpoint. L'URL dell'endpoint ha il formato https://your-host-name.your-azure-region.inference.ai.azure.com, in cui your-host-name è il nome host della distribuzione del modello univoco e your-azure-region è l'area di Azure in cui viene distribuito il modello ( ad esempio eastus2).
  • A seconda della distribuzione del modello e delle preferenze di autenticazione, è necessario disporre di una chiave per l'autenticazione nel servizio o delle credenziali di Microsoft Entra ID. La chiave è una stringa di 32 caratteri.

Dopo aver soddisfatto questi prerequisiti, installare la libreria di inferenza di Azure per JavaScript con il comando seguente:

npm install @azure-rest/ai-inference

Suggerimento

Cohere supporta inoltre l'utilizzo di un'API personalizzata per l'uso con funzionalità specifiche del modello. Per usare l'API specifica del provider di modelli, vedere la documentazione di Cohere.

Usare gli incorporamenti

In questa sezione viene usata l'API di inferenza del modello di Azure per intelligenza artificiale con un modello di incorporamento.

Creare un client per utilizzare il modello

Creare prima di tutto il client per utilizzare il modello. Il codice seguente usa un URL dell'endpoint e una chiave archiviati nelle variabili di ambiente.

import ModelClient from "@azure-rest/ai-inference";
import { isUnexpected } from "@azure-rest/ai-inference";
import { AzureKeyCredential } from "@azure/core-auth";

const client = new ModelClient(
    process.env.AZURE_INFERENCE_ENDPOINT, 
    new AzureKeyCredential(process.env.AZURE_INFERENCE_CREDENTIAL)
);

Ottenere le funzionalità del modello

La route /info restituisce informazioni sul modello distribuito nell'endpoint. Restituire le informazioni del modello chiamando il metodo seguente:

await client.path("/info").get()

La risposta è la seguente:

console.log("Model name: ", model_info.body.model_name);
console.log("Model type: ", model_info.body.model_type);
console.log("Model provider name: ", model_info.body.model_provider_name);
Model name: Cohere-embed-v3-english
Model type": embeddings
Model provider name": Cohere

Creare incorporamenti

Creare una richiesta di incorporamento per visualizzare l'output del modello.

var response = await client.path("/embeddings").post({
    body: {
        input: ["The ultimate answer to the question of life"],
    }
});

Suggerimento

La finestra di contesto per i modelli Cohere Embed V3 è 512. Assicurarsi di non superare questo limite durante la creazione di incorporamenti.

La risposta è la seguente, in cui è possibile visualizzare le statistiche di utilizzo del modello:

if (isUnexpected(response)) {
    throw response.body.error;
}

console.log(response.embedding);
console.log(response.body.model);
console.log(response.body.usage);

Può essere utile calcolare gli incorporamenti in batch di input. Il parametro inputs può essere un elenco di stringhe, in cui ogni stringa è un input diverso. A sua volta, la risposta è un elenco di incorporamenti, in cui ogni incorporamento corrisponde all'input nella stessa posizione.

var response = await client.path("/embeddings").post({
    body: {
        input: [
            "The ultimate answer to the question of life", 
            "The largest planet in our solar system is Jupiter",
        ],
    }
});

La risposta è la seguente, in cui è possibile visualizzare le statistiche di utilizzo del modello:

if (isUnexpected(response)) {
    throw response.body.error;
}

console.log(response.embedding);
console.log(response.body.model);
console.log(response.body.usage);

Suggerimento

I modelli Cohere Embed V3 possono accettare batch di 1024 alla volta. Quando si creano batch, assicurarsi di non superare questo limite.

Creare tipi diversi di incorporamenti

I modelli Cohere Embed V3 possono generare più incorporamenti per lo stesso input a seconda del modo in cui si prevede di usarli. Questa funzionalità consente di recuperare incorporamenti più accurati per i modelli RAG.

Nell'esempio seguente viene illustrato come creare incorporamenti usati per creare un incorporamento per un documento che verrà archiviato in un database vettoriale:

var response = await client.path("/embeddings").post({
    body: {
        input: ["The answer to the ultimate question of life, the universe, and everything is 42"],
        input_type: "document",
    }
});

Quando si lavora su una query per recuperare un documento di questo tipo, è possibile usare il frammento di codice seguente per creare gli incorporamenti per la query e ottimizzare le prestazioni di recupero.

var response = await client.path("/embeddings").post({
    body: {
        input: ["What's the ultimate meaning of life?"],
        input_type: "query",
    }
});

I modelli Cohere Embed V3 possono ottimizzare gli incorporamenti in base al relativo caso d'uso.

Modelli di incorporamento Cohere

La famiglia Cohere di modelli per incorporamenti include i modelli seguenti:

Cohere Embed English è un modello di rappresentazione bidirezionale (testo e immagine) usato per la ricerca semantica, la generazione aumentata di recupero (RAG), la classificazione e il clustering. Embed English offre prestazioni migliori sul benchmark MTEB HuggingFace (massive text embed) e su diversi casi d'uso per vari settori, ad esempio Finance, Legal e General-Purpose Corpora. Embed English ha anche gli attributi seguenti:

  • Embed English ha 1.024 dimensioni
  • La finestra di contesto del modello è di 512 token
  • Incorporare l'inglese accetta immagini come URL dati con codifica Base64

Gli incorporamenti di immagini usano un numero fisso di token per immagine, ovvero 1.000 token per immagine, che si traduce in un prezzo di $ 0,0001 per immagine incorporata. Le dimensioni o la risoluzione dell'immagine non influiscono sul numero di token utilizzati, a condizione che l'immagine si trova all'interno delle dimensioni, delle dimensioni del file e dei formati accettati.

Prerequisiti

Per usare i modelli Cohere Embed V3 con Azure Machine Learning, sono necessari i prerequisiti seguenti:

Una distribuzione modello

Distribuzione in API serverless

È possibile distribuire i modelli Cohere Embed V3 in endpoint API serverless con fatturazione con pagamento in base al consumo. Questo tipo di distribuzione consente di usare i modelli come le API senza ospitarli nella sottoscrizione, mantenendo al contempo la sicurezza e la conformità aziendali necessarie alle organizzazioni.

La distribuzione in un endpoint API serverless non richiede la quota dalla sottoscrizione. Se il modello non è già stato distribuito, usare studio di Azure Machine Learning, Azure Machine Learning SDK per Python, l'interfaccia della riga di comando di Azure o i modelli ARM per distribuire il modello come API serverless.

Un client REST

I modelli distribuiti con l'API di inferenza del modello di Azure per intelligenza artificiale possono essere usati usando qualsiasi client REST. Per usare il client REST, sono necessari i prerequisiti seguenti:

  • Per costruire le richieste, è necessario passare l'URL dell'endpoint. L'URL dell'endpoint ha il formato https://your-host-name.your-azure-region.inference.ai.azure.com, in cui your-host-name è il nome host della distribuzione del modello univoco e your-azure-region è l'area di Azure in cui viene distribuito il modello (ad esempio eastus2).
  • A seconda della distribuzione del modello e delle preferenze di autenticazione, è necessario disporre di una chiave per l'autenticazione nel servizio o delle credenziali di Microsoft Entra ID. La chiave è una stringa di 32 caratteri.

Suggerimento

Cohere supporta inoltre l'utilizzo di un'API personalizzata per l'uso con funzionalità specifiche del modello. Per usare l'API specifica del provider di modelli, vedere la documentazione di Cohere.

Usare gli incorporamenti

In questa sezione viene usata l'API di inferenza del modello di Azure per intelligenza artificiale con un modello di incorporamento.

Creare un client per utilizzare il modello

Creare prima di tutto il client per utilizzare il modello. Il codice seguente usa un URL dell'endpoint e una chiave archiviati nelle variabili di ambiente.

Ottenere le funzionalità del modello

La route /info restituisce informazioni sul modello distribuito nell'endpoint. Restituire le informazioni del modello chiamando il metodo seguente:

GET /info HTTP/1.1
Host: <ENDPOINT_URI>
Authorization: Bearer <TOKEN>
Content-Type: application/json

La risposta è la seguente:

{
    "model_name": "Cohere-embed-v3-english",
    "model_type": "embeddings",
    "model_provider_name": "Cohere"
}

Creare incorporamenti

Creare una richiesta di incorporamento per visualizzare l'output del modello.

{
    "input": [
        "The ultimate answer to the question of life"
    ]
}

Suggerimento

La finestra di contesto per i modelli Cohere Embed V3 è 512. Assicurarsi di non superare questo limite durante la creazione di incorporamenti.

La risposta è la seguente, in cui è possibile visualizzare le statistiche di utilizzo del modello:

{
    "id": "0ab1234c-d5e6-7fgh-i890-j1234k123456",
    "object": "list",
    "data": [
        {
            "index": 0,
            "object": "embedding",
            "embedding": [
                0.017196655,
                // ...
                -0.000687122,
                -0.025054932,
                -0.015777588
            ]
        }
    ],
    "model": "Cohere-embed-v3-english",
    "usage": {
        "prompt_tokens": 9,
        "completion_tokens": 0,
        "total_tokens": 9
    }
}

Può essere utile calcolare gli incorporamenti in batch di input. Il parametro inputs può essere un elenco di stringhe, in cui ogni stringa è un input diverso. A sua volta, la risposta è un elenco di incorporamenti, in cui ogni incorporamento corrisponde all'input nella stessa posizione.

{
    "input": [
        "The ultimate answer to the question of life", 
        "The largest planet in our solar system is Jupiter"
    ]
}

La risposta è la seguente, in cui è possibile visualizzare le statistiche di utilizzo del modello:

{
    "id": "0ab1234c-d5e6-7fgh-i890-j1234k123456",
    "object": "list",
    "data": [
        {
            "index": 0,
            "object": "embedding",
            "embedding": [
                0.017196655,
                // ...
                -0.000687122,
                -0.025054932,
                -0.015777588
            ]
        },
        {
            "index": 1,
            "object": "embedding",
            "embedding": [
                0.017196655,
                // ...
                -0.000687122,
                -0.025054932,
                -0.015777588
            ]
        }
    ],
    "model": "Cohere-embed-v3-english",
    "usage": {
        "prompt_tokens": 19,
        "completion_tokens": 0,
        "total_tokens": 19
    }
}

Suggerimento

I modelli Cohere Embed V3 possono accettare batch di 1024 alla volta. Quando si creano batch, assicurarsi di non superare questo limite.

Creare tipi diversi di incorporamenti

I modelli Cohere Embed V3 possono generare più incorporamenti per lo stesso input a seconda del modo in cui si prevede di usarli. Questa funzionalità consente di recuperare incorporamenti più accurati per i modelli RAG.

Nell'esempio seguente viene illustrato come creare incorporamenti usati per creare un incorporamento per un documento che verrà archiviato in un database vettoriale:

{
    "input": [
        "The answer to the ultimate question of life, the universe, and everything is 42"
    ],
    "input_type": "document"
}

Quando si lavora su una query per recuperare un documento di questo tipo, è possibile usare il frammento di codice seguente per creare gli incorporamenti per la query e ottimizzare le prestazioni di recupero.

{
    "input": [
        "What's the ultimate meaning of life?"
    ],
    "input_type": "query"
}

I modelli Cohere Embed V3 possono ottimizzare gli incorporamenti in base al relativo caso d'uso.

Altri esempi di inferenza del modello

Descrizione Lingua Esempio
Richieste Web Bash cohere-embed.ipynb
Pacchetto di inferenza di Azure per intelligenza artificiale per JavaScript JavaScript Collegamento
Pacchetto di inferenza di Intelligenza artificiale di Azure per Python Python Collegamento
SDK di OpenAI (sperimentale) Python Collegamento
LangChain Python Collegamento
Cohere SDK Python Collegamento
LiteLLM SDK Python Collegamento

RAG (Retrieval Augmented Generation) ed esempi d'uso dello strumento

Descrizione Pacchetti Esempio
Creare un indice vettoriale FAISS (Facebook AI Similarity Search) locale usando incorporamenti Cohere - Langchain langchain, langchain_cohere cohere_faiss_langchain_embed.ipynb
Usare Cohere Command R/R+ per rispondere alle domande dai dati presenti nell'indice vettoriale FAISS locale - Langchain langchain, langchain_cohere command_faiss_langchain.ipynb
Usare Cohere Command R/R+ per rispondere alle domande dai dati presenti nell'indice vettoriale di AI Search - Langchain langchain, langchain_cohere cohere-aisearch-langchain-rag.ipynb
Usare Cohere Command R/R+ per rispondere alle domande dai dati presenti nell'indice vettoriale di AI Search - Cohere SDK cohere, azure_search_documents cohere-aisearch-rag.ipynb
Comando R+ strumento/chiamata di funzione, usando LangChain cohere, langchain, langchain_cohere command_tools-langchain.ipynb

Considerazioni su costi e quote per i modelli Cohere distribuiti come endpoint API serverless

I modelli Cohere distribuiti come API serverless sono offerti da Cohere tramite Azure Marketplace e integrati per l'uso con studio di Azure Machine Learning. È possibile trovare i prezzi di Azure Marketplace durante la distribuzione del modello.

Ogni volta che un progetto sottoscrive una determinata offerta di Azure Marketplace, viene creata una nuova risorsa per tenere traccia dei costi associati al consumo. La stessa risorsa viene usata per tenere traccia dei costi associati all'inferenza; Tuttavia, sono disponibili più contatori per tenere traccia di ogni scenario in modo indipendente.

Per altre informazioni su come tenere traccia dei costi, vedere Monitorare i costi per i modelli offerti in Azure Marketplace.

La quota viene gestita per distribuzione. Ogni distribuzione ha un limite di frequenza di 200.000 token al minuto e 1.000 richieste API al minuto. Attualmente, tuttavia, viene limitata una distribuzione per ogni modello per ogni progetto. Contattare il supporto tecnico di Microsoft Azure se i limiti di frequenza correnti non sono sufficienti per gli scenari in uso.