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 di cui sopra è 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 è per Voyage AI, ma ti incoraggiamo a valutare una varietà di fornitori di embeddings per trovare quello più adatto al tuo caso d’uso specifico.

Modelli Disponibili

Voyage raccomanda l’utilizzo dei seguenti modelli di embedding del testo:

ModelloLunghezza del ContestoDimensione dell’EmbeddingDescrizione
voyage-3-large32.0001024 (predefinito), 256, 512, 2048La migliore qualità di recupero per uso generale e multilingue.
voyage-332.0001024Ottimizzato per qualità di recupero per uso generale e multilingue. Vedi il post sul blog per i dettagli.
voyage-3-lite32.000512Ottimizzato per latenza e costo. Vedi il post sul blog per i dettagli.
voyage-code-332.0001024 (predefinito), 256, 512, 2048Ottimizzato per il recupero di codice. Vedi il post sul blog per i dettagli.
voyage-finance-232.0001024Ottimizzato per il recupero e RAG in ambito finanziario. Vedi il post sul blog per i dettagli.
voyage-law-216.0001024Ottimizzato per il recupero e RAG legale e contesto lungo. Prestazioni migliorate anche in tutti i domini. Vedi il post sul blog per i dettagli.

Inoltre, sono raccomandati i seguenti modelli di embedding multimodali:

ModelloLunghezza del ContestoDimensione dell’EmbeddingDescrizione
voyage-multimodal-3320001024Modello di embedding multimodale ricco che può vettorializzare testo intervallato e immagini ricche di contenuto, come screenshot di PDF, diapositive, tabelle, figure e altro. Vedi il post sul blog per i dettagli.

Hai bisogno di aiuto per decidere quale modello di embedding testuale utilizzare? Consulta le FAQ.

Iniziare con 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à:
export VOYAGE_API_KEY="<la tua chiave segreta>"

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

Pacchetto Python Voyage

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

pip install -U voyageai

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

import voyageai

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

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

result = vo.embed(texts, model="voyage-3", 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:

[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 anche specificare alcuni altri argomenti alla funzione embed(). Puoi leggere di più sulla specifica qui

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:

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-3"
  }'

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

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

Puoi leggere di più sull’endpoint di embedding nella documentazione di Voyage

AWS Marketplace

Gli embeddings di Voyage sono disponibili anche su AWS Marketplace. Le istruzioni per accedere a Voyage su AWS sono disponibili qui.

Esempio di Avvio Rapido

Ora che sappiamo come ottenere gli embeddings, vediamo un breve esempio.

Supponiamo di avere un piccolo corpus di sei documenti da cui recuperare

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

import voyageai

vo = voyageai.Client()

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

Gli embeddings ci permetteranno di fare ricerca semantica / recupero nello spazio vettoriale. Data una query di esempio,

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

la convertiamo in un embedding e conduciamo una ricerca del vicino più prossimo per trovare il documento più rilevante basato sulla distanza nello spazio degli embedding.

import numpy as np

# Incorpora la query
query_embd = vo.embed(
    [query], model="voyage-3", 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 uguali.
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. Ulteriori 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.

Se stai cercando una serie dettagliata di guide su come fare RAG con gli embeddings, inclusi i database vettoriali, consulta il nostro cookbook RAG.

FAQ

Prezzi

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