Prima di implementare gli embeddings
Quando si seleziona un provider di embeddings, ci sono diversi fattori che puoi considerare a seconda delle tue 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 vuoi incorporare. Dati più grandi o più specifici del 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 implementazioni di produzione su larga scala
- Personalizzazione: opzioni per l’addestramento continuo su dati privati, o specializzazione di modelli per domini molto specifici. Questo può migliorare le prestazioni su vocabolari unici
Come ottenere embeddings con Anthropic
Anthropic non offre il proprio modello di embedding. Un provider di embeddings che ha un’ampia varietà di opzioni e capacità che comprende tutte le considerazioni sopra menzionate è Voyage AI. Voyage AI crea modelli di embedding all’avanguardia e offre modelli personalizzati per domini industriali specifici come finanza e sanità, o modelli fine-tuned 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.Modelli Disponibili
Voyage raccomanda di utilizzare i seguenti modelli di embedding di testo:| Modello | Lunghezza del Contesto | Dimensione dell’Embedding | Descrizione |
|---|---|---|---|
voyage-3-large | 32,000 | 1024 (predefinito), 256, 512, 2048 | La migliore qualità di recupero generale e multilingue. Vedi post del blog per i dettagli. |
voyage-3.5 | 32,000 | 1024 (predefinito), 256, 512, 2048 | Ottimizzato per la qualità di recupero generale e multilingue. Vedi post del blog per i dettagli. |
voyage-3.5-lite | 32,000 | 1024 (predefinito), 256, 512, 2048 | Ottimizzato per latenza e costo. Vedi post del blog per i dettagli. |
voyage-code-3 | 32,000 | 1024 (predefinito), 256, 512, 2048 | Ottimizzato per il recupero di codice. Vedi post del blog per i dettagli. |
voyage-finance-2 | 32,000 | 1024 | Ottimizzato per il recupero e RAG in ambito finanziario. Vedi post del blog per i dettagli. |
voyage-law-2 | 16,000 | 1024 | Ottimizzato per il recupero e RAG legale e a contesto lungo. Anche prestazioni migliorate in tutti i domini. Vedi post del blog per i dettagli. |
| Modello | Lunghezza del Contesto | Dimensione dell’Embedding | Descrizione |
|---|---|---|---|
voyage-multimodal-3 | 32000 | 1024 | Modello di embedding multimodale ricco che può vettorializzare testo interlacciato e immagini ricche di contenuto, come screenshot di PDF, slide, tabelle, figure e altro. Vedi post del blog per i dettagli. |
Iniziare con Voyage AI
Per accedere agli embeddings di Voyage:- Registrati sul sito web di Voyage AI
- Ottieni una chiave API
- Imposta la chiave API come variabile d’ambiente per comodità:
voyageai ufficiale o richieste HTTP, come descritto di seguito.
Libreria Python di Voyage
Il pacchettovoyageai può essere installato utilizzando il seguente comando:
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:
embed().
Per maggiori informazioni sul pacchetto Python di Voyage, vedi la documentazione di Voyage.
API HTTP di Voyage
Puoi anche ottenere embeddings richiedendo l’API HTTP di Voyage. Ad esempio, puoi inviare una richiesta HTTP attraverso il comandocurl in un terminale:
AWS Marketplace
Gli embeddings di Voyage sono disponibili 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 recuperareinput_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:
FAQ
Perché gli embeddings di Voyage hanno una qualità superiore?
Perché gli embeddings di Voyage hanno una qualità superiore?
- Architettura del modello
- Raccolta dati
- Funzioni di perdita
- Selezione dell’ottimizzatore
Quali modelli di embedding sono disponibili e quale dovrei usare?
Quali modelli di embedding sono disponibili e quale dovrei usare?
voyage-3-large: Migliore qualitàvoyage-3.5-lite: Latenza e costo più bassivoyage-3.5: Prestazioni bilanciate con qualità di recupero superiore a un punto di prezzo competitivo
input_type per specificare se il testo è di tipo query o documento.Modelli specifici per dominio:- Compiti legali:
voyage-law-2 - Codice e documentazione di programmazione:
voyage-code-3 - Compiti relativi alla finanza:
voyage-finance-2
Quale funzione di similarità dovrei usare?
Quale funzione di similarità dovrei usare?
- La similarità del coseno è equivalente alla similarità del prodotto scalare, mentre quest’ultima può essere calcolata più rapidamente.
- La similarità del coseno e la distanza euclidea risulteranno in classifiche identiche.
Qual è la relazione tra caratteri, parole e token?
Qual è la relazione tra caratteri, parole e token?
Quando e come dovrei usare il parametro input_type?
Quando e come dovrei usare il parametro input_type?
input_type sia utilizzato per specificare se il testo di input è una query o un documento. Non omettere input_type o impostare input_type=None. Specificare se il testo di input è una query o un documento può creare migliori rappresentazioni vettoriali dense per il recupero, il che può portare a una migliore qualità di recupero.Quando si utilizza il parametro input_type, prompt speciali vengono anteposti al testo di input prima dell’embedding. Specificamente:📘 Prompt associati coninput_type
- Per una query, il prompt è “Represent the query for retrieving supporting documents: ”.
- Per un documento, il prompt è “Represent the document for retrieval: ”.
- Esempio
- Quando
input_type="query", una query come “Quando è programmata la conference call di Apple?” diventerà “Represent the query for retrieving supporting documents: Quando è programmata la conference call di Apple?”- Quando
input_type="document", una query come “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.” diventerà “Represent the document for retrieval: 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.”
voyage-large-2-instruct, come suggerisce il nome, è addestrato per essere reattivo a istruzioni aggiuntive che vengono anteposte al testo di input. Per classificazione, clustering, o altri sotto-compiti MTEB, si prega di utilizzare le istruzioni qui.Quali opzioni di quantizzazione sono disponibili?
Quali opzioni di quantizzazione sono disponibili?
output_dtype:float: Ogni embedding restituito è una lista di numeri in virgola mobile a singola precisione a 32 bit (4 byte). Questo è il predefinito e fornisce la massima precisione / accuratezza di recupero.int8euint8: Ogni embedding restituito è una lista di interi a 8 bit (1 byte) che vanno da -128 a 127 e da 0 a 255, rispettivamente.binaryeubinary: Ogni embedding restituito è una lista di interi a 8 bit che rappresentano valori di embedding quantizzati a singolo bit impaccati in bit:int8perbinaryeuint8perubinary. La lunghezza della lista restituita di interi è 1/8 della dimensione effettiva dell’embedding. Il tipo binario utilizza il metodo binario offset, di cui puoi saperne di più nelle FAQ qui sotto.
Esempio di quantizzazione binaria Considera i seguenti otto valori di embedding: -0.03955078, 0.006214142, -0.07446289, -0.039001465, 0.0046463013, 0.00030612946, -0.08496094, e 0.03994751. Con la quantizzazione binaria, i valori minori o uguali a zero saranno quantizzati a uno zero binario, e i valori positivi a un uno binario, risultando nella seguente sequenza binaria: 0, 1, 0, 0, 1, 1, 0, 1. Questi otto bit vengono poi impaccati in un singolo intero a 8 bit, 01001101 (con il bit più a sinistra come bit più significativo).
ubinary: La sequenza binaria viene direttamente convertita e rappresentata come l’intero senza segno (uint8) 77.binary: La sequenza binaria viene rappresentata come l’intero con segno (int8) -51, calcolato utilizzando il metodo binario offset (77 - 128 = -51).
Come posso troncare gli embeddings Matryoshka?
Come posso troncare gli embeddings Matryoshka?
voyage-code-3, che supportano multiple dimensioni di output generano tali embeddings Matryoshka. Puoi troncare questi vettori mantenendo il sottoinsieme iniziale di dimensioni. Ad esempio, il seguente codice Python dimostra come troncare vettori a 1024 dimensioni a 256 dimensioni: