Lors du choix d'un fournisseur d'embeddings, il y a plusieurs facteurs que vous pouvez considérer en fonction de vos besoins et préférences :
Anthropic n'offre pas son propre modèle d'embedding. Un fournisseur d'embeddings qui dispose d'une large variété d'options et de capacités englobant toutes les considérations ci-dessus est Voyage AI.
Voyage AI crée 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 affinés sur mesure 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 le meilleur ajustement pour votre cas d'usage spécifique.
Voyage recommande d'utiliser les modèles d'embedding de texte suivants :
| Modèle | Longueur du 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 le billet de blog pour plus de 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 le billet de blog pour plus de détails. |
voyage-3.5-lite | 32 000 | 1024 (par défaut), 256, 512, 2048 | Optimisé pour la latence et le coût. Voir le billet de blog pour plus de détails. |
voyage-code-3 | 32 000 | 1024 (par défaut), 256, 512, 2048 | Optimisé pour la récupération de code. Voir le billet de blog pour plus de détails. |
voyage-finance-2 | 32 000 | 1024 | Optimisé pour la récupération et le RAG en finance. Voir le billet de blog pour plus de détails. |
voyage-law-2 | 16 000 | 1024 | Optimisé pour la récupération et le RAG en droit et contexte long. Performances également améliorées dans tous les domaines. Voir le billet de blog pour plus de détails. |
De plus, les modèles d'embedding multimodal suivants sont recommandés :
| Modèle | Longueur du 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, des diapositives, des tableaux, des figures, et plus. Voir le billet de blog pour plus de détails. |
Besoin d'aide pour décider quel modèle d'embedding de texte utiliser ? Consultez la FAQ.
Pour accéder aux embeddings Voyage :
export VOYAGE_API_KEY="<your secret key>"Vous pouvez obtenir les embeddings en utilisant soit le package Python officiel voyageai, soit des requêtes HTTP, comme décrit ci-dessous.
Le package voyageai peut être installé à l'aide de la commande suivante :
pip install -U voyageaiEnsuite, vous pouvez créer un objet client et commencer à l'utiliser pour intégrer vos textes :
import voyageai
vo = voyageai.Client()
# This will automatically use the environment variable VOYAGE_API_KEY.
# Alternatively, you can use vo = voyageai.Client(api_key="<your secret key>")
texts = ["Sample text 1", "Sample text 2"]
result = vo.embed(texts, model="voyage-3.5", input_type="document")
print(result.embeddings[0])
print(result.embeddings[1])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 imprimés à l'écran :
[-0.013131560757756233, 0.019828535616397858, ...] # embedding for "Sample text 1"
[-0.0069352793507277966, 0.020878976210951805, ...] # embedding for "Sample text 2"Lors de la création des embeddings, vous pouvez spécifier quelques autres arguments à la fonction embed().
Pour plus d'informations sur le package Python Voyage, consultez la documentation Voyage.
Vous pouvez également obtenir des embeddings en demandant l'API HTTP Voyage. Par exemple, vous pouvez envoyer une requête HTTP via la commande curl dans un terminal :
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-3.5"
}'La réponse que vous obtiendriez est un objet JSON contenant les embeddings et l'utilisation des tokens :
{
"object": "list",
"data": [
{
"embedding": [-0.013131560757756233, 0.019828535616397858, ...],
"index": 0
},
{
"embedding": [-0.0069352793507277966, 0.020878976210951805, ...],
"index": 1
}
],
"model": "voyage-3.5",
"usage": {
"total_tokens": 10
}
}
Pour plus d'informations sur l'API HTTP Voyage, consultez la documentation Voyage.
Les embeddings Voyage sont disponibles sur AWS Marketplace. Les instructions pour accéder à Voyage sur AWS sont disponibles ici.
Maintenant que nous savons comment obtenir des embeddings, voyons un bref exemple.
Supposons que nous ayons un petit corpus de six documents à récupérer
documents = [
"The Mediterranean diet emphasizes fish, olive oil, and vegetables, believed to reduce chronic diseases.",
"Photosynthesis in plants converts light energy into glucose and produces essential oxygen.",
"20th-century innovations, from radios to smartphones, centered on electronic advancements.",
"Rivers provide water, irrigation, and habitat for aquatic species, vital for ecosystems.",
"Apple's conference call to discuss fourth fiscal quarter results and business updates is scheduled for Thursday, November 2, 2023 at 2:00 p.m. PT / 5:00 p.m. ET.",
"Shakespeare's works, like 'Hamlet' and 'A Midsummer Night's Dream,' endure in literature."
]
Nous utiliserons d'abord Voyage pour convertir chacun d'eux en vecteur d'embedding
import voyageai
vo = voyageai.Client()
# Embed the documents
doc_embds = vo.embed(
documents, model="voyage-3.5", input_type="document"
).embeddingsLes embeddings nous permettront de faire une recherche sémantique / récupération dans l'espace vectoriel. Étant donné une requête d'exemple,
query = "When is Apple's conference call scheduled?"nous la convertissons en embedding, et effectuons une recherche du plus proche voisin pour trouver le document le plus pertinent en fonction de la distance dans l'espace d'embedding.
import numpy as np
# Embed the query
query_embd = vo.embed(
[query], model="voyage-3.5", input_type="query"
).embeddings[0]
# Compute the similarity
# Voyage embeddings are normalized to length 1, therefore dot-product
# and cosine similarity are the same.
similarities = np.dot(doc_embds, query_embd)
retrieved_id = np.argmax(similarities)
print(documents[retrieved_id])Notez que nous utilisons input_type="document" et input_type="query" pour intégrer respectivement le document et la requête. Plus de spécifications peuvent être trouvées ici.
La sortie serait le 5ème document, qui est en effet le plus pertinent pour la requête :
Apple's conference call to discuss fourth fiscal quarter results and business updates is scheduled for Thursday, November 2, 2023 at 2:00 p.m. PT / 5:00 p.m. ET.Si vous recherchez un ensemble détaillé de livres de cuisine sur la façon de faire du RAG avec des embeddings, y compris des bases de données vectorielles, consultez notre livre de cuisine RAG.
Visitez la page de tarification de Voyage pour les détails de tarification les plus à jour.
Was this page helpful?