<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Alejandro Congil Sainz</title>
    <description>The latest articles on DEV Community by Alejandro Congil Sainz (@alexc-projects).</description>
    <link>https://dev.to/alexc-projects</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3935430%2F6b4947af-02c9-4f06-9fbb-ccb6e9ea67b1.jpg</url>
      <title>DEV Community: Alejandro Congil Sainz</title>
      <link>https://dev.to/alexc-projects</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alexc-projects"/>
    <language>en</language>
    <item>
      <title>Cómo construí un sistema RAG para convertirme en Red Teamer con IA — proyecto en Evolve</title>
      <dc:creator>Alejandro Congil Sainz</dc:creator>
      <pubDate>Sat, 16 May 2026 20:59:06 +0000</pubDate>
      <link>https://dev.to/evolve-space/como-construi-un-sistema-rag-para-convertirme-en-red-teamer-con-ia-proyecto-en-evolve-4b2m</link>
      <guid>https://dev.to/evolve-space/como-construi-un-sistema-rag-para-convertirme-en-red-teamer-con-ia-proyecto-en-evolve-4b2m</guid>
      <description>&lt;p&gt;Llevo meses trabajando en algo que empezó como una necesidad práctica&lt;br&gt;
y se ha convertido en la base de mi estrategia para entrar en el mundo&lt;br&gt;
del Red Team: un sistema RAG personal que indexa todo mi conocimiento&lt;br&gt;
de ciberseguridad y lo hace consultable con lenguaje natural.&lt;/p&gt;

&lt;h2&gt;
  
  
  El problema que quería resolver
&lt;/h2&gt;

&lt;p&gt;Las sesiones del Máster generan una cantidad brutal de material:&lt;br&gt;
clases grabadas, ejercicios, apuntes, herramientas, frameworks...&lt;br&gt;
Todo disperso, todo difícil de recuperar en el momento que lo necesitas.&lt;br&gt;
Cuando estás en medio de un CTF o analizando un vector de ataque,&lt;br&gt;
no puedes permitirte buscar durante 20 minutos en carpetas.&lt;/p&gt;

&lt;p&gt;Quería un sistema que funcionara como un analista interno:&lt;br&gt;
&lt;em&gt;"¿Cómo se hace enumeración de subdominios con Amass?"&lt;/em&gt;&lt;br&gt;
Y que te devolviera el fragmento exacto de la clase donde se explica,&lt;br&gt;
más el contexto relevante.&lt;/p&gt;

&lt;h2&gt;
  
  
  El entorno y los datos
&lt;/h2&gt;

&lt;p&gt;La fuente principal son las sesiones del Máster en Ciberseguridad de Evolve:&lt;br&gt;
22 sesiones grabadas en MP4, apuntes en PDF y ejercicios prácticos.&lt;/p&gt;

&lt;p&gt;El desafío principal era el vídeo: horas de audio técnico denso que&lt;br&gt;
necesitaban ser transcritas, fragmentadas y vectorizadas sin perder&lt;br&gt;
el contexto de cada concepto.&lt;/p&gt;

&lt;p&gt;Estado actual del sistema:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;4.146 fragmentos&lt;/strong&gt; indexados en ChromaDB&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;22 sesiones&lt;/strong&gt; de clase procesadas&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;1.169 herramientas OSINT&lt;/strong&gt; catalogadas&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;33 categorías&lt;/strong&gt; de técnicas de ataque&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  El proceso
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;1. Ingesta de vídeo&lt;/em&gt;&lt;br&gt;
Cada MP4 pasa por &lt;code&gt;ffmpeg&lt;/code&gt; para extraer el audio, luego Whisper&lt;br&gt;
(OpenAI) lo transcribe. El texto resultante se divide en chunks&lt;br&gt;
con solapamiento para no perder contexto entre fragmentos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Embeddings y base vectorial&lt;/strong&gt;&lt;br&gt;
Los chunks se vectorizan con &lt;code&gt;sentence-transformers&lt;/code&gt; y se almacenan&lt;br&gt;
en ChromaDB. Cada fragmento mantiene metadatos: fuente, timestamp,&lt;br&gt;
categoría temática.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Motor RAG&lt;/strong&gt;&lt;br&gt;
La consulta del usuario se vectoriza y se recuperan los K fragmentos&lt;br&gt;
más similares. Claude API (Anthropic) recibe esos fragmentos como&lt;br&gt;
contexto y genera una respuesta fundamentada en el material real del curso.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Interfaces&lt;/strong&gt;&lt;br&gt;
Construí tres interfaces para casos de uso distintos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Chat web&lt;/strong&gt; (Streamlit): consultas en lenguaje natural&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OSINT Lab&lt;/strong&gt;: búsqueda semántica sobre 1.169 herramientas catalogadas&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Framework Tracker&lt;/strong&gt;: seguimiento de técnicas por fase del ataque&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Resultados
&lt;/h2&gt;

&lt;p&gt;El sistema recupera el fragmento correcto con precisión alta incluso&lt;br&gt;
con consultas vagas o en lenguaje coloquial. La diferencia respecto&lt;br&gt;
a una búsqueda por keywords es notable: el RAG entiende contexto,&lt;br&gt;
no solo palabras.&lt;/p&gt;

&lt;p&gt;Lo más valioso: puedo hacer preguntas compuestas tipo&lt;br&gt;
&lt;em&gt;"¿Qué diferencia hay entre la enumeración pasiva y activa según&lt;br&gt;
lo visto en clase, y qué herramientas recomienda el profesor para cada fase?"&lt;/em&gt;&lt;br&gt;
y el sistema cruza información de múltiples sesiones en una respuesta coherente.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lo que aprendí
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;El chunking es más crítico de lo que parece. Chunks demasiado cortos
pierden contexto; demasiado largos diluyen la relevancia.&lt;/li&gt;
&lt;li&gt;Whisper comete errores en términos técnicos específicos (nombres de
herramientas, flags de comandos). Añadí un paso de post-procesado
con diccionario de correcciones.&lt;/li&gt;
&lt;li&gt;La elección del modelo de embeddings afecta mucho la calidad de
recuperación en dominio técnico especializado.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;El siguiente paso es expandir el sistema hacia las fases de explotación&lt;br&gt;
y post-explotación, completando el roadmap Red Team que tengo definido.&lt;/p&gt;




&lt;h2&gt;
  
  
  Ecosistema del proyecto
&lt;/h2&gt;

&lt;p&gt;Este artículo forma parte de un ecosistema interconectado:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Portfolio: &lt;a href="https://alexc-projects.github.io/Proyecto-Master-Ciberseguridad-Evolve-AlejandroCongil" rel="noopener noreferrer"&gt;https://alexc-projects.github.io/Proyecto-Master-Ciberseguridad-Evolve-AlejandroCongil&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/Alexc-projects/Proyecto-Master-Ciberseguridad-Evolve-AlejandroCongil" rel="noopener noreferrer"&gt;https://github.com/Alexc-projects/Proyecto-Master-Ciberseguridad-Evolve-AlejandroCongil&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://www.linkedin.com/pulse/de-las-telecomunicaciones-al-red-team-c%C3%B3mo-uso-ia-mi-congil-sainz-z6h4e/" rel="noopener noreferrer"&gt;https://www.linkedin.com/pulse/de-las-telecomunicaciones-al-red-team-cómo-uso-ia-mi-congil-sainz-z6h4e/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Medium: &lt;a href="https://medium.com/@alejandro.congil5/de-t%C3%A9cnico-de-redes-a-red-teamer-la-ia-como-ventaja-competitiva-en-ciberseguridad-68975e56dd7d" rel="noopener noreferrer"&gt;https://medium.com/@alejandro.congil5/de-técnico-de-redes-a-red-teamer-la-ia-como-ventaja-competitiva-en-ciberseguridad-68975e56dd7d&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Proyecto desarrollado durante el &lt;strong&gt;Máster en Ciberseguridad de &lt;a href="https://evolve.es" rel="noopener noreferrer"&gt;Evolve&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>beginners</category>
      <category>security</category>
    </item>
  </channel>
</rss>
