Embeddings et rerankers de Voyage AI pour la recherche et le RAG
Introduction
Par le passé, l’IA était principalement utilisée pour analyser et suggérer des informations ; cependant, avec l’avènement de l’IA générative, nous pouvons désormais générer du contenu nouveau et unique. Cela semble intéressant, mais le contenu peut parfois être trompeur.
Voici RAG (Retrieval Augmented Generation), qui optimise la sortie d’un grand modèle de langage en fonction du contexte de la requête. Zilliz et Voyage AI se sont associés pour faciliter la création d’un pipeline RAG, comme nous le verrons plus loin dans l’article. Voyage AI fournit des modèles d’embedding personnalisés spécifiques à des domaines et des rerankers pour la recherche. Nous en aborderons certains dans cet article.
Création de RAG avec Zilliz Cloud Pipelines et Voyage Ai.png
Modèles d’embedding et Voyage AI
Les ordinateurs ne peuvent pas comprendre les informations issues de données telles que du texte ou des images. Nous utilisons des modèles d’embedding pour rendre les ordinateurs capables de comprendre la sémantique derrière les données non structurées. Cette section couvrira les bases des modèles d’embedding, leur utilité dans l’IA générative et les raisons pour lesquelles RAG est l’approche prédominante pour l’IA générative en entreprise.
Un aperçu des modèles d’embedding
Les modèles d’embedding sont des modèles de deep learning qui créent des embeddings vectoriels pour des données données. Ces modèles convertissent le texte, l’image, la voix ou toute forme de données non numériques, voire numériques, fournis en une représentation vectorielle compacte. Cette représentation, également appelée embedding vectoriel, mappe les informations dans un espace vectoriel numérique.
Encodage de données non structurées en embeddings vectoriels
Limites de l’IA générative
L’utilisation de l’IA générative au niveau de l’entreprise monte en flèche grâce à sa capacité fascinante à automatiser des tâches fastidieuses et à produire des résultats avec un minimum d’effort. Même si la Gen AI est remarquable pour nous aider dans divers scénarios, elle présente également des limites. Les modèles GenAI, tels que ChatGPT, sont des modèles génériques entraînés sur des millions ou des milliers de milliards d’entrées de données provenant de plusieurs domaines. Ce fait peut parfois poser problème. Les modèles sont probabilistes et génèrent le mot suivant en fonction du contexte fourni. Lorsque le contexte est limité ou plus récent pour le modèle, ils commencent à halluciner. C’est là que RAG brille.
RAG et comment il réduit les hallucinations
La technique RAG nécessite l’utilisation de modèles d’embedding spécifiques à un domaine pour encoder la requête fournie. Cette requête est ensuite transmise à une base de données vectorielle, où la recherche sémantique est appliquée pour récupérer des embeddings vectoriels contextuels similaires. Tous les documents pertinents provenant de la base de données vectorielle et la requête fournie sont ensuite transmis au modèle. Le modèle utilise les informations supplémentaires et le contexte de la requête pour formuler des résultats pertinents, à jour et précis. De cette façon, l’architecture RAG réduit les hallucinations du modèle et permet d’obtenir un LLM plus robuste et plus fiable.
L’architecture RAG
Maintenant que nous avons abordé les modèles d’embedding et leur rôle dans RAG, examinons quelques modèles d’embedding de Voyage AI. Voyage AI fournit divers modèles d’embedding personnalisés dans de nombreux domaines afin de mettre en œuvre des techniques RAG efficaces et performantes. Ces modèles sont connectés à des bases de données vectorielles, telles que Milvus de Zilliz, pour stocker et récupérer les embeddings vectoriels liés à la requête générée.
Modèles d’embedding Voyage AI
Voyage AI fournit de nombreux modèles d’embeddings différents, efficaces et performants, spécialisés par domaine et à usage général. Ces modèles contribuent de manière significative à la recherche et au RAG. Ils offrent une qualité de récupération supérieure à celle de la plupart des modèles d’embeddings.
Parmi les multiples modèles d’embeddings, les meilleurs incluent voyage-code-2, voyage-law-2 et voyage-large-2-instruct. Voyage AI a développé ces modèles pour des domaines spécifiques tels que le code, le droit, la finance et les domaines multilingues. De plus, nous pouvons personnaliser ces modèles en fonction de nos cas d’utilisation spécifiques. Jetons un coup d’œil à leurs derniers modèles :
- voyage-code-2 : Un modèle très compétent pour fournir du code lié à une requête avec une précision chirurgicale. La figure suivante montre les performances de voyage-code-2 pour la tâche de récupération de code :
analyse des performances de voyage-code-2.png
- voyage-law-2 : Un modèle entraîné pour obtenir le contexte et les embeddings de documents juridiques. Ce modèle fournit les meilleurs résultats pour les documents juridiques à long contexte dans différents domaines et fonctionne mieux sur les corpus à usage général dans différents domaines. Les figures suivantes mettent en évidence les performances de voyage-law-2 :
analyse des performances de voyage-law-2
La figure ci-dessus montre les capacités de performance des modèles d’embeddings de Voyage AI, qui sont classés parmi les meilleurs par le Massive Text Embedding Benchmark (MTEB).
Rerankers et Voyage AI
Nous avons expliqué comment le RAG améliore la qualité des sorties GenAI en réduisant les hallucinations de ces modèles. Cependant, un léger problème reste lié à la fenêtre de contexte des modèles GenAI. La fenêtre de contexte désigne la quantité maximale d’informations que le modèle d’IA peut traiter à un moment donné. Une fenêtre plus petite signifie que le modèle reçoit moins d’informations ; une fenêtre plus grande signifie une augmentation du coût et du temps de traitement.
Un reranker classe les documents récupérés depuis les bases de données vectorielles afin d’obtenir des résultats optimaux, en calculant leur score de pertinence par rapport à la requête fournie. Le classement aide à filtrer les documents les plus pertinents (informatifs) afin qu’ils tiennent dans la fenêtre de contexte et génèrent les résultats les plus précis.
Alors que les techniques RAG récupèrent des embeddings vectoriels pour fournir des informations contextuelles et aider aux recherches, ces modèles reclassent tous ces embeddings récupérés à l’aide d’un score de pertinence afin de fournir les données les plus pertinentes aux LLM.
Architecture simple de reranker
Rerankers de Voyage AI
Voyage AI a développé un modèle de reranker connu sous le nom de rerank-lite-1. Ce modèle Voyage est un reranker généraliste optimisé pour la latence et la qualité. Il dispose d’une fenêtre de contexte de 4000 tokens. La figure suivante montre les performances de ce modèle.
analyse des performances de voyage:ranke-lite-1
Utiliser les embeddings Voyage sur Zilliz Cloud Pipelines
Zilliz et Voyage AI se sont associés pour simplifier la conversion de données non structurées en embeddings vectoriels consultables sur Zilliz Cloud.
Cette section montrera comment intégrer Zilliz Cloud et les modèles d’embeddings de Voyage AI pour simplifier la génération et la récupération d’embeddings. Nous vous montrerons également comment utiliser cette intégration et Cohere (le LLM) pour créer une application RAG. Commençons.
Configurer Zilliz Cloud
La première étape consiste à configurer Zilliz Cloud. Si vous n’avez pas encore de compte Zilliz Cloud, inscrivez-vous gratuitement.
Lors de la première connexion, la console suivante s’affichera à l’écran.
Console Zilliz Cloud pour créer un cluster
- Nous allons créer un cluster selon les besoins. Zilliz propose une offre gratuite pour l’apprentissage, l’expérimentation et le prototypage, qui pourra ensuite être migrée vers différents forfaits de production.
Création d’un nouveau cluster dans Zilliz.png
- Après la création du nouveau cluster, toutes les informations nécessaires à la connexion seront affichées.
Connexion au cluster
L’ID du projet peut être récupéré depuis Projects dans la barre de menu supérieure. Localisez le projet cible et copiez son ID dans la colonne Project ID.
Tableau de bord Projects pour l’ID du projet
- Nous disposons maintenant de tous les éléments nécessaires pour notre connexion au cluster. Il est temps de créer nos pipelines. Nous utiliserons Cohere comme LLM pour l’application RAG. Pour cela, nous installerons
cohere.
%pip install cohere
Voici les imports nécessaires pour ce notebook.
import os
import requests
Dans le code ci-dessous, nous avons configuré nos CLOUD_REGION, CLUSTER_ID, API_KEY et PROJECT_ID :
CLOUD_REGION = 'gcp-us-west1'
CLUSTER_ID = 'your CLUSTER_ID'
API_KEY = 'your API_KEY'
PROJECT_ID = 'your PROJECT_ID'
Zilliz Cloud Pipelines
Zilliz Cloud Pipelines convertissent des données non structurées en une collection de vecteurs consultable, en gérant les processus d’embedding, d’ingestion, de recherche et de suppression. Zilliz Cloud propose trois types de pipelines :
- Pipeline d’ingestion : Convertit des données non structurées en embeddings vectoriels consultables et les stocke dans les bases de données vectorielles Zilliz Cloud. Il inclut diverses fonctions pour transformer les champs d’entrée et préserver des informations supplémentaires pour la récupération.
Pipeline de recherche : Ce pipeline permet la recherche sémantique en convertissant une chaîne de requête en embedding vectoriel et en récupérant les Top-K vecteurs similaires ainsi que leur texte et leurs métadonnées correspondants. Il n’autorise qu’un seul type de fonction.
Pipeline de suppression : Supprime des entités spécifiées d’une collection, en n’autorisant qu’un seul type de fonction.
Pipeline d’ingestion
Dans le pipeline d’ingestion, vous pouvez spécifier des fonctions pour personnaliser son comportement en fonction des données d’entrée. Actuellement, il prend en charge quatre fonctions :
INDEX_DOC: Prend un document en entrée, le divise en segments et génère un embedding vectoriel pour chaque segment. Il mappe un champ d’entrée vers quatre champs de sortie (doc_name, chunk_id, chunk_text et embedding) dans la collection.PRESERVE: Stocke une entrée définie par l’utilisateur comme champ scalaire supplémentaire dans la collection, généralement utilisée pour des métadonnées telles que les informations sur l’éditeur et les tags.INDEX_TEXT: Traite les textes en convertissant chaque texte en embedding vectoriel et en mappant un champ d’entrée (text_list) vers deux champs de sortie (text et embedding).INDEX_IMAGE: Traite les images en générant un embedding d’image, en mappant deux champs d’entrée (image_url et image_id) vers deux champs de sortie (image_id et embedding).
Dans l’extrait de code ci-dessous, nous utiliserons la bibliothèque requests pour envoyer la requête à Zilliz Cloud. Une requête post comprend une URL, des en-têtes et les données à envoyer. Créons notre en-tête :
headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": f"Bearer {API_KEY}"
}
Nous définirons notre collection_name et notre embedding_service dans le code ci-dessous. Le service d’embedding utilisera les modèles Voyage AI, en particulier voyage-2, qui ont démontré des performances exceptionnelles dans les tâches de récupération, la documentation technique et les applications générales.
create_pipeline_url = f"https://controller.api.{CLOUD_REGION}.zillizcloud.com/v1/pipelines"
collection_name = 'Documents'
embedding_service = "voyageai/voyage-large-2"
Dans l’extrait de code ci-dessous, nous définirons la fonction d’indexation pour notre ingestion_pipeline :
data = {
"name": "ingestion_pipeline",
"description": "A pipeline that generates text embeddings and stores title information.",
"type": "INGESTION",
"projectId": PROJECT_ID,
"clusterId": CLUSTER_ID,
"collectionName": collection_name,
"functions": [
{
"name": "index_doc",
"action": "INDEX_DOC",
"language": "ENGLISH",
"embedding": embedding_service
}
]
}
response = requests.post(create_pipeline_url, headers=headers, json=data)
print(response.json())
Le pipelineId sera utilisé plus tard pour ingérer les données dans la base de données. Après cette étape, nous pouvons voir notre collection créée dans le cluster ainsi que notre pipeline d’ingestion :
ingestion_pipe_id = response.json()["data"]["pipelineId"]
print(ingestion_pipe_id)
>> pipe-cf…
Voici la collection créée dans le cloud :
Collection créée dans le cloud
Et notre pipeline d’ingestion ressemble à ceci :
Pipeline d’ingestion dans Zilliz Cloud
Pipeline de recherche
Les pipelines de recherche facilitent la recherche sémantique en convertissant une chaîne de requête en un embedding vectoriel et en récupérant les Top-K vecteurs voisins les plus proches. Le pipeline de recherche inclut la fonction SEARCH_DOC_CHUNK, qui nécessite la spécification du cluster et de la collection dans laquelle effectuer la recherche.
Zilliz prend en charge de nombreuses fonctions. Ici, nous utiliserons SEARCH_DOC_CHUNK, qui prend en entrée une requête utilisateur et renvoie les fragments de documents pertinents à partir de la base de connaissances.
data = {
"projectId": PROJECT_ID,
"name": "search_pipeline",
"description": "A pipeline that receives text and search for semantically similar doc chunks",
"type": "SEARCH",
"functions": [
{
"name": "search_chunk_text",
"action": "SEARCH_DOC_CHUNK",
"inputField": "query_text",
"clusterId": f"{CLUSTER_ID}",
"collectionName": f"{collection_name}",
"embedding": embedding_service
}
]
}
response = requests.post(create_pipeline_url, headers=headers, json=data)
search_pipe_id = response.json()["data"]["pipelineId"]
Nous avons créé nos pipelines d’ingestion et de recherche. Il est temps d’insérer cet article dans notre pipeline d’ingestion et d’exécuter notre pipeline de recherche.
Exécuter le pipeline d’ingestion
Le pipeline d’ingestion peut ingérer des fichiers depuis des services de stockage d’objets comme AWS S3 ou Google Cloud Storage (GCS). Les formats de fichiers acceptés incluent .txt, .pdf, .md, .html, etc. Nous pouvons exécuter le pipeline d’ingestion depuis la console Zilliz. Faisons-le étape par étape.
1. Allez dans Pipelines depuis la gauche et accédez à ingestion_pipeline comme indiqué ci-dessous :
Pipeline d’ingestion créé dans le cloud
2. Après avoir cliqué sur Run, nous serons dirigés vers la page suivante :
Joindre un fichier dans le pipeline d’ingestion
Joignez le fichier texte et exécutez le pipeline. En cas de succès, le fichier texte sera chargé dans la collection. Voici l’aperçu des données :
Aperçu des données de la collection
Exécuter le pipeline de recherche
RAG (génération augmentée par récupération) comporte deux composants principaux : le récupérateur et le LLM. Créer un récupérateur est aussi simple que d’exécuter le pipeline de recherche. Le pipeline de recherche prend la requête en entrée et récupère le fragment le plus pertinent dans la base de données. Dans le code ci-dessous, la fonction retriever prend en entrée la query et topk (le nombre de documents à sélectionner ) et exécute le pipeline de recherche.
def retriver(question, topk):
run_pipeline_url = f"https://controller.api.{CLOUD_REGION}.zillizcloud.com/v1/pipelines/{search_pipe_id}/run"
data = {
"data": {
"query_text": question
},
"params": {
"limit": topk,
"offset": 0,
"outputFields": [
"chunk_text",
"id",
"doc_name"
],
}
}
response = requests.post(run_pipeline_url, headers=headers, json=data)
return [result['chunk_text'] for result in response.json()['data']['result']]
Application RAG utilisant Cohere comme LLM
Après avoir récupéré les documents, nous utiliserons Cohere comme notre LLM. Nous fournirons les documents récupérés à l’API de chat de Cohere, enveloppés dans un prompt, et poserons des questions à leur sujet.
import cohere
co = cohere.Client(api_key="your_api_key")
def chatbot(query, topk):
chunks = retriver(query, topk)
response = co.chat(
model="command-r-plus",
message= f"Given this information: '{[chunk for chunk in chunks]}', generate a response for the following {query}"
)
return response.text
question = "I'm looking for a good model for legal retrieving tasks?"
print(chatbot(question, 2))
Voici la réponse du chatbot :
Based on the provided information, it seems you are specifically interested in a proficient model in legal retrieving tasks. In that case, the model best suits your needs is "voyage-law-2."
Conclusion
Voyage AI fournit des modèles d’embedding et des rerankers personnalisés spécifiques à un domaine pour la recherche avancée. Zilliz Cloud Pipelines intègre de manière transparente les modèles Voyage AI avec Zilliz Cloud, ce qui rend le développement RAG beaucoup plus rationalisé.
Cet article a présenté les modèles d’embedding et les rerankers populaires de Voyage AI ainsi que leur intégration avec Zilliz Cloud. Nous avons également montré comment créer un RAG avec Voyage AI, Zilliz Cloud Pipeline et Cohere.
Pour plus de détails, regardez le replay de la présentation de Tengyu Ma lors du Unstructured Data Meetup by Zilliz.
Continuer à lire

A Few Notes from Databricks Data + AI Summit 2026: Why the Data Layer Matters Again
James Luan shares notes from Databricks Data + AI Summit 2026 on why production AI is pushing the data layer back to the center of infrastructure.

Data Deduplication at Trillion Scale: How to Solve the Biggest Bottleneck of LLM Training
Explore how MinHash LSH and Milvus handle data deduplication at the trillion-scale level, solving key bottlenecks in LLM training for improved AI model performance.

Our Journey to 35K+ GitHub Stars: The Real Story of Building Milvus from Scratch
Join us in celebrating Milvus, the vector database that hit 35.5K stars on GitHub. Discover our story and how we’re making AI solutions easier for developers.



