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
Construyendo un "Abogado GPT" para su Blog - Parte 1: Introducción y Arquitectura
Wednesday, 12 November 2025
ATENCIÓN: Estos son los proyectos de mensajes que se han "espaciado".
Es probable que gran parte de lo que está a continuación no funcione; Yo genera estos como cómo para MÍ y luego hacer todos los pasos y hacer que la aplicación de muestra funcione...¡Has sido astuto y los has visto!Probablemente estarán listos a mediados de diciembre.
## Introducción
¡Abróchate el cinturón porque esto va a ser una serie larga!
Si has estado siguiendo junto con este blog, sabrás que estoy un poco obsesionado con encontrar maneras interesantes de usar LLMs e IA en aplicaciones prácticas.
Bueno, tengo un nuevo proyecto que combina mi amor por los blogs, C# y AI: construir un asistente de escritura que me ayude a redactar nuevos posts usando mi contenido existente como base de conocimiento.
NOTA: Esto es parte de mis experimentos con IA (redacción asistida) + mi propia edición.
La misma voz, el mismo pragmatismo; sólo los dedos más rápidos.
Piense en cómo las prácticas legales modernas utilizan los LLM entrenados en jurisprudencia para redactar informes, mociones y contratos.
No comienzan de cero - el sistema hace referencia a precedentes relevantes, sugiere un lenguaje basado en documentos anteriores exitosos, y mantiene la coherencia con los patrones establecidos.
Eso es exactamente lo que estamos construyendo aquí, pero para contenido de blog.
El objetivo es crear un asistente de escritura con IA que:
Puede ejecutar modelos de parámetros 7B con cuantificación
Velocidad de generación de incrustación decenteCómodo
**: 12GB+ VRAM (por ejemplo, RTX 3060 12GB, RTX 4060 Ti)**Ejecutar modelos más grandes o cuantificaciones de mayor calidad
Mi configuración
: 16GB (A4000) - Puede ejecutar modelos 13B cómodamente
Alternativas solo para CPU
Mínimo
: CPU moderna de cuatro núcleos
Recomendado: 8+ núcleos (para una generación de incrustación razonable)
Todo funciona sólo en la CPU, sólo más lento:
Generación de empotrado: ~5-10x más lentoInferencia LLM: ~10-50x más lento
Todavía totalmente utilizable para un asistente de escritura!
Requisitos de RAMMínimo
: RAM del sistema de 16 GB
Inferencia exclusiva de CPU para modelos 7BCómodo
: 32GBMejor para modelos más grandes en CPU
Mi configuración
: 96GB - Overkill, 32GB es suficiente
AlmacenamientoSSD
: Recomendado para la carga de modelosEspacio
: ~20GB para modelos y base de datos de vectores¿Qué hay de las NPUs Intel/AMD?
**Las CPU modernas ahora incluyen aceleradores de IA dedicados:*Intel Core Ultra(Meteor Lake+) - Intel AI Boost (NPU)*AMD Ryzen AI
(serie 7040/8040) - XDNA NPU
✅ 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
(Punto Strix) - Hasta 50 TOPSImportante: ¡Las NPUs son sólo para inferencia!
No se "construyen" o se entrenan modelos en NPUs - están diseñados paraejecutar
**modelos pre-entrenados de manera eficiente.**Los modelos se entrenan en GPUs en la nube (o estaciones de trabajo), luego se descargan e implementan en NPUs para su inferencia.
Estado actual de los modelos de ejecución en NPUs (a la fecha de redacción):¿Por qué no NPUs para esta serie?
Ecosistema de programas informáticos: CUDA tiene más de 15 años de madurez, apoyo NPU en .NET es naciente
Compatibilidad con los modelos
: La mayoría de los modelos GGUF se dirigen a CUDA/CPU, los modelos optimizados NPU son rarosDocumentación: Recursos limitados para el desarrollo de la NPU en C#
Desempeño
: Actualmente más lento que las GPUs discretas para nuestra carga de trabajo
Soporte DirectML
: Todavía experimental para la inferencia de 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);
Cómo configurar Windows para cargas de trabajo de IA aceleradas por GPU, instalaciónCUDA, cuDNN, y probando que C# realmente puede ver y utilizar su GPU.Parte 3: Comprender los embebidos y las bases de datos vectorialesInmersión profunda en lo que en realidad son incrustaciones, cómo permiten la búsqueda semántica, y la elección de la base de datos vectorial derecha (spoiler: probablemente utilizaremos
?), construyendo la interfaz de usuario, y haciéndolo realmente agradable de usar.
Parte 6: Integración local de la LLM
Modelos de ejecución local utilizandoONNX Runtime
llama.cppencuadernaciones u otros enfoques.
**Haciendo pleno uso de ese A4000!**Parte 7: Generación de contenido e ingeniería rápida
**Reunirlo todo: búsqueda semántica de contenido relevante, gestión de ventanas de contexto, ingeniería rápida para la asistencia de escritura y generación de sugerencias coherentes.**Parte 8: Características avanzadas y despliegue de producción
Auto-enlace a publicaciones relacionadas, verificación de la consistencia del estilo, sugerencias de fragmentos de código, y hacer que el sistema realmente útil para la escritura diaria.¿Por qué RAG?
Antes de sumergirnos en la arquitectura, vamos a hablar de por qué RAG (Retrieval Augmented Generation) es el enfoque correcto aquí.
El problema con el ajuste fino
Usted podría pensar: "¿Por qué no simplemente afinar un LLM en todos los posts del blog?" Hay varios problemas con eso:
Costo & Complejidad
El ajuste es caro (tanto en computación como en esfuerzo)
Estanqueidad
Cada nuevo post de blog significa readiestramiento
Caja negra
Difícil de entender lo que el modelo "aprendió"
✅ 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)
Alucinación
No hay garantía de que el modelo no se inventará las cosas
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
Sin citaciones
No puedo rastrear fácilmente las respuestas a las fuentes.
¿Cómo RAG resuelve esto
RAG combina lo mejor de ambos mundos: el poder de los LLM con la precisión de la búsqueda para crear una generación de contenido consciente del contexto.
El flujo es:
El usuario comienza a escribir (por ejemplo, "Construyendo una API REST con ASP.NET Core...")
El sistema encuentra artículos semánticos similares en el pasado
El sistema alimenta trozos relevantes como contexto del LLMLLM genera sugerencias/continuaciones basadas en contenidos pasados
El sistema ofrece sugerencias con referencias a los puestos de origen
Esto significa:
Arquitectura de sistemas
Permíteme desglosar los componentes clave que vamos a construir:
Gasoducto de Ingestión de Markdown
**Este componente:**Lee los archivos de marca desde el directorio del blog
**Demasiado grande y desperdicias la ventana de contexto del LLM.**Necesitamos trozos que sean semánticamente significativos: un pensamiento completo o una sección, no rupturas arbitrarias de párrafos.
(fuente abierta de última generación)**3.Base de datos vectorial**La base de datos de vectores almacena incrustaciones y permite una búsqueda rápida de similitud.**Cuando escribes sobre "Componer Docker", encuentra el contenido más semánticamente similar de K en el pasado - no sólo coincidencias de palabras clave, sino material relacionado conceptualmente.**Elección de la tecnología
Vamos a evaluar:
Qdrant
Moderno, escrito en Rust, excelente cliente de C#, Docker-friendly
pgvector
Extensión para PostgreSQL (ya estamos usando Postgres!)