RAG : Retrieval Augmented Generation


context

donc comment utiliser l’IA pour converser avec une base documentaire en évitant les hallucinations et autres bourdes.

Differentes approches


Comment résoudre:

Idée:

Ajouter la bonne info dans le prompt

Principe:

<Question>

prends en compte le texte ci-dessous pour répondre

<Information, retrieved>

Version plus élaborée du prompt

Agissant en tant que
{insérer un rôle spécifique : enseignant, analyste, geek, auteur, …}

Utilise les informations suivantes :
{insérer les chunks de texte résultants}

Pour répondre à cette question :
{insérer la question initiale}

Donc super simple.

La difficulté n’est pas dans le prompt utilisateur mais dans la partie retrieval

Comment identifier les documents relatifs à la question / query ?


L’approche RAG

On vectorise un corpus de document

L’utilisateur pose sa question : la query

distance entre deux textes vectorisés : cosine similarity

A ce stade on a 2 questions non résolues

Chunk

voir mon post sur le sujet

On peut jouer sur

Vectorisation

Il y a de nombreux modeles de vectorisation disponibles

voici la strategie de choix selon Mistral

Les points 1, 2, 3 et 7 me semblent importants


Stratégie pour choisir un modèle d’embeddings en RAG

1. Langues

2. Taille des chunks

3. Open-source vs Propriétaire

4. Installation locale vs API

5. Performances

6. Adaptation au domaine

7. Outils d’évaluation

À retenir :


Merci Mistral :)

Sur la méthode de chunking, j’ai du mal à croire qu’un split basé juste sur la longueur de l’extrait donne de bons resultats, meme avec chevauchement / fenetre coulissante.

Garbage in => Garbage out

Voir XKCD


Reste la question

Combien de documents inclure dans le prompt ?

=> 100% empiririque


Reranking

Le systeme retourne N documents similaires en rapport à la question de depart à partir d’un modele de vectorisation censé conserver la semantique des documents.

Ces modeles sont generiques et utiles pour vectoriser de grande quantité de docs

Embedding Global

Reranking / Cross-Encoder


recap


Evaluation en bout de chaine avec RAGAS


Vector Store

Comment matcher 2 vecteurs le plus vite possible

Calculer le cosine sim de la query vs tous les documents => prends trop de temps


Weaviate

cours court

Plusieurs methode d’insertion

Possible de stocker des meta données => categories, numerique etc et donc de filtrer sur ces attributs

Plusieurs methodes de recherche

voir https://academy.weaviate.io/courses/wa050-py/m2/p3


weaviate.io

notebook


Ollama


Simon Willison - LLM

uv tool install llm

Inference rapide