Prima di implementare gli embeddings

Quando si seleziona un fornitore di embeddings, ci sono diversi fattori da considerare a seconda delle proprie esigenze e preferenze:

  • Dimensione del dataset e specificità del dominio: dimensione del dataset di addestramento del modello e sua rilevanza per il dominio che si desidera incorporare. Dati più grandi o più specifici per il dominio generalmente producono embeddings migliori nel dominio
  • Prestazioni di inferenza: velocità di ricerca degli embeddings e latenza end-to-end. Questa è una considerazione particolarmente importante per le implementazioni di produzione su larga scala
  • Personalizzazione: opzioni per la formazione continua su dati privati o la specializzazione di modelli per domini molto specifici. Questo può migliorare le prestazioni su vocabolari unici

Come ottenere embeddings con Anthropic

Anthropic non offre un proprio modello di embedding. Un fornitore di embeddings che ha un’ampia varietà di opzioni e capacità che comprendono tutte le considerazioni di cui sopra è Voyage AI.

Voyage AI realizza modelli di embedding all’avanguardia e offre modelli personalizzati per specifici settori industriali come la finanza e la sanità, o modelli su misura per singoli clienti.

Il resto di questa guida è per Voyage AI, ma ti incoraggiamo a valutare una varietà di fornitori di embeddings per trovare la soluzione migliore per il tuo caso d’uso specifico.


Iniziare con Voyage AI

Dai un’occhiata al nostro notebook sugli embeddings per vedere un esempio di implementazione di Voyage AI.

Per accedere agli embeddings di Voyage:

  1. Registrati sul sito web di Voyage AI
  2. Ottieni una chiave API
  3. Imposta la chiave API come variabile d’ambiente per comodità:
Python
export VOYAGE_API_KEY="<your secret key>"

Puoi eseguire gli embeddings utilizzando il pacchetto Python ufficiale voyageai o le richieste HTTP, come descritto di seguito.

Pacchetto Python di Voyage

Il pacchetto voyageai può essere installato utilizzando il seguente comando:

Python
pip install -U voyageai

Quindi, puoi creare un oggetto client e iniziare a utilizzarlo per incorporare i tuoi testi:

Python
import voyageai

vo = voyageai.Client()
# Questo utilizzerà automaticamente la variabile d'ambiente VOYAGE_API_KEY.
# In alternativa, puoi utilizzare vo = voyageai.Client(api_key="<your secret key>")

texts = ["Testo di esempio 1", "Testo di esempio 2"]

result = vo.embed(texts, model="voyage-2", input_type="document")
print(result.embeddings[0])
print(result.embeddings[1])

result.embeddings sarà una lista di due vettori di embedding, ognuno contenente 1024 numeri a virgola mobile.

Dopo aver eseguito il codice sopra, i due embeddings verranno stampati sullo schermo:

Python
[0.02012746, 0.01957859, ...]  # embedding per "Testo di esempio 1"
[0.01429677, 0.03077182, ...]  # embedding per "Testo di esempio 2"

Quando crei gli embeddings, puoi specificare alcuni altri argomenti per la funzione embed(). Ecco la specifica:

voyageai.Client.embed(texts : List[str], model : str, input_type : Optional[str] = None, truncation : Optional[bool] = None)

  • texts (List[str]) - Una lista di testi come lista di stringhe, come ["Mi piacciono i gatti", "Mi piacciono anche i cani"]. Attualmente, la lunghezza massima della lista è 128 e il numero totale di token nella lista è al massimo 320K per voyage-2 e 120K per voyage-large-2/voyage-code-2.
  • model (str) - Nome del modello. Opzioni consigliate: voyage-2, voyage-large-2, voyage-code-2.
  • input_type (str, opzionale, predefinito a None) - Tipo di testo di input. Predefinito a None. Altre opzioni: query, document
    • Quando input_type è impostato su None, il testo di input verrà codificato direttamente dal modello di embedding di Voyage. In alternativa, quando gli input sono documenti o query, gli utenti possono specificare input_type come query o document, rispettivamente. In tali casi, Voyage anteporrà un prompt speciale al testo di input e invierà gli input estesi al modello di embedding
    • Per i casi d’uso di recupero/ricerca, consigliamo di specificare questo argomento durante la codifica di query o documenti per migliorare la qualità del recupero. Gli embeddings generati con e senza l’argomento input_type sono compatibili
  • truncation (bool, opzionale, predefinito a None) - Se troncare i testi di input per adattarli alla lunghezza del contesto.
    • Se True, i testi di input troppo lunghi verranno troncati per adattarsi alla lunghezza del contesto, prima di essere vettorizzati dal modello di embedding
    • Se False, verrà generato un errore se un testo dato supera la lunghezza del contesto
    • Se non specificato (predefinito a None), Voyage troncherà il testo di input prima di inviarlo al modello di embedding se supera leggermente la lunghezza della finestra di contesto. Se supera significativamente la lunghezza della finestra di contesto, verrà generato un errore

API HTTP di Voyage

Puoi anche ottenere embeddings richiedendo l’API HTTP di Voyage. Ad esempio, puoi inviare una richiesta HTTP tramite il comando curl in un terminale:

Shell
curl https://api.voyageai.com/v1/embeddings \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $VOYAGE_API_KEY" \
  -d '{
    "input": ["Testo di esempio 1", "Testo di esempio 2"],
    "model": "voyage-2"
  }'

La risposta che otterresti è un oggetto JSON contenente gli embeddings e l’utilizzo dei token:

Shell
{
  "object": "list",
  "data": [
    {
      "embedding": [0.02012746, 0.01957859, ...],
      "index": 0
    },
    {
      "embedding": [0.01429677, 0.03077182, ...],
      "index": 1
    }
  ],
  "model": "voyage-2",
  "usage": {
    "total_tokens": 10
  }
}

L’endpoint di embedding di Voyage AI è https://api.voyageai.com/v1/embeddings (POST). L’intestazione della richiesta deve contenere la chiave API. Il corpo della richiesta è un oggetto JSON contenente i seguenti argomenti:

  • input (str, List[str]) - Una singola stringa di testo o una lista di testi come lista di stringhe. Attualmente, la lunghezza massima della lista è 128 e il numero totale di token nella lista è al massimo 320K per voyage-2 e 120K per voyage-large-2/voyage-code-2.
  • model (str) - Nome del modello. Opzioni consigliate: voyage-2, voyage-large-2, voyage-code-2.
  • input_type (str, opzionale, predefinito a None) - Tipo di testo di input. Predefinito a None. Altre opzioni: query, document
  • truncation (bool, opzionale, predefinito a None) - Se troncare i testi di input per adattarli alla lunghezza del contesto
    • Se True, i testi di input troppo lunghi verranno troncati per adattarsi alla lunghezza del contesto prima di essere vettorizzati dal modello di embedding
    • Se False, verrà generato un errore se un testo dato supera la lunghezza del contesto
    • Se non specificato (predefinito a None), Voyage troncherà il testo di input prima di inviarlo al modello di embedding se supera leggermente la lunghezza della finestra di contesto. Se supera significativamente la lunghezza della finestra di contesto, verrà generato un errore
  • encoding_format (str, opzionale, predefinito a None) - Formato in cui gli embeddings sono codificati. Voyage attualmente supporta due opzioni:
    • Se non specificato (predefinito a None): gli embeddings sono rappresentati come liste di numeri a virgola mobile
    • "base64": gli embeddings sono compressi in codifiche Base64

Esempio di embedding di Voyage

Ora che sappiamo come ottenere gli embeddings con Voyage, vediamolo in azione con un breve esempio.

Supponiamo di avere un piccolo corpus di sei documenti da recuperare

Python
documents = [
    "La dieta mediterranea enfatizza pesce, olio d'oliva e verdure, ritenuti in grado di ridurre le malattie croniche.",
    "La fotosintesi nelle piante converte l'energia luminosa in glucosio e produce ossigeno essenziale.",
    "Le innovazioni del XX secolo, dalle radio agli smartphone, si sono concentrate sui progressi elettronici.",
    "I fiumi forniscono acqua, irrigazione e habitat per le specie acquatiche, vitali per gli ecosistemi.",
    "La conference call di Apple per discutere i risultati del quarto trimestre fiscale e gli aggiornamenti aziendali è prevista per giovedì 2 novembre 2023 alle 14:00 PT / 17:00 ET.",
    "Le opere di Shakespeare, come 'Amleto' e 'Sogno di una notte di mezza estate', resistono nella letteratura."
]

Useremo prima Voyage per convertire ciascuno di essi in un vettore di embedding

Python
import voyageai

vo = voyageai.Client()

# Incorpora i documenti
doc_embds = vo.embed(
    documents, model="voyage-2", input_type="document"
).embeddings

Gli embeddings ci permetteranno di fare ricerche/recuperi semantici nello spazio vettoriale. Possiamo quindi convertire una query di esempio,

Python
query = "Quando è prevista la conference call di Apple?"

in un embedding, e poi condurre una ricerca del vicino più prossimo per trovare il documento più rilevante in base alla distanza nello spazio di embedding.

Python
import numpy as np

# Incorpora la query
query_embd = vo.embed(
    [query], model="voyage-2", input_type="query"
).embeddings[0]

# Calcola la similarità
# Gli embeddings di Voyage sono normalizzati a lunghezza 1, quindi il prodotto scalare
# e la similarità del coseno sono la stessa cosa.
similarities = np.dot(doc_embds, query_embd)

retrieved_id = np.argmax(similarities)
print(documents[retrieved_id])

Nota che usiamo input_type="document" e input_type="query" per incorporare rispettivamente il documento e la query. Maggiori specifiche possono essere trovate qui.

L’output sarebbe il 5° documento, che è infatti il più rilevante per la query:

La conference call di Apple per discutere i risultati del quarto trimestre fiscale e gli aggiornamenti aziendali è prevista per giovedì 2 novembre 2023 alle 14:00 PT / 17:00 ET.

Modelli Voyage disponibili

Voyage consiglia di utilizzare i seguenti modelli di embedding:

ModelloLunghezza contestoDimensione embeddingDescrizione
voyage-large-2160001536Il modello di embedding generalista più potente di Voyage AI.
voyage-code-2160001536Ottimizzato per il recupero del codice (17% migliore delle alternative), e anche SoTA su corpora di uso generale. Vedi questo post sul blog di Voyage per i dettagli.
voyage-240001024Modello di embedding generalista di base ottimizzato sia per la latenza che per la qualità.
voyage-lite-02-instruct40001024Istruito per attività di classificazione, clustering e similarità testuale delle frasi, che sono gli unici casi d’uso consigliati per questo modello.

voyage-2 e voyage-large-2 sono modelli di embedding generalisti, che raggiungono prestazioni all’avanguardia in tutti i domini e mantengono un’elevata efficienza. voyage-code-2 è ottimizzato per il campo del codice, offrendo una lunghezza del contesto 4 volte superiore per un utilizzo più flessibile, anche se con una latenza relativamente più elevata.

Voyage sta sviluppando attivamente modelli più avanzati e specializzati, e offre anche servizi di fine-tuning per personalizzare modelli su misura per singoli clienti. Invia un’e-mail al tuo account manager di Anthropic o contatta il supporto di Anthropic per ulteriori informazioni sui modelli su misura.

  • voyage-finance-2: prossimamente
  • voyage-law-2: prossimamente
  • voyage-multilingual-2: prossimamente
  • voyage-healthcare-2: prossimamente

Voyage su AWS Marketplace

Gli embeddings di Voyage sono disponibili anche su AWS Marketplace. Ecco le istruzioni per accedere a Voyage su AWS:

  1. Iscriviti al pacchetto del modello
    1. Vai alla pagina di elenco del pacchetto del modello e seleziona il modello da distribuire
    2. Fai clic sul pulsante Continue to subscribe
    3. Esamina attentamente i dettagli nella pagina Subscribe to this software. Se accetti il contratto di licenza per l’utente finale (EULA) standard, i prezzi e i termini di supporto, fai clic su “Accept Offer”
    4. Dopo aver selezionato Continue to configuration e scelto una regione, ti verrà presentato un Product Arn. Questo è l’ARN del pacchetto del modello richiesto per creare un modello distribuibile utilizzando Boto3
      1. Copia l’ARN corrispondente alla regione selezionata e utilizzalo nella cella successiva
  2. Distribuisci il pacchetto del modello

Da qui, crea uno spazio JupyterLab in Sagemaker Studio, carica il notebook di Voyage e segui le istruzioni all’interno.


FAQ


Prezzi

Visita la pagina dei prezzi di Voyage per i dettagli più aggiornati sui prezzi.