Avant d’implémenter les embeddings
Lors de la sélection d’un fournisseur d’embeddings, il y a plusieurs facteurs que vous pouvez considérer selon vos besoins et préférences :- Taille du jeu de données et spécificité du domaine : taille du jeu de données d’entraînement du modèle et sa pertinence par rapport au domaine que vous voulez intégrer. Des données plus importantes ou plus spécifiques au domaine produisent généralement de meilleurs embeddings dans le domaine
- Performance d’inférence : vitesse de recherche d’embedding et latence de bout en bout. C’est une considération particulièrement importante pour les déploiements de production à grande échelle
- Personnalisation : options pour la formation continue sur des données privées, ou la spécialisation de modèles pour des domaines très spécifiques. Cela peut améliorer les performances sur des vocabulaires uniques
Comment obtenir des embeddings avec Anthropic
Anthropic n’offre pas son propre modèle d’embedding. Un fournisseur d’embeddings qui a une grande variété d’options et de capacités englobant toutes les considérations ci-dessus est Voyage AI. Voyage AI fabrique des modèles d’embedding de pointe et offre des modèles personnalisés pour des domaines industriels spécifiques tels que la finance et la santé, ou des modèles sur mesure finement ajustés pour des clients individuels. Le reste de ce guide concerne Voyage AI, mais nous vous encourageons à évaluer une variété de fournisseurs d’embeddings pour trouver la meilleure solution pour votre cas d’usage spécifique.Modèles disponibles
Voyage recommande d’utiliser les modèles d’embedding de texte suivants :| Modèle | Longueur de contexte | Dimension d’embedding | Description |
|---|---|---|---|
voyage-3-large | 32,000 | 1024 (par défaut), 256, 512, 2048 | La meilleure qualité de récupération généraliste et multilingue. Voir article de blog pour les détails. |
voyage-3.5 | 32,000 | 1024 (par défaut), 256, 512, 2048 | Optimisé pour la qualité de récupération généraliste et multilingue. Voir article de blog pour les détails. |
voyage-3.5-lite | 32,000 | 1024 (par défaut), 256, 512, 2048 | Optimisé pour la latence et le coût. Voir article de blog pour les détails. |
voyage-code-3 | 32,000 | 1024 (par défaut), 256, 512, 2048 | Optimisé pour la récupération de code. Voir article de blog pour les détails. |
voyage-finance-2 | 32,000 | 1024 | Optimisé pour la récupération et RAG en finance. Voir article de blog pour les détails. |
voyage-law-2 | 16,000 | 1024 | Optimisé pour la récupération et RAG juridique et long contexte. Également amélioration des performances dans tous les domaines. Voir article de blog pour les détails. |
| Modèle | Longueur de contexte | Dimension d’embedding | Description |
|---|---|---|---|
voyage-multimodal-3 | 32000 | 1024 | Modèle d’embedding multimodal riche qui peut vectoriser du texte entrelacé et des images riches en contenu, telles que des captures d’écran de PDF, diapositives, tableaux, figures, et plus. Voir article de blog pour les détails. |
Commencer avec Voyage AI
Pour accéder aux embeddings Voyage :- Inscrivez-vous sur le site web de Voyage AI
- Obtenez une clé API
- Définissez la clé API comme variable d’environnement pour plus de commodité :
voyageai ou les requêtes HTTP, comme décrit ci-dessous.
Bibliothèque Python Voyage
Le packagevoyageai peut être installé en utilisant la commande suivante :
result.embeddings sera une liste de deux vecteurs d’embedding, chacun contenant 1024 nombres à virgule flottante. Après avoir exécuté le code ci-dessus, les deux embeddings seront affichés à l’écran :
embed().
Pour plus d’informations sur le package python Voyage, voir la documentation Voyage.
API HTTP Voyage
Vous pouvez également obtenir des embeddings en demandant l’API HTTP Voyage. Par exemple, vous pouvez envoyer une requête HTTP via la commandecurl dans un terminal :
AWS Marketplace
Les embeddings Voyage sont disponibles sur AWS Marketplace. Les instructions pour accéder à Voyage sur AWS sont disponibles ici.Exemple de démarrage rapide
Maintenant que nous savons comment obtenir des embeddings, voyons un bref exemple. Supposons que nous ayons un petit corpus de six documents à partir desquels récupérerinput_type="document" et input_type="query" pour intégrer le document et la requête, respectivement. Plus de spécifications peuvent être trouvées ici.
La sortie serait le 5e document, qui est effectivement le plus pertinent pour la requête :
FAQ
Pourquoi les embeddings Voyage ont-ils une qualité supérieure ?
Pourquoi les embeddings Voyage ont-ils une qualité supérieure ?
- Architecture du modèle
- Collecte de données
- Fonctions de perte
- Sélection d’optimiseur
Quels modèles d'embedding sont disponibles et lequel devrais-je utiliser ?
Quels modèles d'embedding sont disponibles et lequel devrais-je utiliser ?
voyage-3-large: Meilleure qualitévoyage-3.5-lite: Latence et coût les plus basvoyage-3.5: Performance équilibrée avec qualité de récupération supérieure à un prix compétitif
input_type pour spécifier si le texte est de type requête ou document.Modèles spécifiques au domaine :- Tâches juridiques :
voyage-law-2 - Code et documentation de programmation :
voyage-code-3 - Tâches liées à la finance :
voyage-finance-2
Quelle fonction de similarité devrais-je utiliser ?
Quelle fonction de similarité devrais-je utiliser ?
- La similarité cosinus est équivalente à la similarité par produit scalaire, tandis que cette dernière peut être calculée plus rapidement.
- La similarité cosinus et la distance euclidienne donneront des classements identiques.
Quelle est la relation entre caractères, mots et tokens ?
Quelle est la relation entre caractères, mots et tokens ?
Quand et comment devrais-je utiliser le paramètre input_type ?
Quand et comment devrais-je utiliser le paramètre input_type ?
input_type soit utilisé pour spécifier si le texte d’entrée est une requête ou un document. N’omettez pas input_type ou ne définissez pas input_type=None. Spécifier si le texte d’entrée est une requête ou un document peut créer de meilleures représentations vectorielles denses pour la récupération, ce qui peut conduire à une meilleure qualité de récupération.Lors de l’utilisation du paramètre input_type, des invites spéciales sont ajoutées au début du texte d’entrée avant l’embedding. Spécifiquement :📘 Invites associées avecinput_type
- Pour une requête, l’invite est “Represent the query for retrieving supporting documents: ”.
- Pour un document, l’invite est “Represent the document for retrieval: ”.
- Exemple
- Quand
input_type="query", une requête comme “Quand la conférence téléphonique d’Apple est-elle prévue ?” deviendra “Represent the query for retrieving supporting documents: Quand la conférence téléphonique d’Apple est-elle prévue ?”- Quand
input_type="document", une requête comme “La conférence téléphonique d’Apple pour discuter des résultats du quatrième trimestre fiscal et des mises à jour commerciales est prévue pour jeudi 2 novembre 2023 à 14h00 PT / 17h00 ET.” deviendra “Represent the document for retrieval: La conférence téléphonique d’Apple pour discuter des résultats du quatrième trimestre fiscal et des mises à jour commerciales est prévue pour jeudi 2 novembre 2023 à 14h00 PT / 17h00 ET.”
voyage-large-2-instruct, comme le nom le suggère, est entraîné pour être réactif aux instructions supplémentaires qui sont ajoutées au début du texte d’entrée. Pour la classification, le clustering, ou d’autres sous-tâches MTEB, veuillez utiliser les instructions ici.Quelles options de quantification sont disponibles ?
Quelles options de quantification sont disponibles ?
output_dtype :float: Chaque embedding retourné est une liste de nombres à virgule flottante simple précision 32 bits (4 octets). C’est la valeur par défaut et fournit la plus haute précision / précision de récupération.int8etuint8: Chaque embedding retourné est une liste d’entiers 8 bits (1 octet) allant de -128 à 127 et de 0 à 255, respectivement.binaryetubinary: Chaque embedding retourné est une liste d’entiers 8 bits qui représentent des valeurs d’embedding quantifiées sur un bit, empaquetées en bits :int8pourbinaryetuint8pourubinary. La longueur de la liste retournée d’entiers est 1/8 de la dimension réelle de l’embedding. Le type binaire utilise la méthode binaire décalée, sur laquelle vous pouvez en apprendre plus dans la FAQ ci-dessous.
Exemple de quantification binaire Considérez les huit valeurs d’embedding suivantes : -0.03955078, 0.006214142, -0.07446289, -0.039001465, 0.0046463013, 0.00030612946, -0.08496094, et 0.03994751. Avec la quantification binaire, les valeurs inférieures ou égales à zéro seront quantifiées à un zéro binaire, et les valeurs positives à un un binaire, résultant en la séquence binaire suivante : 0, 1, 0, 0, 1, 1, 0, 1. Ces huit bits sont ensuite empaquetés en un seul entier 8 bits, 01001101 (avec le bit le plus à gauche comme bit le plus significatif).
ubinary: La séquence binaire est directement convertie et représentée comme l’entier non signé (uint8) 77.binary: La séquence binaire est représentée comme l’entier signé (int8) -51, calculé en utilisant la méthode binaire décalée (77 - 128 = -51).
Comment puis-je tronquer les embeddings Matryoshka ?
Comment puis-je tronquer les embeddings Matryoshka ?
voyage-code-3, qui supportent plusieurs dimensions de sortie génèrent de tels embeddings Matryoshka. Vous pouvez tronquer ces vecteurs en gardant le sous-ensemble principal des dimensions. Par exemple, le code Python suivant démontre comment tronquer des vecteurs 1024-dimensionnels à 256 dimensions :