Revenir au contenu principal

Améliorer la récupération et RAG avec le fine-tuning du modèle d’incorporation

Improving Retrieval and RAG with Embedding Model Finetuning

Summary

  • Comment le fine-tuning des modèles d’embedding améliore la récupération et la précision de RAG
  • Principaux gains de performance dans tous les benchmarks
  • Démarrage avec le fine-tuning d’embedding sur Databricks

Finetuning des modèles d’incorporation pour une meilleure récupération et un meilleur RAG

TL;DR : Le finetuning d’un modèle d’incorporation sur des données du domaine peut améliorer considérablement la recherche vectorielle et la précision de la génération augmentée par récupération (RAG). Avec Databricks, il est facile d’effectuer le finetuning, de déployer et d’évaluer les modèles d’incorporation afin d’optimiser la récupération pour votre cas d’utilisation spécifique, en tirant parti des données synthétiques sans étiquetage manuel.

Pourquoi c’est important : Si votre système de recherche vectorielle ou RAG ne récupère pas les meilleurs résultats, le finetuning d’un modèle d’incorporation est un moyen simple mais puissant d’améliorer les performances. Que vous traitiez des documents financiers, des bases de connaissances ou de la documentation de code interne, le finetuning peut vous donner des résultats de recherche plus pertinents et de meilleures réponses LLM en aval.

Ce que nous avons constaté : Nous avons affiné et testé deux modèles d’incorporation sur trois jeux de données d’entreprise et nous avons constaté des améliorations majeures dans les métriques de récupération (Rappel@10) et les performances RAG en aval. Cela signifie que le finetuning peut changer la donne en matière de précision sans nécessiter d’étiquetage manuel, en tirant parti uniquement de vos données existantes.

Vous voulez essayer le finetuning d’incorporation ? Nous fournissons une solution de référence pour vous aider à démarrer. Databricks facilite la recherche vectorielle, le RAG, le reclassement et le finetuning d’incorporation. Contactez votre responsable de compte Databricks ou votre architecte de solutions pour plus d’informations.

Le finetuning dans le domaine peut améliorer la précision de la récupération
Figure 1 Le finetuning dans le domaine peut améliorer la précision de la récupération. Rappel@10 pour deux modèles d’incorporation sur trois jeux de données. « FT » = meilleur modèle affiné après un balayage d’hyperparamètres. Le modèle OpenAI est text-embedding-3-large.

Pourquoi affiner les incorporations ?

Les modèles d’incorporation alimentent les systèmes modernes de recherche vectorielle et RAG. Un modèle d’incorporation transforme le texte en vecteurs, ce qui permet de trouver du contenu pertinent en fonction du sens plutôt que des simples mots clés. Toutefois, les modèles prêts à l’emploi ne sont pas toujours optimisés pour votre domaine spécifique, c’est là qu’intervient le finetuning.

Le finetuning d’un modèle d’incorporation sur des données spécifiques au domaine est utile de plusieurs façons :

  • Améliorer la précision de la récupération : Les incorporations personnalisées améliorent les résultats de recherche en s’alignant sur vos données.
  • Améliorer les performances RAG : Une meilleure récupération réduit les hallucinations et permet des réponses d’IA générative plus ancrées.
  • Améliorer les coûts et la latence : Un modèle affiné plus petit peut parfois surpasser des alternatives plus grandes et coûteuses.

Dans ce billet de blog, nous montrons que le finetuning d’un modèle d’incorporation est un moyen efficace d’améliorer la récupération et les performances RAG pour les cas d’utilisation d’entreprise spécifiques aux tâches.

Résultats : Le finetuning fonctionne

Nous avons affiné deux modèles d’incorporation (gte-large-en-v1.5 et e5-mistral-7b-instruct) sur des données synthétiques et les avons évalués sur trois jeux de données de notre Domain Intelligence Benchmark Suite (DIBS) (FinanceBench, ManufactQA et Databricks DocsQA). Nous les avons ensuite comparés au text-embedding-3-large d’OpenAI.

Principaux points à retenir :

  • Le finetuning a amélioré la précision de la récupération sur les jeux de données, surpassant souvent considérablement les modèles de base.
  • Les incorporations affinées ont été aussi performantes, voire meilleures, que le reclassement dans de nombreux cas, ce qui montre qu’elles peuvent être une solution autonome forte.
  • Une meilleure récupération a conduit à de meilleures performances RAG sur FinanceBench, démontrant des avantages de bout en bout.

Performances de récupération

Après avoir comparé trois jeux de données, nous avons constaté que le finetuning de l’incorporation améliore la précision sur deux de ces jeux de données. La figure 1 montre que pour FinanceBench et ManufactQA, les incorporations affinées ont surpassé leurs versions de base, battant parfois même le modèle API d’OpenAI (gris clair). Pour Databricks DocsQA, toutefois, la précision de text-embedding-3-large d’OpenAI surpasse tous les modèles affinés. Il est possible que cela soit dû au fait que le modèle a été entraîné sur la documentation publique de Databricks. Cela montre que si le finetuning peut être efficace, il dépend fortement du jeu de données d’entraînement et de la tâche d’évaluation.

Finetuning vs. reclassement

Nous avons ensuite comparé les résultats ci-dessus avec le reclassement basé sur l’API à l’aide de voyageai/rerank-1 (figure 2). Un reclasseur prend généralement les k meilleurs résultats récupérés par un modèle d’incorporation, reclasse ces résultats par pertinence par rapport à la requête de recherche, puis renvoie les k meilleurs résultats reclassés (dans notre cas, k=30 suivi de k=10). Cela fonctionne parce que les reclasseurs sont généralement des modèles plus grands et plus puissants que les modèles d’incorporation et modélisent également l’interaction entre la requête et le document d’une manière plus expressive.

Le finetuning dans le domaine peut être compétitif avec le reclassement
Figure 2 Le finetuning dans le domaine peut être compétitif avec le reclassement. Rappel@10 sur trois jeux de données. « FT » = meilleur modèle affiné après un balayage d’hyperparamètres. Le reclasseur utilisé dans toutes ces expériences est voyageai/rerank-1 sans finetuning. Le récupérateur « openai » ici est text-embedding-3-large.

Voici ce que nous avons constaté :

  • Le finetuning de gte-large-en-v1.5 a surpassé le reclassement sur FinanceBench et ManufactQA.
  • Le text-embedding-3-large d’OpenAI a bénéficié du reclassement, mais les améliorations ont été marginales sur certains jeux de données.
  • Pour Databricks DocsQA, le reclassement a eu un impact plus faible, mais le finetuning a quand même apporté des améliorations, ce qui montre la nature dépendante du jeu de données de ces méthodes.

Les reclasseurs entraînent généralement une latence et un coût d’inférence supplémentaires par requête par rapport aux modèles d’incorporation. Toutefois, ils peuvent être utilisés avec des bases de données vectorielles existantes et peuvent, dans certains cas, être plus rentables que la réincorporation des données avec un modèle d’incorporation plus récent. Le choix d’utiliser ou non un reclasseur dépend de votre domaine et de vos exigences en matière de latence/coût.

Le finetuning améliore les performances RAG

Pour FinanceBench, une meilleure récupération s’est traduite directement par une meilleure précision RAG lorsqu’elle est combinée à GPT-4o (voir l’annexe). Toutefois, dans les domaines où la récupération était déjà forte, comme Databricks DocsQA, le finetuning n’a pas beaucoup ajouté, ce qui souligne que le finetuning fonctionne mieux lorsque la récupération est un goulot d’étranglement clair.

UN LEADER 5X

Gartner® : Databricks, leader des bases de données cloud

Comment nous avons affiné et évalué les modèles d’incorporation

Voici quelques-uns des détails les plus techniques de notre génération de données synthétiques, de notre finetuning et de notre évaluation.

Modèles d’incorporation

Nous avons affiné deux modèles d’incorporation open source :

  • gte-large-en-v1.5 est un modèle d’incorporation populaire basé sur BERT Large (434 millions de paramètres, 1,75 Go). Nous avons choisi d’exécuter des expériences sur ce modèle en raison de sa taille modeste et de sa licence ouverte. Ce modèle d’incorporation est également actuellement pris en charge sur l’API de modèle de fondation Databricks.
  • e5-mistral-7b-instruct appartient à une nouvelle classe de modèles d’incorporation construits au-dessus de LLM forts (dans ce cas, Mistral-7b-instruct-v0.1). Bien qu’e5-mistral-7b-instruct soit meilleur sur les bancs d’essai d’incorporation standard tels que MTEB et soit capable de gérer des invites plus longues et plus nuancées, il est beaucoup plus grand que gte-large-en-v1.5 (car il a 7 milliards de paramètres) et est légèrement plus lent et plus coûteux à servir.

Nous les avons ensuite comparés au text-embedding-3-large d’OpenAI.

Jeux de données d’évaluation

Nous avons évalué tous les modèles sur les jeux de données suivants de notre Domain Intelligence Benchmark Suite (DIBS) : FinanceBench, ManufactQA et Databricks DocsQA.

Jeu de données Description Nombre de requêtes Nombre de corpus
FinanceBench Questions sur les documents SEC 10-K générés par des experts humains. La récupération se fait sur des pages individuelles d’un sur-ensemble de 360 dépôts SEC 10-K. 150 53 399
ManufactQA Questions et réponses échantillonnées à partir des forums publics d’un fabricant d’appareils électroniques. 6 787 6 787
Databricks DocsQA Questions basées sur la documentation Databricks disponible publiquement générée par des experts Databricks. 139 7 561

Nous signalons recall@10 comme notre principale métrique de récupération ; cela mesure si le document correct se trouve dans les 10 premiers documents récupérés.

La référence absolue pour la qualité du modèle d’incorporation est le banc d’essai MTEB, qui intègre des tâches de récupération telles que BEIR ainsi que de nombreuses autres tâches de non-récupération. Bien que des modèles tels que gte-large-en-v1.5 et e5-mistral-7b-instruct fonctionnent bien sur MTEB, nous étions curieux de voir comment ils fonctionnaient sur nos tâches d’entreprise internes.

Données d’entraînement

Nous avons entraîné des modèles distincts sur des données synthétiques adaptées à chacun des bancs d’essai ci-dessus :

Jeu d’entraînement Description Nombre d’échantillons uniques
FinanceBench synthétique Requêtes générées à partir de 2 400 documents SEC 10-K ~6 000
Databricks Docs QA synthétique Requêtes générées à partir de la documentation publique de Databricks. 8 727
ManufactQA Requêtes générées à partir de PDF de fabrication électronique 14 220

Afin de générer le jeu d’entraînement pour chaque domaine, nous avons pris les documents existants et généré des requêtes d’échantillon basées sur le contenu de chaque document à l’aide de LLM tels que Llama 3 405B. Les requêtes synthétiques ont ensuite été filtrées pour la qualité par un LLM en tant que juge (GPT4o). Les requêtes filtrées et leurs documents associés ont ensuite été utilisés comme paires contrastives pour le finetuning. Nous avons utilisé des négatifs en lots pour l’entraînement contrastif, mais l’ajout de négatifs durs pourrait encore améliorer les performances (voir l’annexe).

Réglage des hyperparamètres

Nous avons effectué des balayages sur :

  • Taux d’apprentissage, taille du lot, température softmax
  • Nombre d’époques (1 à 3 époques testées)
  • Variations d’invite de requête (par exemple, « Requête : » vs. invites basées sur des instructions)
  • Stratégie de regroupement (regroupement moyen vs. regroupement du dernier jeton)

Tout le finetuning a été effectué à l’aide des bibliothèques open source mosaicml/composer, mosaicml/llm-foundry et mosaicml/streaming sur la plateforme Databricks.

Comment améliorer la recherche vectorielle et le RAG sur Databricks

Le finetuning n’est qu’une approche pour améliorer la recherche vectorielle et les performances RAG ; nous énumérons quelques approches supplémentaires ci-dessous.

Pour une meilleure récupération :

  • Utiliser un meilleur modèle d’incorporation : De nombreux utilisateurs travaillent sans le savoir avec des incorporations obsolètes. Le simple fait de remplacer un modèle plus performant peut entraîner des gains immédiats. Consultez le classement MTEB pour les meilleurs modèles.
  • Essayer la recherche hybride : Combiner des incorporations denses avec une recherche basée sur des mots clés pour une précision améliorée. Databricks Vector Search facilite cela avec une solution en un clic.
  • Utiliser un reclasseur : Un reclasseur peut affiner les résultats en les réorganisant en fonction de la pertinence. Databricks fournit cela en tant que fonctionnalité intégrée (actuellement en préversion privée). Contactez votre responsable de compte pour l’essayer.

Pour un meilleur RAG :

Démarrer avec le finetuning sur Databricks

Le finetuning des incorporations peut être une victoire facile pour améliorer la récupération et le RAG dans vos systèmes d’IA. Sur Databricks, vous pouvez :

  • Affiner et servir des modèles d’incorporation sur une infrastructure scalable.
  • Utiliser des outils intégrés pour la recherche vectorielle, le reclassement et le RAG.
  • Tester rapidement différents modèles pour trouver ce qui fonctionne le mieux pour votre cas d’utilisation.

Prêt à l’essayer ? Nous avons créé une solution de référence pour faciliter le finetuning : contactez votre responsable de compte Databricks ou votre architecte de solutions pour y accéder.

Annexe

 

Taille

FinanceBench Rappel@10

ManufactQA Rappel@10

DocsQA Rappel@10

Base

Affiné

Base

Article original

Ne manquez jamais un article Databricks

Abonnez-vous à notre blog et recevez les derniers articles dans votre boîte mail.