Prima di implementare gli embeddings

Quando si seleziona un provider di embeddings, ci sono diversi fattori da considerare in base alle proprie esigenze e preferenze:

  • Dimensione del dataset e specificità del dominio: dimensione del dataset di addestramento del modello e la sua rilevanza per il dominio che si desidera incorporare. Dati più ampi o più specifici del dominio generalmente producono migliori embeddings nel dominio
  • Prestazioni di inferenza: velocità di ricerca degli embedding e latenza end-to-end. Questa è una considerazione particolarmente importante per implementazioni in produzione su larga scala
  • Personalizzazione: opzioni per continuare l’addestramento su dati privati o specializzazione dei 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 provider di embeddings che ha un’ampia varietà di opzioni e capacità che comprendono tutte le considerazioni sopra citate è Voyage AI.

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

Il resto di questa guida riguarda Voyage AI, ma ti incoraggiamo a valutare una varietà di fornitori di embeddings per trovare quello più adatto al 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 voyageai ufficiale o le richieste HTTP, come descritto di seguito.

Pacchetto Python Voyage

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

Python
pip install -U voyageai

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

Python
import voyageai

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

texts = ["Sample text 1", "Sample text 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, ciascuno contenente 1024 numeri in virgola mobile.

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

Python
[0.02012746, 0.01957859, ...]  # embedding per "Sample text 1"
[0.01429677, 0.03077182, ...]  # embedding per "Sample text 2"

Quando crei gli embeddings, puoi specificare alcuni altri argomenti alla 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 ["I like cats", "I also like dogs"]. 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 None) - Tipo del testo di input. Predefinito a None. Altre opzioni: query, document
    • Quando input_type è impostato a None, il testo di input sarà 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 quando si codificano 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 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 supera la lunghezza del contesto
    • Se non specificato (predefinito a None), Voyage tronca 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 Voyage

Puoi anche ottenere embeddings richiedendo l’API HTTP di Voyage. Per esempio, puoi inviare una richiesta HTTP attraverso 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": ["Sample text 1", "Sample text 2"],
    "model": "voyage-2"
  }'

La risposta che otterrai è 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’header 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 None) - Tipo del testo di input. Predefinito a None. Altre opzioni: query, document
  • truncation (bool, opzionale, predefinito 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 supera la lunghezza del contesto
    • Se non specificato (predefinito a None), Voyage tronca 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 None) - Formato in cui sono codificati gli embeddings. Voyage attualmente supporta due opzioni:
    • Se non specificato (predefinito a None): gli embeddings sono rappresentati come liste di numeri in virgola mobile
    • "base64": gli embeddings sono compressi in codifiche Base64

Esempio di embedding Voyage

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

Supponiamo di avere un piccolo corpus di sei documenti da cui 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 è programmata 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', perdurano nella letteratura."
]

Prima useremo 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 ricerca semantica / recupero nello spazio vettoriale. Possiamo quindi convertire una query di esempio,

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

in un embedding, e poi condurre una ricerca del vicino più prossimo per trovare il documento più rilevante basato sulla distanza nello spazio degli 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 embedding 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 sarà il 5° documento, che è effettivamente il più rilevante per la query:

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

Modelli Voyage disponibili

Voyage raccomanda l’uso dei 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 di codice (17% migliore delle alternative), e anche SoTA su corpora per uso generale. Vedi questo post del blog di Voyage per i dettagli.
voyage-240001024Modello di embedding generalista base ottimizzato sia per latenza che per qualità.
voyage-lite-02-instruct40001024Istruito per attività di classificazione, clustering e similarità testuale tra frasi, che sono gli unici casi d’uso raccomandati 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’alta efficienza. voyage-code-2 è ottimizzato per il campo del codice, offrendo una lunghezza di contesto 4 volte maggiore per un uso più flessibile, anche se con una latenza relativamente più alta.

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

  • voyage-finance-2: in arrivo
  • voyage-law-2: in arrivo
  • voyage-multilingual-2: in arrivo
  • voyage-healthcare-2: in arrivo

Voyage su AWS Marketplace

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

  1. Sottoscrivi il pacchetto del modello
    1. Naviga alla pagina di elenco del pacchetto del modello e seleziona il modello da implementare
    2. Clicca sul pulsante Continue to subscribe
    3. Rivedi attentamente i det

tagli nella pagina Subscribe to this software. Se sei d’accordo con l’Accordo di Licenza per l’Utente Finale (EULA) standard, i prezzi e i termini di supporto, clicca 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 implementabile usando Boto3

  1. Copia l’ARN che corrisponde alla tua regione selezionata e usalo nella cella successiva
  2. Implementa il pacchetto del modello

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


FAQ


Prezzi

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