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
Établissement d’un "Lawyer GPT" pour votre blog - Partie CSM3 Introduction CSM4 Architecture
Wednesday, 12 November 2025
Introduction
Je suis un peu obsessionné par la recherche de façons intéressantes d’utiliser les LLM et l’AI dans des applications pratiques.
NOTE: C'est une partie des expériences que j'ai réalisées avec l'A.I. M SK1 rédaction assistée) + ma propre éditionMST4 La même voixM ST5 le même pragmatismeM st6 quelques doigts plus rapidesMst7
Pensez à la façon dont les pratiques juridiques modernes utilisent des LLM formées en jurisprudence pour élaborer des mémoires, motions , et contrats
L’objectif est de créer un assistant d’écriture autonome qui
- Aide à rédiger de nouveaux articles de blog dans mon style établi
- Suggère des contenus pertinents d'articles antérieurs à consulter
- Trouver des postes similaires pour maintenir la cohérence
- Auto-génére des liens internes aux articles connexes
- Acts comme "GitHub Copilot pour votre blog"
Cette série portera sur la construction d’un Génie améliorée de recherche (RAGM SK1 Nous utilisons les plus récentes approches et cadres, , et I'; nous expliquerons chaque nouvelle technologie à mesure qu’elle est mise au point.
Ma configuration du matériel (et spécifications minimales)
Ma machine de développement:
- GPU: NVIDIA RTX A
- CPU: AMD Ryzen
- RAM: 96GB DDRM SK2
Il s’agit de ma configuration spécifique, mais vous don' n’a pas besoin de ce matériel à suivre. Voici les spécifications minimales pour différents composantsM SK1
Accélération du GPU (Recommandé, non requisM SK2
- La valeur minimale: NVIDIA GPU avec 8GB VRAM (e.gM SK4 RTX 3060, GTX SSK6 TiMSC7
- Peut exécuter des modèles de paramètre 7B avec quantisation
- La vitesse de production d'embedding décente
- Amélioration des conditions de vie: 12GB+ VRAM (eMSC4gM SK5 RTX M3060 ≥12GB~, RX R4060 TiMST10
- Conduire des modèles plus grands ou des quantisations de qualité supérieure
- Ma configurationLes modèles 13B peuvent fonctionner confortablement
CPU-Autres options seulement
- La valeur minimale: Quad moderne-processeur de base
- Recommandation: 8+ carottes (pour une génération d'implantations raisonnables)
- Tout fonctionne sur le CPU-seulement,plus lentementM SK2
- Génération de l'intégration: M SK1x plus lente
- Inférence LLM: M SK1x plus lente
- Néanmoins entièrement utilisable pour un assistant de rédaction!
Exigences relatives au RAM
- La valeur minimale: 16GB RAM du système
- CPU-inférence seulement pour les modèles 7B
- Amélioration des conditions de vie: 32GB
- Améliorer les modèles plus gros sur le CPU
- Ma configuration: 96GB - Overkill, ≥32GB est beaucoup
Entreposage
- SSD: Suivant pour le chargement du modèle
- L'espace: ~20GB pour les modèles et la base de données des vecteurs
Qu'en est-il d'Intel/AMD NPUs?
Les CPU modernes comprennent maintenant des accélérateurs AI dédiés:
- Intel Core Ultra (Meteor Lake
- AMD Ryzen AI (7040/8040 sérieM SK1 - NPU XDNA
- AMD Ryzen AI Max (Strix Point
Important: Les NPUs sont pour l'inférence seulementM SK1 Vous n’êtes pas en mesure de construire des modèles ou des trains sur les NPU; ils sont conçus pour courir pré-formation efficace des modèles. Les modèles sont formés sur les GPUs de nuage (ou sur les stations de travailM SK3 puis téléchargés et déployés à l’aide d’un NPU pour la détermination de leur comportement
État actuel des modèles en cours sur les NPUs (à l'heure de la rédaction):
- ✅ Fait grand pour: SurM SK2Inférence de l'appareil , Efficacité de la batterie
- ⚠️ Limité pour notre usage: Immature .NETM SK3ONNX Soutien du temps d'exécution
- ❌ N'est pas prêt pourM SK1 Le chemin principal de ce projet'
Pourquoi pas des NPU pour cette série?
- Écosystème logiciel: Le CUDA a 15+ ans de maturitéM SK2 Un soutien NPU dans le .NET est en voie d’émergence
- Compatibilité du modèleLes modèles optimisés sont rares.
- Documentation: Ressources limitées pour la mise au point d’un PNE dans le CM SK1
- Rendement: Actuellement plus lente que les GPU discrets pour notre charge de travail
- Soutien DirectML: Néanmoins expérimental pour l'inférence LLM
Pouvez-vous utiliser les NPU pour faire des déductions?
- Besoins DirectML fournisseur d'exécution dans ONNX Runtime
- Les modèles doivent être en format ONNX (non GGUF)
- Le soutien C# est expérimental
- Le rendement est actuellement insuffisant par rapport à la CUDA
Comment essayer l'inférence du NPU (utilisateurs avancés):
# 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);
Considérations futures: Une fois Le temps de fonctionnement d'ONNX et DirectML ( vraisemblablement 2024-2025), ils deviendront des solutions de remplacement viables pour l’inférence
Ligne inférieure: IM SK1 montrera le GPU-la voie accélérée , mais notera la CPUMSC4seulement des solutions de rechange tout au long de l’intervalleMNK5 Vous pouvez commencer la CPU~-seuls et mettre à niveau plus tardMRK7
Ce que nous construisons
Le système final comprendra plusieurs composants:
- Pipeline d'ingestion de marquage - Traite tous les articles sur le blog, les découpe intelligentement , et produit des embeddings
- Base de données des vecteurs - Stocke les embeddings et permet une recherche sémantique de contenu similaire
- Application du client Windows - Un assistant d'écriture de bureau avec un panneau d'édition et de suggestions
- LLM Intégration - GPU local-inférence accélérée pour la production de contenu
- Citation & Generation de liens - Auto - suggère des liens internes et des références aux postes connexes
- Système de cohérence du style - Apprente les modèles des postes existants pour maintenir la voix et la structure
Pensez à ce qui suit : "GitHub Copilot rencontre Grammarly" mais a été formé spécifiquement sur votre blog
Pourquoi "Lawyer GPT"?
Les cabinets de droit modernes utilisent des LLM formés dans de vastes bibliothèques de jurisprudence pour aider à rédiger des documents juridiques.
- Références aux précédents pertinents et à des arguments successifs antérieurs
- Suggère des modèles linguistiques qui ont déjà fonctionné
- Maintenir la cohérence avec les normes de rédaction légale
- Citer les sources automatiquement
Lorsque je commence à écrire "Addition de cadre d’entités pour ...",, le système devrait
- Trouver mes articles antérieurs liés à EF-
- Suggérez des modèles structurels I' que vous avez déjà utilisés
- Offrir des fragments de code pertinents d'articles antérieurs
- Auto-générer des liens vers les postes connexes
- Maintenir mon style de rédaction et ma profondeur technique
Contrairement aux assistants génériques d’écriture AI, notre système est fondé sur le contenu passé réel.
Aperçu de la série
Voici ce que nous allons couvrir au cours des prochaines semaines.
Partie 1 (Ce poste): Introduction & Architecture
Nous établirons ce que nous construisons et pourquoi, ainsi que les décisions architecturales.
Partie 2: Établissement d'un GPU & CUDA en C#
Installer Windows pour GPU-accélération des charges de travail d’AI, CUDA, Numéro du dossier :, et vérifier que C# peut effectivement voir et utiliser votre GPU
Partie 3: Comprendre les emplacements & Bases de données vectorielles
Dévouez-vous en profondeur sur ce que les embeddings sont en fait, comment ils permettent la recherche sémantique , et le choix de la base de données vectorielle appropriée M SK2 Spoiler: nousMSC4 utiliserons probablement Qdrant ou pgvector).
Partie 4: Établissement du pipeline d’ingestion
Traitement des fichiers de marquage , stratégies intelligentes d'enchaînement ( vous pouvez' ne pas se diviser sur les paragraphesM SK3 et générer des embeddings pour tout notre contenuMSC4
Partie 5: Le client Windows
Choix du cadre approprié (WPF, Avalonia, ou L'Agence de gestion des ressources humaines du Canada?), bâtir l’interface de l’U.I.
Partie 6: Intégration locale de LLM
Exécuter les modèles localement en utilisant Le temps de fonctionnement d'ONNX, .cpp bindings, ou d’autres méthodes . Utiliser pleinement cette AM SK2
Partie 7: Production de contenu & Génie rapide
Mettre tous les éléments en commun - recherche sémantique pour le contenu pertinent , gestion de fenêtres contextuelles M SK2 génie rapide pour l'aide à la rédaction , et générer des suggestions cohérentes
Partie 8: Faits avancés & Déploiement de la production
Automatique-lien vers des articles connexesM SK1 vérification de la cohérence du style , suggestions de coupures de code, et rendre le système utile pour écrire quotidiennementMSC4
Pourquoi RAG?
Avant de nous plonger dans l’architecture, laissez-nous parler de la raison pour laquelle le RAG (Retrieval Augmented Generation ) est la bonne approche ici.
Le problème avec Fine-Tuning
Vous penserez peut-être :: " Pourquoi ne pas juste bienM SK2tune un LLM sur tous les articles de blogMSC3 Il y a plusieurs problèmes avec ce type d’articles
- Coût & Complexité - FaibleM SK1la mise à l’essai est coûteuse dans le domaine de la computation et de l’effort
- Épaisseur - Chaque nouveau post de blog signifie une réorganisation
- Boîte noire - Il est difficile de comprendre ce que le modèle a appris.
- La hallucination - Aucune garantie que le modèle wonM SK1 ne fait rien
- Aucune citation - Ne peut pas facilement tracer les réponses vers des sources
Comment RAG résout ce problème
RAG combine le meilleur des deux mondes: le pouvoir des LLM avec la précision de la recherche pour créer un contexte-génération de contenu conscientM SK2
Le débit est:
- Utilisateur commence à écrire (e.gM SK2 "Construction d'une API REST avec ASP
- Le système trouve des articles sémantiquement similaires du passé
- Le système transmet des tronçons pertinents en tant que contexte au LLM
- LLM génère des suggestions/suites fondées sur le contenu antérieur
- Le système offre des suggestions avec des références aux postes de source
Cela signifie:
- ✅ toujours à la hausseM SK1à-date (juste de revoirMSC4indexer les nouveaux postes au fur et à mesure que vous les écrivez
- ✅ fondé sur votre écriture réelle ( maintient la cohérence
- ✅ Traçable (on sait quels postes antérieurs ont influé sur les suggestionsM SK2
- ✅ Efficace (sans frais de recyclage pour chaque nouveau poste
- ✅ Flexible (a la possibilité d'échanger les LLM ou de modifier les stratégies de recherche
- ✅PrivacyM SK1Preservation (tout fonctionne localement)
Architecture du système
Permettez-moi d’énoncer les éléments clés que nous allons construire.
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
1. Pipeline d'ingestion de marquage
Cette composante:
- Lire les fichiers de marquage à partir du répertoire des blogs
- Extrait des métadonnées (titre,catégories ,dateM SK3nombre de motsMSC4
- Regroupe intelligentement le contenu (conservant les blocs de code pour réutilisation)
- Détermine les patrons structurels (comment je organise des postes)
- Suivre l'information source pour la génération de citations
Défis clés: La stratégie de découpage est extrêmement importante . Trop petite et vous perdez le contexte . Trop grande et vous gaspillez la fenêtre contextuelle du LLM M SK3 Nous avons besoin d’articles qui sont sémantiquement significatifs
2. Modèle d'emplacement
Les embeddings sont la magie qui fait fonctionner la recherche sémantique.
Les concepts similaires se terminent par "close" dans l'espace vectoriel , même s'ils utilisent des mots différentsM SK3
Par exemple:
- "migration de base de donnéesM SK1 et " mise à jour du schéma DB" auraient des embeddings similaires
- "cat" et "kittenM SK3 seraient plus proches que "cat+" et
Choix technologique: Nous utilisons probablement l’une ou l’autre
- sentence-transformeurs Les modèles ( peuvent fonctionner via ONNX Runtime dans C#)
- Modèles d'embedding de OpenAI' (par l'intermédiaire de APIM SK2
- Modèles BGE (ÉtatM SK1de-laMSC3source ouverte d’art )
Base de données des vecteurs 3.
La base de données vectorielle stocke les embeddings et permet une recherche rapide de similitudes. Quand vous écrivez sur ' M SK2Docker compose", elle trouve le contenu K sémantiquement le plus similaire du passé
Choix technologique: Nous 'Vrons évaluerM SK2
- Qdrant - Moderne , écrit en russe, excellent CM SK3 clientMST4 DockerMSC5friendly
- pgvector - Extension pour PostgreSQL we'nous utilisons déjà PostgresM SK3
- Favoriser - Une autre option solide avec un bon support .NET
- Chrome - Populaire dans les terres de Python , moins chez CM SK2
I' je me tourne vers Qdrant pour sa simplicité et son rendement , ou pgvector afin de garder tout dans Postgres
4. Client Windows
Nous avons besoin d'une bonne interface pour écrire avec l'aide de l'intelligence artificielle.
WPF (Windows Presentation Foundation)
- ✅ Mature, stableM SK2 beaucoup de ressources
- ✅ Performance native Windows
- ❌ Windows-seulement
- ❌ Il semble daté sauf si vous investissez dans les bibliothèques UI
- ✅CrossM SK1Platforme (XAML-basée sur )
- ✅ Moderne, activement développé
- ✅ semblable à WPF
- ❌ Écosystème plus petit
MAUI (Multi-interface d'application de plate-forme )
- ✅ Cross-platform
- ✅ Microsoft-remboursée
- ❌ En pleine maturité
- ❌ Plus mobile-focused
Puisque nous sommes axés sur Windows, - et je veux quelque chose stable. WPF avec ModernWPF UI ou Avalonia pour ce potentiel de croisement -platform .
5. Intégration locale de LLM
C'est là où le GPU 4000 brille . Nous voulons faire fonctionner le LLM localement pour
- Protection des renseignements personnels (pas de données envoyées aux APIs)
- vitesse (l'inférence locale est rapideM SK1
- Coût (sans frais d'APIM SK1
- Contrôle (nous choisissons le modèle)
Options technologiques:
Le temps de fonctionnement d'ONNX
- Convertir les modèles en format ONNX
- Excellent accélération GPU
- Soutien natif C#
- En bas de page: Tous les modèles ne sont pas bien convertis
.cpp liaisons
- Bibliothèque C++ avec liaisons C # M SK2LLamaSharp)
- Soutien de la CUDA
- Soutien général du modèle (Llama, MistralM SK2 etcMSC3
- Élaboration très active
- Liens PyTorch pour .NET
- La plus grande souplesse
- Curve d'apprentissage accrue
I' je me tourne vers LLamaSharp pour sa maturité et son facilité d’utilisation avec les modèles populaires.
6. Gestion des fenêtres contextuelles & Ingénierie rapide
Les LLM ont des fenêtres contextuelles limitées.
- Récupérer le contenu antérieur le plus pertinent (top K de la recherche par vecteur)
- Inscrivez-les dans la fenêtre contextuelle avec le projet actuel
- Structure du prompt de l'aide à la rédaction
- Laisser des espaces pour les suggestions générées
C’est plus difficile qu’il ne semble. Nous allons étudier des stratégies comme la
- Choix K dynamique fondé sur ce que vous écrivez actuellement'
- Re- classement des chunks obtenus selon la pertinence
- Compression intelligente du contexte
- Multi-shot prompting avec des exemples de postes antérieurs
7. Lien & Production de citations
Chaque fragment a besoin de métadonnées:
- Dossier source/post
- Position dans le document original
- Date de publication
- Catégories
- Les fragments de code utilisés
Lorsque le LLM génère des suggestions, nous créerons automatiquement des liens de marquage vers les postes source et repérer les modèles de code réutilisables.
Ce qui en fait la différence?
Il y a beaucoup de tutorials RAG là-bas, mais cette série sera différente.
- C# Premier - La plupart des exemples de RAG se trouvent dans Python
- Windows & GPU - Utilisation du NVIDIA CUDA sur Windows, non LinuxM SK2WSL
- Production prête - Non seulement la preuve de l’existence d’un code utilisable, mais aussi le concept
- Domaine-Spécifique - Optimisé pour l'aide à la rédaction de blogs, non génération de contenu générique
- Explanations approfondies Nous expliquerons en fait pourquoi les décisions sont prises dans le cadre de ce processus.
Technologies que nous utiliserons
Voici ce que l’on entend par « planification ».
Cadre de base
- .NET 9 (la dernière au moment de la rédactionM SK1
- C# M SK1 - Caractéristiques linguistiques modernes
Bibliothèques AI/ML
- Le temps de fonctionnement d'ONNX ou LLamaSharp - Inférence LLM
- Microsoft.ML - Possibilité pour certaines tâches
- Transformers de la Sentence via ONNX - Embeddings
Base de données des vecteurs
Cadre d'interface
- WPF avec ModernWPF ou Avalonia - UI de bureau moderne
Outils de soutien
- Markdig - Utilisez déjà cette fonction pour la partage du marquage
- Docker - Pour le fonctionnement de Qdrant ou d'autres services
- Cadre de l'entité - Si nous utilisons pgvector
Établissement de GPU
- CUDA 12.x (la dernière au moment de la rédactionM SK1
- Numéro du dossier : - Pratiques d’apprentissage approfondi
Considérations relatives au rendement
Différentes configurations de matériel auront des capacités différentes:
Avec 8GB VRAM (Minimum)
- Taille du modèleModèles de paramètres : 7B avec quantisation QM SK2
- Traitement par lots: Emplacements de processus dans des lots plus petits
- Gestion de la mémoire: Surveillance soigneuse du VRAM requise
- Travaille bien pour: Assistant à l'écriture, génération d'embedding
Avec 12GBM SK1 VRAM (Comfortable)
- Taille du modèle: 7B avec une quantisation de qualité supérieure
- Traitement par lots: Charges plus grandes pour un débit plus rapide
- Peut aussi fonctionner: Certains modèles 13B avec quantisation agressive
Avec 16GBM SK1 VRAM (Ma configuration)
- Taille du modèleModèles de paramètres : 7BM SK2B confortablement
- Traitement par lots: Batches complètesM SK1 contraintes minimales
- Inférence rapide: Sous-temps de réponse
- Salle de direction: Peut expérimenter avec différents modèles
CPU- Seulement M SK1Fallback)
- Tout fonctionne, juste plus lentement
- Embeddings: 5-10x plus lente que GPU
- Inférence LLM: 10-50x plus lente que GPU
- Utilisables encore: Pour un assistant à la rédaction qui a de la patience
Approche de développement
Nous ' ferons de cette construction graduelle :
- Commencez par les composants les plus simples (marquage en bas de page
- Ajouter la génération d'embedding ( pourrait commencer avec l'API- fondé avant de passer localementM SK2
- Faire fonctionner la recherche par vecteur
- Élaborer une interface de base
- Intégrer LLM
- Polish et optimiser
Chaque partie sera déployable et testable par elle-même. Pas de grands rêves d’intégrationM SK1bang.
Qu’est-ce que's Suivant?
À l'intérieur Partie 2: Établissement d'un GPU & CUDA en C#, nous ' recevons des mains- avec la mise en place du GPUM SK3
- Installer CUDA et cuDNN sur Windows
- Établissement d'un environnement de développement
- Écrire un simple programme C# pour vérifier l'accès au GPU
- Effectuer un test d'inférence de base avec ONNX Runtime
- Évaluation de notre A4000 pour comprendre ce que nous pouvons faire
Cela peut sembler élémentaire, mais la bonne mise en place de l’enveloppe GPU est cruciale . I' j’ai gaspillé des heures pour résoudre les problèmes de débugging qui se sont traduits par des incompatibilités de version ou des DLL manquantsM SK3
Pourquoi cela importe?
En plus d’être simplement un projet cool, cette approche a des applications réelles.
- Documentation technique - Maintenir un style cohérent entre les grands ensembles de doc
- Pratique juridique - Exemple d’utilisation réelle! Élaboration de mémoires fondés sur des précédents de la jurisprudence
- Marketing du contenu - Maintenir la voix de la marque dans les équipes
- Écrire universitaire - Conséquence avec les travaux et la recherche précédents
- Gestion des connaissances personnelles - Assistant de rédaction pour votre propre corpus
Les principes que nous appliquons ' s’appliquent à tout domaine où vous avez un contenu existant et où vous devez maintenir la cohérence en créant de nouveaux documents.
Conclusion
Nous ' nous embarquerons sur un voyage pour bâtir une production - RAG de qualité \ - assistant d'écriture basé en C \ # qui aide à rédiger le contenu du blog en utilisant des articles antérieurs comme matériel de référence | - | tout comme les avocats utilisent des LLM formés dans la jurisprudence |
Ce n’est pas un projet de jouets. Nous sommes en train d’élaborer quelque chose qui pourrait vraiment être utile à toute personne qui écrive régulièrement et qui veut maintenir la cohérence, le style et la qualité dans une vaste gamme de travaux.
Dans la prochaine partie, nous mettrons nos mains à l’assainissement avec les GPU CUDA, , et , et nous veillerons à ce que notre environnement de développement soit prêt aux défis qui nous attendent.
Soyez à l’écoute de , et préparez-vous à apprendre sur les embeddings, les bases de données vectorielles ,, les stratégies d’enchaînement ,, l’ingénierie rapide , et toutes les autres complexités intéressantes des systèmes AI modernes.
Navigation des séries
- Partie 1: Introduction & Architecture (le présent articleM SK1
- Partie 2: Établissement d'un GPU & CUDA en C#
- Partie 3: Comprendre les emplacements & Bases de données vectorielles
- Partie 4: Établissement du pipeline d’ingestion
- Partie 5: Le client Windows
- Partie 6: Intégration locale de LLM
- Partie 7: Production de contenu & Génie rapide
- Partie 8: Faits avancés & Déploiement de la production
Ressources
Si vous voulez obtenir un premier coup d’œil, voici quelques ressources que je consulterai tout au long de cette série :
- Documentation sur le temps de fonctionnement d'ONNX
- LLamaSharp GitHub
- Documentation de Qdrant
- Transformers de phrase
- Comprendre les systèmes RAG
Nous vous ferons plaisir. Partie 2!