This is a viewer only at the moment see the article on how this works.
To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk
This is a preview from the server running through my markdig pipeline
AI
AI-Article
C#
LLM
mostlylucid.blogllm
RAG
Bâtir un « avocat GPT » pour votre blog - Partie 1: Introduction et architecture
Wednesday, 12 November 2025
AVERTISSEMENT: CES PROJETS DE POSTES QUI 'ESCAPÉ'.
Il est probable qu'une grande partie de ce qui est ci-dessous ne fonctionnera pas; je les génère comme comment faire pour MOI, puis faire toutes les étapes et obtenir le travail de l'application d'échantillon ... Vous avez été sournois et les a vus! ils seront probablement prêts à la mi-décembre.
## Présentation
Serrez-vous parce que ça va être une longue série !
Si vous avez suivi ce blog, vous saurez que je suis un peu obsédé par la recherche de façons intéressantes d'utiliser les LLM et l'IA dans des applications pratiques.
Eh bien, j'ai un nouveau projet qui combine mon amour pour les blogs, C#, et AI: construire un assistant d'écriture qui m'aide à rédiger de nouveaux billets de blog en utilisant mon contenu existant comme base de connaissances.
REMARQUE: Ceci fait partie de mes expériences avec l'IA (couture assistée) + mon propre montage.
Même voix, même pragmatisme, juste des doigts plus rapides.
Pensez à la façon dont les pratiques juridiques modernes utilisent les LLM formés à la jurisprudence pour rédiger des mémoires, des motions et des contrats.
Ils ne commencent pas à partir de zéro - le système fait référence aux précédents pertinents, suggère un langage basé sur des documents passés réussis, et maintient la cohérence avec les modèles établis.
C'est exactement ce que nous construisons ici, mais pour le contenu du blog.
L'objectif est de créer un assistant d'écriture à puissance d'IA qui :
Génére automatiquement des liens internes vers des articles connexes
Agit comme "GitHub Copilot pour votre blog"
Cette série couvrira la construction d'unRetrieval Augmented Generation (RAG)
**système en C# qui fonctionne sous Windows.**Nous utiliserons les approches et les cadres les plus récents, et je vais expliquer chaque nouvelle technologie que nous rencontrons.
**Ma configuration matérielle (et les spécifications minimales)**Ma machine de développement :
GPU**: NVIDIA RTX A4000 (16GB VRAM)**CPU
: AMD Ryzen 9 9950X
RAM: 96 Go DDR5
C'est mon installation spécifique, mais toi
Je n'ai pas besoin de ce matériel.
**à suivre.**Voici les caractéristiques minimales pour différents composants:
Accélération du GPU (Recommandé, non requis)
Minimum: GPU NVIDIA avec VRAM de 8 Go (par exemple RTX 3060, GTX 1070 Ti)
Peut exécuter des modèles de paramètres 7B avec quantification
Vitesse de génération décentée d'intégrationConfortable
**: VRAM de 12 Go+ (par exemple RTX 3060 12 Go, RTX 4060 Ti)**Exécuter des modèles plus grands ou des quantifications de qualité supérieure
Mon installation
: 16 Go (A4000) - Peut rouler confortablement les modèles 13B
CPU-seulement alternative
Minimum
: CPU moderne quad-core
Recommandé: 8+ cœurs (pour une génération d'intégration raisonnable)
Tout fonctionne sur CPU-seulement, juste plus lentement:
Génération d'assemblage: ~5-10x plus lentementInférence LLM: ~10-50x plus lentement
Toujours totalement utilisable pour un assistant d'écriture !
Exigences en matière de RAMMinimum
: Système RAM de 16 Go
Inférence CPU uniquement pour les modèles 7BConfortable
: 32 GoMieux pour les modèles plus grands sur CPU
Mon installation
: 96 Go - Surkill, 32 Go c'est beaucoup
StockageSSD
: Recommandé pour le chargement du modèleEspace
: ~20 Go pour les modèles et la base de données vectorielsQu'en est-il des NPU Intel/AMD?
**Les processeurs modernes incluent désormais des accélérateurs d'IA dédiés:*Intel Core Ultra(Meteor Lake+) - Intel AI Boost (NPU)*AMD Ryzen AI
(série 7040/8040) - NPU XDNA
✅ Great for: On-device inference, battery efficiency (laptops)
⚠️ Limited for our use: Immature .NET/ONNX Runtime support
❌ Not ready for: This project's primary path
AMD Ryzen AI Max
(Strix Point) - Jusqu'à 50 TOPSImportant : les NPU sont pour l'inférence seulement !
Vous ne "construisez" pas ou les modèles de train sur les NPU - ils sont conçus pourlancer
**modèles pré-formés efficacement.**Les modèles sont formés sur les GPU en nuage (ou les postes de travail), puis téléchargés et déployés dans les NPU pour inférence.
**État actuel des modèles en cours d'exécution sur les NPU (au moment de l'écriture):**Pourquoi pas des NPU pour cette série ?
Écosystème logiciel: CUDA a plus de 15 ans d'échéance, le soutien NPU dans .NET est naissant
Compatibilité du modèle
: La plupart des modèles GGUF ciblent CUDA/CPU, les modèles optimisés NPU sont raresDocumentation: Ressources limitées pour le développement de l'UPN en C#
Résultats
: Actuellement plus lent que les GPU discrets pour notre charge de travail
Appui direct au ML
: Toujours expérimental pour l'inférence LLM
# Use DirectML execution provider (supports NPU)
dotnet add package Microsoft.ML.OnnxRuntime.DirectML
# In code:
var sessionOptions = new SessionOptions();
sessionOptions.AppendExecutionProvider("DML"); // DirectML
var session = new InferenceSession("model.onnx", sessionOptions);
**mature leur soutien NPU (probablement 2024-2025), ceux-ci deviendront des alternatives viables pour l'inférence!**Ligne de fond
**: Je vais montrer le chemin accéléré du GPU, mais je noterai les alternatives du CPU seulement dans l'ensemble.**Vous pouvez démarrer CPU-seulement et mettre à niveau plus tard!
Ce que nous construisonsLe système final comportera plusieurs composantes:
Pipeline d'ingestion de balisage- Traite tous les messages de blog, les chunks intelligemment, et génère des intégrations
Base de données vectorielles
- Stores embarque et permet une recherche sémantique pour des contenus similaires
Application client Windows
Une interface d'écriture de bureau avec éditeur et panneau de suggestion
Intégration LLM
Inférence locale accélérée GPU pour la génération de contenu
Citation et génération de liens
Auto-suggère des liens internes et des références à des messages connexes
Moteur de cohérence de style
Apprend les modèles des postes existants pour maintenir la voix et la structure
Pensez-y comme "GitHub Copilot rencontre Grammarly" mais formé spécifiquement sur le contenu et le style de votre blog.
Pourquoi "avocat GPT" ?
Les cabinets d'avocats modernes utilisent des LLM formés à de vastes bibliothèques de jurisprudence pour aider à rédiger des documents juridiques.
Lors de l'écriture d'une motion, le système :
Références de précédents pertinents et d'arguments positifs antérieurs
Suggère des modèles de langue qui ont déjà fonctionné
Maintient la cohérence avec les normes juridiques de rédaction
Mise en place de Windows pour les charges de travail d'IA accélérées par GPU, installationCUDA, CUDNN, et de tester que C# peut réellement voir et utiliser votre GPU.Partie 3: Compréhension des intégrations et des bases de données vectoriellesPlongez profondément dans ce que sont réellement les éléments d'intégration, comment ils permettent la recherche sémantique, et choisissez la bonne base de données vectorielle (spoiler: nous allons probablement utiliser
ouPgvector, Partie 4: Construction du pipeline d'ingestionTraitement des fichiers de balisage, stratégies de chunking intelligentes (vous ne pouvez pas simplement diviser sur les paragraphes!), et générer des intégrations pour tout notre contenu.
?), en construisant l'assurance-chômage et en rendant l'utilisation plus agréable.
Partie 6: Intégration locale des LLM
Modèles en cours d'exécution à l'échelle localeONNX Durée d'exécution
Lama.cppdes liens, ou d'autres approches.
**En utilisant pleinement ce A4000 !**Partie 7: Génération de contenu et génie rapide
**Rassembler tout cela - recherche sémantique de contenu pertinent, gestion des fenêtres contextuelles, ingénierie rapide pour l'aide à l'écriture, et générer des suggestions cohérentes.**Partie 8: Caractéristiques avancées et déploiement de la production
**Lien automatique vers des messages connexes, vérification de la cohérence du style, suggestions d'extrait de code, et rendre le système réellement utile pour l'écriture quotidienne.**Pourquoi RAG ?
Avant de plonger dans l'architecture, parlons de la raison pour laquelle RAG (Retrieval Augmented Generation) est la bonne approche ici.
Le problème avec le tuning fin
Vous pourriez penser: "Pourquoi ne pas simplement peaufiner un LLM sur tous les billets de blog?" Il ya plusieurs problèmes avec cela:
Coût et complexité
Le réglage fin est coûteux (à la fois dans le calcul et l'effort)
Staleness
Chaque nouveau billet de blog signifie recyclage
Boîte noire
Difficile de comprendre ce que le modèle "apprenait"
✅ Always up-to-date (just re-index new posts as you write them)
✅ Grounded in your actual writing (maintains consistency)
✅ Traceable (know which past posts influenced suggestions)
✅ Efficient (no expensive retraining for every new post)
✅ Flexible (can swap out LLMs or adjust search strategies)
✅ Privacy-preserving (everything runs locally)
hallucination
Pas de garantie que le modèle n'inventera rien.
graph TB
A[Markdown Files] -->|Ingest| B[Chunking Service]
B -->|Text Chunks| C[Embedding Model]
C -->|Vectors| D[Vector Database]
E[User Writing] -->|Current Draft| F[Windows Client]
F -->|Embed Context| C
C -->|Query Vector| D
D -->|Similar Content| G[Context Builder]
G -->|Relevant Past Articles| H[Prompt Engineer]
H -->|Prompt + Context| I[Local LLM]
I -->|Generated Suggestions| J[Link Generator]
J -->|Suggestions + Citations| F
F -->|Display| K[Editor with Suggestions]
class C,I embedding
class D,K output
classDef embedding stroke:#333,stroke-width:4px
classDef output stroke:#333,stroke-width:4px
Pas de citations
Il n'est pas facile de retracer les réponses aux sources.
Comment le RAG s'y prend-il?
RAG combine le meilleur des deux mondes : la puissance des LLM avec la précision de la recherche pour créer une génération de contenu contextuelle.
Le débit est:
L'utilisateur commence à écrire (par exemple, "Construire une API REST avec ASP.NET Core...")
System trouve sémantiquement des articles antérieurs similaires
Système alimente des morceaux pertinents en contexte pour le LLMLLM génère des suggestions/continuations basées sur du contenu passé
Système offre des suggestions avec des références aux messages sources
Cela signifie:
Architecture du système
Permettez-moi de décomposer les éléments clés que nous allons construire:
Le Conseil de l'Europe a adopté une résolution du Conseil de l'Europe sur la situation des droits de l'homme dans le monde.
Pipeline d'ingestion de balisage
**Cette composante:**Lit les fichiers de balisage à partir du répertoire du blog
**Trop grand et vous gaspillez la fenêtre contextuelle du LLM.**Nous avons besoin de morceaux qui ont un sens sémantique - une pensée ou une section complète, et non des ruptures de paragraphes arbitraires.
(source ouverte à la fine pointe de la technologie)**3. Les droits de l'homme sont garantis par le Pacte international relatif aux droits économiques, sociaux et culturels.Base de données vectorielles**La base de données vectorielle stocke l'intégration et permet une recherche rapide de similarité.**Lorsque vous écrivez sur "Docker composer", il trouve le K le plus sémantiquement similaire contenu passé - pas seulement des correspondances de mots clés, mais du matériel lié conceptuellement.**Choix technologique
: Nous évaluerons :
Qdurant
Moderne, écrit en Rust, excellent client C#, Docker-friendly
Pgvector
Extension pour PostgreSQL (nous utilisons déjà Postgres!)
Façonné
- Une autre option solide avec un bon support .NET: