Le problème : comment trouver des textes similaires ?
Dans un large corpus, comment trouver des phrases, des paragraphes qui traitent de sujets similaires ?
Ou dit autrement, comment calculer une distance entre 2 textes qui conservent le sens des textes, distance sémantique?
Comment calculer une distance entre 2 textes pour pouvoir dire que
banane
est plus proche de pomme
qu’il ne l’est de avion
;le chien aboie
est plus proche de le chat miaule
qu’il ne l’est de l'avion décolle
, …d(fenêtre, porte) < d(fenêtre, café)
Avant 2013 : compter les mots et leurs fréquences relatives La méthode, rudimentaire, appelée tf-idf, fonctionnait bien pour la détection de spam, nécessite beaucoup de pré-traitement de texte (stopwords, lemmatization, …). OOV, ne peut pas passer à l’échelle pour de grands vocabulaires, sensible aux fautes de frappe, etc etc
Thomas Mikolov @Google Efficient Estimation of Word Representations in Vector Space
Distance sémantique de mots similaires
Queen - Woman = King - Man
France + capital = Paris
Germany + capital = Berlin
mais toujours pas de désambiguïsation contextuelle : les vers de terre = je vais vers la table.
Chaque mot est un vecteur de grande dimension
Une fois que vous avez les embeddings (vecteurs, séries de nombres) de 2 textes (phrases, mots, tokens, …), leur distance est donnée par la similarité cosinus de leurs embeddings
Différentes entreprises optimisent pour différentes priorités—facilité d’utilisation, support multilingue, expertise de domaine, ou reduction des coûts !
OpenAI – Embeddings polyvalents, usage général
Cohere – Embeddings multilingues, orientés entreprise
Voyage AI – Embeddings personnalisables, spécifiques au domaine
Jina AI – Embeddings multimodaux et open-source
Google (Vertex AI) – Embeddings intégrés et évolutifs
La limitation du context window des LLMs
Les Large Language Models ont une context window—une limite sur la quantité de texte qu’ils peuvent traiter à la fois (typiquement 32K-200K tokens, soit ~25-150 pages).
Le défi :
Comment RAG résout cela :
Avant RAG : Vous demandez : “Quelle est notre politique de retour pour l’électronique ?” Le LLM pense : “Je n’ai pas accès aux politiques spécifiques de cette entreprise… Je vais faire une supposition éclairée basée sur les pratiques courantes” ❌
Avec RAG :
RAG agit comme un système de recherche intelligent qui trouve l’aiguille dans la botte de foin, puis donne SEULEMENT cette aiguille au LLM comme contexte. De cette façon, le LLM a toujours les bonnes informations pour répondre avec précision—sans avoir besoin de faire rentrer toute votre base de connaissances dans sa context window.
En résumé : RAG = Retrieval (trouver les bons docs) + Augmented (les ajouter au prompt) + Generation (le LLM crée une réponse à partir de ce contexte)
Problèmes de chunking
Qualité du retrieval
Contrôle de version et fraîcheur
Limitations de contexte
Les hallucinations persistent
Coût et latence
https://colab.research.google.com/drive/1FT5hdlnj23c85CEYvaIc6nh4xDWu7VSW#scrollTo=cYFFIRy-6Ign
extraire tous les adjectifs ou noms dans une nouvelle colonne
construire un nouveau dataframe avec les phrases (garder une référence au dataframe original)
en utilisant la librairie huggingface transformers, construire des embeddings pour chaque phrase