Techniques avancées de RAG dans Albert API
Albert API propose un endpoint POST /v1/rerank qui permet d'appeler des modèles de reranking. Ces modèles sont particulièrement intéressants pour améliorer votre pipeline de RAG (Retrieval Augmented Generation).
Dans ce tutoriel nous allons voir :
pourquoi utiliser un modèle de reranking,
qu'est-ce qu'un modèle reranking,
quand l'utiliser
comment l'utiliser.
Prérequis
Connaissance des notions de RAG, de vector-store, d'embeddings et de chunks
Connaissance de l'upload et de la recherche de documents avec Albert API.
Pour en savoir plus sur ces notions, voir le guide Construire un RAG avec Albert API (à venir).
Pourquoi utiliser le reranking ?
Lorsque vous construisez un système de RAG, vous devez :
Rechercher des documents pertinents dans un vector store
Sélectionner les meilleurs passages
Les envoyer au modèle de génération
Le problème : la recherche vectorielle retourne souvent des résultats approximatifs.
En effet, que ce soit avec une recherche sémantique, lexicale ou hybride, la recherche dans un vector store est une recherche à larges mailles. Elle permet ainsi de retrouver les chunks qui gravitent autour de la requête recherchée mais cela peut prendre dans le filet des chunks relativement éloignés contextuellement.
En conséquence, un moteur vectoriel est très rapide, mais il peut retourner :
des résultats un peu hors sujet
des passages moins pertinents que d'autres
des résultats dans un ordre sous-optimal
Ainsi si certains résultats de recherche sont pertinents, d'autres beaucoup moins. C'est précisément le rôle de l'endpoint /v1/rerank : réordonner les résultats de recherche pour ne garder que les passages les plus pertinents pour une requête.
Qu'est ce que le reranking ?
Le reranking utilise un petit modèle puissant pour :
comparer la requête utilisateur
avec chaque document trouvé
et produire un score de pertinence
Albert API propose un modèle de reranking openweight-rerank. Pour plus d'informations sur ce modèle, voir les modèles disponibles.
Pour connaître quels sont les modèles de reranking disponibles, faites une requête au endpoint /v1/models . Parmi ceux retourné, les modèles de reranking ont le type text-classification.
Un modèle de reranking est généralement un modèle de classification de quelques millions de paramètres spécialement entraîné sur des paires questions-documents. Lors de son entrainement le modèle a appris à inférer sur la base de millions d'exemples des patterns permettant d'attribuer un score à la pertinence d'un document vis-à-vis d'une question.
Quand utiliser le reranking ?
Le reranking est utile lorsque :
vous avez beaucoup de documents
le contexte du LLM est limité (ex : openweight-large)
les capacités du LLM à analyser un grand contexte sont limitées (ex : openweight-small)
Comment utiliser le reranking ?
Fonctionnement général
L'endpoint /v1/rerank prend :
une query
une liste de documents
et retourne les documents triés par pertinence. Chaque document reçoit un score de pertinence.
Pipeline de RAG avec le reranking
Si vous souhaitez un RAG avec 5 chunks pour augmenter le contexte de la requête utilisateur, alors dans un premier temps récupérez 40 chunks proches avec /v1/search. Puis vous affinez avec /v1/rerank pour obtenir les 5 chunks les plus pertinents.
Étape 1. Recherche vectorielle
On commence par récupérer les documents les plus proches de la requête utilisateur.
À ce stade, les documents sont proches sémantiquement, mais pas forcément les plus pertinents pour répondre précisément à la question.
C’est pourquoi on ajoute une étape de reranking.
Le reranking est utile quelque soit la méthode de recherche utilisée (sémantique, lexicale, hybride). Attention toutefois, il peut être inutile, voir contre-productif. Voir les bonnes pratiques pour plus d'informations.
Étape 2. Reranking
Le reranker réévalue les documents retournés par la recherche vectorielle afin de déterminer les plus pertinents pour la requête.
Réponse
Étape 3. Reconstruction des documents triés
On récupère les documents dans le bon ordre à partir des indices retournés.
Étape 4. Génération avec le contexte
On injecte les documents les plus pertinents dans le prompt du LLM comme openweight-small par exemple.
Le modèle utilise alors le contexte fourni pour générer une réponse plus fiable et précise.
Bonnes pratiques
1. Reranker plus de documents que nécessaire
Pipeline recommandée :
Search : limit = 20 à 50
Rerank : top_n = 3 à 10
Cela permet au reranker de choisir les documents les plus pertinents parmi un ensemble suffisamment large.
2. Utiliser des chunks courts
La qualité du reranking dépend fortement de la taille des documents. Nous recommandons 100 à 500 tokens par chunk.
Les documents trop longs diluent l’information importante et réduisent la précision du reranker.
3. Le reranking peut être inutile ou contre-productif
Le reranking est un outil puissant, mais il ne faut pas l'utiliser à chaque fois. Vous devez déterminer si le reranking est nécessaire pour votre cas d'usage en testant des requêtes sur vos documents. Par exemple, la recherche hybride peut obtenir des scores de pertinence dans certains cas plus précis que le reranking. Dans ce cas, ce dernier va éliminer des documents pertinents.
Comme pour toute technique, il faut tester et mesurer les performances à l'aide d'un processus de d'évaluation.
Mis à jour
Ce contenu vous a-t-il été utile ?