RAG explique les origines et les fondements de :
Avez-vous déjà cherché "guide de déploiement " et n’avez rien obtenu, même s’il y a un article sur les SSK4publication à la productionMSC5 RAG M SK6RetrievalM SK7Augmented GenerationMska8 résout cela en comprenant le sensMske9 non seulement les mots clésM Ska10 Cette série vous montre comment le RAG est arrivéMSKA11 comment il fonctionne sous le capuchonM ska12 et comment construire des systèmes de production Mska13 De la recherche sémantique à l’AIMská14 Q puissanteMaskan15A avec citationsMsaka16tous avec C œuvrantMasca17 exemples de codeMlaska18
Introduction
Navigation de la série 📖 Il s’agit de la partie 1 du RAG.
- Partie 1: Origines et fondements du RAG (le présent articleM SK1 - Quels sont les emplacements, pourquoi ils sont importants
- Partie 2: Architecture et éléments internes du RAG Bases de données vectorielles
- Partie 3: RAG dans la pratique - Établissement de systèmes RAG complets
- Partie 4a: ONNX & Mise en œuvre de la garantie - CPU- fondation de recherche sémantique conviviale
- Partie 4b: Recherche sémantique en action - Typeahead , recherche hybride, et composants de l'interface
- Pièce 5: Recherche hybride & AutoM SK2Indexage - Modèles d'intégration de la production
- Partie 6: GraphRAG - Graphiques de connaissances pour le corpus
RAG (Retrieval -Augmented Generation) a été développé pour rendre l’AI plus intelligenteM SK3 donnant aux LLMs accès à l’information qu’ils n’avaient pas reçue de formation dans le domaine de la gestion des ressources humainesMSC4t trained on m’a dit sur . Mais c’est ce qui est intéressantMST6 MST7 M ST8 que cette technologie offre des possibilités bien au-delà des chatbots d’AIM ST9 Elle permet une recherche sémantique sur les sites WebM st10 recommandation du contenuMst11 aide à écrireMstr12 et gestion du savoirM str13
La double nature: Le RAG peut aider les clients (la recherche meilleureM SK1les réponses exactes avec des citations ) ou exploiter celles-ci (les recommandations manipulatives M SK4la mémoire des critiques négatives ,le surfacing upsell content ). La différence n’est pas la technologie —elle est l’intention de '. Une recherche sémantique qui aide les utilisateurs à trouver ce qu’ils ont réellement besoin MSC11 grandiose MST12 Une priorité sur ce qui vous permet d’obtenir le plus d’argent tout en appartenant utile M ST13 C’est ce que signifie le territoire du modèle foncé de MST14MST15 et c’est pourquoi il importe de comprendre comment cela fonctionne M st17
Voici la vérité sur RAG: Il semble intimidant. Emplacements vecteurs? Modèles de transformateurs ? Caches KVM SK3 Mais comme tout le reste du logicielMSC4 c’est seulement comprendre comment il fonctionneMST6 Vous n’avez pasMst7 besoin de connaître la mathématique derrière les architectures de transformeurs plus que vous ne devez comprendre l’assemblage pour écrire CM st8
RAG en trois étapes:
- Transformer le texte en chiffres (embeddings)
- Trouver des chiffres similaires (cherche vecteur)
- Utilisez ce que vous avez trouvé (display results or feed to LLM)
Que'c'est-à-dire qu'il . Le reste est des détails de la mise en oeuvre.
Cette série vous montre comment bâtir des systèmes RAG avec un code de travail C# . Pas d'écoulement à la main, . Pas de hypothèses,. Juste les pièces et leur assemblage.
Ce que vous apprendrez dans cette série
- Partie 1: Comment a-t-on créé le RAG et pourquoi cela est important
- Partie 2: Architecture technique complète et internes LLM
- Partie 3: Établissement de systèmes réels avec des exemples de code
Par la suite, je vous montrerai aussi comment construire des systèmes RAG complets incluant :
- CPU-recherche sémantique conviviale avec les embeddings ONNX (Parte 4)
- Self- bases de données de vecteurs gérées avec Qdrant (Parte 4)
- Recherche hybride et indexation automatique (Parte 5)
Qu'est-ce que RAG?
Récupération-Generation améliorée: Trouver des renseignements pertinents, puis les utiliser.
flowchart LR
A[User Question] --> B[Retrieve Relevant Info]
B --> C[Retrieved Documents/Context]
C --> D[Generate Response]
A --> D
D --> E[Grounded, Accurate Answer]
style B stroke:#f9f,stroke-width:2px
style D stroke:#bbf,stroke-width:2px
Sans RAG: Utilisateur demande → LLM fait des suppositions à partir de la mémoire → pourrait halluciner
Avec RAG: Utilisateur demande → Trouver les documents pertinents → Réponses du LLM à l'aide de ces documents MSC2 fondées sur la réalité
// Without RAG: Hope the LLM knows
var answer = await llm.GenerateAsync("How do I deploy Docker?");
// Risk: Might make up outdated or wrong steps
// With RAG: Give it the docs
var relevantDocs = await vectorSearch.FindSimilar("How do I deploy Docker?");
var context = string.Join("\n", relevantDocs.Select(d => d.Text));
var answer = await llm.GenerateAsync($"Context: {context}\n\nQuestion: How do I deploy Docker?");
// Result: Answer based on YOUR actual Docker deployment docs
Perspectives clés: Séparation de l’entreposage des connaissances (recherche)de la justification (LLMM SK3Mise à jour vos dossiersMSC4la recherche demeure couranteMST5 Aucun recyclage n’est nécessaireMSP6
D’où provient le RAG?
Le RAG s’appuie sur des décennies de recherche et de recherche NLP. La compréhension de cette histoire vous permet d’apprécier pourquoi le RAG est conçu comme il l’est.
Recherche traditionnelle (pre-2010sM SK2
Mot clé-recherche fondée:
- TF-IDF: Fréquence du terme × fréquence inverse des documents - mots courants moins importants
- TÉU, TPAC, TPMD, TPG: Le classement probabiliste - demeure la ligne de référence pour la recherche par mots clés
- Correspondance floue:
- Soundex: Algorithme phonétique ("SmithM SK2 correspond à "Smythe")
- Distance de Levenshtein: Établir la distance ( Combien d'insertions?
- N-Grames: CharacterM SK1 séquences de mots pour le match partiel
Le problème: Ces éléments sont conformes caractères, non le sens. Rechercher " orchestration du conteneur" et vous gagnerezM SK3 ne trouvera pas "Arme de dockerMSC5 à moins que ces mots exacts n’apparaissentMNK6 Ils pouvaient traiter les typos mais non la sémantiqueMRK7
Réponse aux questions préliminaires (2010s)
Watson (IBMM SK1 2011):
- Récupération combinée avec le raisonnement fondé sur la règle-
- Won Jeopardy! mais a besoin d’une main massive-crafted knowledge engineering
- On s'est toujours fortement appuyé sur le matchage de mots clés
Modèles de compréhension de lecture:
- Peut extraire des réponses de passages fournis
- Mais vous devriez leur donner le passage approprié d'abord.
- Aucune recherche sémantique pour trouver ce passage
La révolution de l’apprentissage approfondi (2017+)
Transformateurs (2017): "Attention est tout ce dont vous avez besoin"
- Réseaux neuronaux capables de comprendre le contexte
- Fondation de tout ce qui a suivi
BERT (2018):
- Compréhension contextuelle de la langue
- "BanqueM SK1 signifie des choses différentes dans "banque riveraine" comparativement à "banques d’épargneMSC5
- Peut générer des embeddings qui captent le sens
GPT-2/3 M SK1
- Grands modèles linguistiques qui pourraient produire un texte cohérent
- Mais limitée à leurs données de formation
- Il y a eu des problèmes de hallucinations.
Représentations de vecteurs denses:
- Texte → nombres significatifs dans un espace hautement spatial
- Signes similaires → vecteurs voisins
- Cela a rendu possible la recherche sémantique.
BART (Facebook AIM SK1 Octobre 2019):
- Transformer bidirectionnel et automatique-Regressif par Mike Lewis et al.
- Encoder combiné BERT-like avec décodeur GPTM SK1like
- Dénoyer l'autoencoder formé par un texte corrompu puis le reconstruire
- Excellente pour les tâches de production et de compréhension du texte
- C'est le fondement du RAG.
M2MMSC1 (Facebook AIM SK3 Octobre 2020):
- Premier modèle de traduction multilingue
- Traduction directe entre les langues 100 sans pivot anglais
- 2,200 directions linguistiques (10x plus que les modèles antérieurs
- Les transformateurs montrés pouvaient traiter des tâches linguistiques massives cross-
Exemple réelle-exemple mondial: Mon Outil de traduction des machines neuronales utilise le BART comme modèle de traduction en rétroaction lorsque les services primaires ne sont pas disponibles, démontrant comment ces modèles fondés sur des transformateurs - sont devenus des éléments de base pratiques pour les systèmes de production.
La naissance du RAG moderne (mai 2020)
Le document seminal "Récupération-Generation améliorée des connaissances-Taxes importantes de PNL" par Patrick Lewis et alM SK1 (Facebook AI Research) a officiellement introduit le RAGMSC4 construit directement sur BARTMST5
Ce qu’ils ont combiné:
- Récupération du passage dense (DPR) - représentations vectorielles apprisesM SK3 non mots clés
- Générateur BART - le modèle seq2seq de 2019
- Fin -à-définir l'architecture différenciable - récupérer et produire ensemble
Les résultats: Les systèmes RAG ont dépassé les modèles beaucoup plus grands sur le plan du savoir-tasses intensives tout en étant plus efficaces et à jourM SK1to-dateMSC3 Vous pourriez mettre à jour la base de connaissances sans recyclage du modèle .
Pourquoi le RAG a explosé (2023-Present)
ChatGPT, GPT -4, et Claude a fait du RAG un élément essentiel
- Problème des hallucinations - Les LLM se fondent sur des faits confidentiels. Le RAG justifie les réponses dans des documents réels .
- Élimination des connaissances - Les LLM formés sur des données 2021 ne connaissent pas les événements
- Données privées - Les LLM peuvent ' ne pas avoir accès à votre entreprise M SK2 les dossiers internes . le RAG peut
- Coût - FaibleM SK1Le réglage des LLM est coûteux ($10K-100K+). Le RAG est bon
- Expliquement - Le GRA peut citer des sources , ce qui le rend vérifiable et digne de confiance
Aujourd’hui (2024-2025): RAG est la norme de facto pour les systèmes d’AI de production qui ont besoin d’exactitude et de vérifiabilité. Chaque grande entreprise d’IA offre des outils RAG.
Comment fonctionne le RAG: Le grand tableau
Avant de plonger dans les détails techniques (que nous 'couvrirons dans la partie
Les trois phases
Les systèmes RAG fonctionnent en trois phases distinctes:
Phase 1: Indexage (OneM SK2Établissement du temps)
flowchart LR
A[Your Documents] --> B[Split into Chunks]
B --> C[Generate Embeddings]
C --> D[Store in Vector DB]
style C stroke:#f9f,stroke-width:2px
style D stroke:#bbf,stroke-width:2px
Que se passe-t-il:
- Prenez votre base de connaissances (docs, posts sur le blogM SK2 manuels )
- Partitionner en blocs gérés (par.
- Convertre chaque tronçon à un vecteur embedding (array of numbers)
- Entreposer les vecteurs dans une base de données optimisée pour la recherche de similitude
Concept clé: Des significations similaires produisent des vecteurs semblables,, c'est-à-dire que M SK1Contenant de docker" et "Plateforme de conteneurisationMSC4 se terminent étroitement dans l'espace vectorielMNK5
Phase 2: Récupération (Toutes les demandes)
flowchart LR
A[User Question] --> B[Generate Query Embedding]
B --> C[Search Vector DB]
C --> D[Top K Most Similar Chunks]
style B stroke:#f9f,stroke-width:2px
style C stroke:#bbf,stroke-width:2px
Que se passe-t-il:
- Utilisateur pose une question
- Convertre la question à un vecteur (le même modèle utilisé pour l'indexationM SK1
- Trouver les vecteurs les plus similaires dans la base de données
- Retourner la partie K supérieure des morceaux les plus pertinents (habituellement 3-10)
Pourquoi cela fonctionne: "Comment je déploie les conteneursM SK1 (query) est sémantiquement similaire aux fragments sur le déploiement de DockerMSC4 même si les mots exacts diffèrent
Phase 3: Génération (Toutes les demandesM SK2
flowchart TB
A[User Question] --> B[Build Prompt]
C[Retrieved Context] --> B
B --> D[LLM]
D --> E[Generated Answer with Citations]
style B stroke:#f9f,stroke-width:2px
style D stroke:#bbf,stroke-width:2px
Que se passe-t-il:
- Prenez la question de l’utilisateur'
- Prendre les tronçons de contexte récupérés
- Construct a prompt: M SK1Given this context ..., answer this question..."
- Envoyer à LLM pour la génération
- LLM produit une réponse fondée sur le contexte fourni
La magie: Le LLM ne peut halluciner des faits qui n’apparaissent pas dans le contexte. Il ne peut que synthétiser et expliquer ce qu’il fournit.
Un exemple simple
Let's tracer une demande par le système:
Utilisateur demande: "Comment puis-je utiliser Docker Compose?"
Étape 1 - RecouvrementM SK2
Query embedding: [0.234, -0.891, 0.567, ...]
Search vector DB for similar embeddings...
Retrieved chunks:
1. "Docker Compose is a tool for defining multi-container applications..." (similarity: 0.92)
2. "To use Docker Compose, create a docker-compose.yml file..." (similarity: 0.87)
3. "The docker-compose up command starts all services..." (similarity: 0.83)
Étape 2 - générationM SK2
Prompt to LLM:
"Context:
[1] Docker Compose is a tool for defining multi-container applications...
[2] To use Docker Compose, create a docker-compose.yml file...
[3] The docker-compose up command starts all services...
Question: How do I use Docker Compose?
Answer (use the context above):"
LLM Response:
"To use Docker Compose [1], start by creating a docker-compose.yml file [2] that
defines your services. Then run 'docker-compose up' to start all services [3]..."
Résultat: Réponse exacte avec des citations implicites de votre documentation.
RAG vs. Autres approches
Pour comprendre quand utiliser le RAG ( et quand ne pas le faire ), il faut comparer celui-ci à des solutions de remplacement.
RAG vs. FineM SK1Tuning
| Aspect | RAG | FineM SK3Tuning S | |||
|---|---|---|---|---|---|
| Mise à jour des connaissances | Immédiat (juste mettre à jour la base de connaissances) | Require une nouvelle formation ≥ | |||
| Coût | Basse (entreposage + emplacement ) SMK4 élevée | (temps de formation sur l'ordinateur général | ) | ||
| Précision | Basé sur des sources | Peut halluciner | |||
| Customisation | Limitée à la récupération | ||||
| Expliquement | élevée ( peut citer des sources) | faible ( boîte noire) | |||
| Le meilleur pour | ConnaissancesM SK1tâches intensives | Stil/adaptation au format |
Quand utiliser Fine-Tuning:
- Vous avez besoin du modèle pour apprendre un style ou Format
- Vous avez un grand ensemble de données nettoyé,
- Vous avez besoin du modèle pour internaliser échantillons, non des faits
- Exemple: Faire écrire GPT comme Shakespeare
Quand utiliser RAG:
- Vous avez besoin l'exactitude des faits avec des citations
- Votre base de connaissances change fréquemment
- Vous avez des données privées/propriété
- La question du coût et de la simplicité
- Exemple: Chatbot de soutien à la clientèle ( mon entreprise ' mes dossiers changent chaque semaineM SK3
Pouvez-vous combiner les deux ? Oui! Très bonM SK1tune pour le style, RAG pour les faits .
RAG vs. Contexte long Windows
Les LLM modernes ont des fenêtres contextuelles énormes (GPT-4: 128K tokensM SK3 Claude: |200 |K token | ). | Pourquoi ne pas simplement jeter tous vos documents dans le contexte?
Problèmes avec un contexte long:
- Coût: Les barèmes de prix avec les tokens - $10-100 par demande s'ajoute rapidement
- Délai: Le traitement des tokens 100K prend du temps
- Perte au milieu: Les LLM se heurtent à la difficulté d’utiliser l’information au milieu de contextes longs
- Dilution: L'information pertinente est enfouie dans le bruit
- Limites pratiques: Vous pouvez ' ne pas tenir compte des documents de votre entreprise tout entière ' dans le contexte
Lorsque le contexte long a sens:
- Un document de grande taille unique (eM SK1g., analysant un contrat )
- Tout est pertinent (il n'est pas nécessaire de filtrer
- Le coût n’est pas une préoccupation
- Volume de la demande faible
Quand le RAG a sens:
- Grande base de connaissances (millions de documentsM SK1
- Besoin de trouver un sous-ensemble pertinent
- Volume de demande élevé (cost mattersM SK1
- Mise à jour des connaissances en temps réel-
Pratiques exemplaires: Utilisez RAG pour sélectionner le contenu le plus pertinent, puis utilisez un contexte long pour ce sous-ensemble.
RAG vs. Prompting with Examples
Il y a peu de -promption des prises de shot (données d'exemples dans le prompt) est une ligne de base simpleM SK3
Exemple de prompt:
Examples:
Q: What is Docker?
A: Docker is a containerization platform...
Q: How does Kubernetes work?
A: Kubernetes orchestrates containers...
Q: What is my new question?
A: [LLM generates answer]
Limitations:
- Limité à ce qui convient dans la fenêtre contextuelle
- Curation manuelle des exemples
- Nâ€TMest-ce pas le cas pour les grandes bases de connaissances?
- Aucune recherche sémantique - vous sélectionnez manuellement des exemples
Amélioration du RAG:
- Trouve automatiquement les meilleurs exemples (par la recherche de similitude)
- Scales to unlimited examples (only top K sent to LLM)
- Adaptation à la demande (des demandes différentes reçoivent des exemples différents)
Vous pouvez considérer le RAG comme "un petit nombre d’automatisés -une impulsion de tir à l’échelle
Recherche hybride: RAG + Recherche traditionnelle
Vous pouvez combiner RAG avec une recherche traditionnelle complète-texte en utilisant la fusion de rang réciproque M SK1RRF).
Pourquoi hybride?
- Recherche sémantique: Super pour les matchs conceptuels (" Traitement des erreurs
- Recherche de mots clés: Très bon pour les termes exacts ("Docker Compose", "Entity FrameworkM SK4
- Hybride: Le meilleur des deux mondes
public async Task<List<SearchResult>> HybridSearchAsync(string query)
{
// Run both searches in parallel
var semanticTask = SemanticSearchAsync(query, limit: 20);
var keywordTask = KeywordSearchAsync(query, limit: 20);
await Task.WhenAll(semanticTask, keywordTask);
var semanticResults = await semanticTask;
var keywordResults = await keywordTask;
// Combine using Reciprocal Rank Fusion
return ApplyRRF(semanticResults, keywordResults);
}
private List<SearchResult> ApplyRRF(
List<SearchResult> list1,
List<SearchResult> list2,
int k = 60)
{
var scores = new Dictionary<string, double>();
// Score from first list
for (int i = 0; i < list1.Count; i++)
{
var id = list1[i].Id;
scores[id] = scores.GetValueOrDefault(id, 0) + 1.0 / (k + i + 1);
}
// Score from second list
for (int i = 0; i < list2.Count; i++)
{
var id = list2[i].Id;
scores[id] = scores.GetValueOrDefault(id, 0) + 1.0 / (k + i + 1);
}
// Merge and sort by combined score
var allResults = list1.Concat(list2)
.GroupBy(r => r.Id)
.Select(g => g.First())
.OrderByDescending(r => scores[r.Id])
.ToList();
return allResults;
}
Pourquoi le RAG est important
Maintenant que vous comprenez ce qu’est le RAG, où il provient, , et comment il est comparé aux solutions de remplacement.
1. Démocratisation de l’AI
- Vous n’avez pas besoin d’une amende de $100K
- Vous n’avez pas besoin d’une équipe d’ingénieurs ML
- Tout développeur peut construire des systèmes RAG avec les outils existants
2. Exactitude pratique
- La hallucination est le problème #1 des LLM dans la production
- Le RAG le résume en fondant ses réponses sur des documents réels.
- Les citations la rendent vérifiable et digne de confiance
3. Toujours à la hausse-àM SK2Date
- AI traditionnelle: Train une foisM SK1 le savoir est gelé
- RAG: Mise à jour de vos documents, mises à jour immédiates des connaissances
- Critique pour les domaines mobiles rapides
4. Protection des renseignements personnels et contrôle
- Vos données demeurent dans votre infrastructure
- Peut être exécuté entièrement localement (embeddings locaux + local LLM + vecteur local DB)
- Aucune donnée n'est envoyée à OpenAI ou aux autres fournisseurs de nuages
5. CoûtM SK1Effective
- L’entreposage est bon (pennies par GB)
- Les emplacements sont bon marché (fractions d’un cent par 1000 documents
- Beaucoup moins cher que les fenêtres fine-tuning ou de longue durée contextuelle
6. Applications variées
- Recherche sémantique (pas de LLM requis!)
- Q&A systèmes avec citations
- Recommandation du contenu
- Assistants à l'écriture
- Gestion des connaissances
- Aides à la documentation
- Assistants de recherche
Conclusion: De l’histoire à la mise en œuvre
Nous avons tracé l’évolution de RAG, ' et :
- Pre-2010s: Recherche par mots clés ( caractèresM SK2 sans signification)
- 2010s: Compréhension liée à la lecture
- 2017-2020: Transformers et embeddings
- 2020: RAG moderne ( récupérer
- 2023-Present: Norme de production ( hallucination MSC2 coût MSC3 protection des renseignements personnels MSc4
Principaux renseignements tirés de la partie 1:
- RAG se sépare stockage des connaissances (vector DB) de d'analyse (LLMM SK1
- Il permet de résoudre le problème des hallucinations en fondant les réponses sur des documents réels.
- Il est moins coûteux et plus souple que le fine
- Il fonctionne mieux que le contexte long pour les grandes bases de connaissances
- Il ' est essentiellement " automatisé quelques shot prompting à l’échelle
Le modèle mental à trois étapes
- Transformer le texte en chiffres (embeddings)
- Trouver des chiffres similaires (cherche vecteur)
- Utilisez ce que vous avez trouvé (display or feed to LLM)
Tout le reste est une optimisation.
Continuer à la partie 2: Architecture et internes
Vous comprenez maintenant Ce qui suit : RAG est, pourquoi Il importe, et où Mais comment fonctionne-t-il en fait sous le cap?
À l'intérieur Partie 2: Architecture et éléments internes du RAG, nous plongons dans les détails techniques
Pipeline RAG complet:
- Phase 1: Indexage ( extraction de textes, stratégies d'enchaînementM SK3 génération d'embeddingMSC4 stockage vecteurMST5
- Phase 2: Recouvrement ( Emplacements de la demandeM SK2 Mesures de similitude, reclassementMSC4
- Phase 3: Génération (Construction rapide, Paramètres LLMM SK3 post-processingMSC4Procédure de traitement
LLM internes:
- Qu'est-ce que les tokens et pourquoi ils sont importants pour RAG
- Cache KV: Comment les LLM se souviennent du contexte
- Contexte et stratégies de gestion des tokens
- Optimisation du RAG pour l'efficacité et le coût des tokens
plongées techniques profondes:
- Bases de données vectorielles et algorithmes de recherche de similitude
- Intégration des modèles et normalisation
- Stratégies de recyclage qui préservent le contexte
- Exemples de codes pratiques dans C#
Continuer à la partie 2: Architecture et internes →
Après la Partie 2, vous serez prêts à la partie ' où nous bâtirons des systèmes réels , pour résoudre les défis communs
Ressources
Documents de base:
- Récupération-Generation améliorée des connaissances-Taxes importantes de PNL - Le papier RAG original
- Récupération de passages denses pour Open-Domain Question Answering - RMR fondation de récupérationM SK2
- Attention est tout ce dont vous avez besoin - Transformers
Lire plus:
- Comment fonctionne la traduction en machine neuronale - Comprendre les modèles d’AI derrière les emplacements
Suivant dans cette série:
- Partie 2: Architecture et éléments internes du RAG - plongée technique profonde
- Partie 3: RAG dans la pratique - Établissement de systèmes réels