Un pipeline RAG con n8n y Qdrant
Buscar dentro de tus propios documentos es una de esas cosas que parecen fáciles hasta que lo intentas. El Ctrl+F solo encuentra palabras exactas, y tú, en cambio, preguntas con tus palabras. Para tender ese puente está RAG, que combina un modelo de lenguaje con una base de datos de vectores, y hoy quiero contar cómo lo monto con n8n y Qdrant.
La idea
RAG son las siglas de Retrieval-Augmented Generation, que viene a ser: recuperar la información relevante y dársela al modelo para que responda con ella. En lugar de fiarte de lo que el modelo "recuerda", le pasas los fragmentos que importan y le pides que conteste a partir de ahí.
El flujo, de principio a fin
Lo que hice fue montar una tubería que va de un documento en bruto a una consulta con respuesta. Los pasos son estos.
Primero, la normalización. Del PDF, el DOCX o el Markdown se saca texto plano. Aquí no hay inteligencia, solo limpieza.
Después viene la parte que más me gustó, la segmentación semántica. Aquí se usa un modelo no para responder, sino para entender el documento y partirlo en secciones que tengan sentido por sí mismas. Al modelo se le pide un JSON con el título de cada sección, su tipo, los temas principales y el texto limpio, con la regla de no inventar nada y no superar los 1200 caracteres por sección.
Con ese JSON, un nodo de código genera un elemento por sección, y luego se trocea cada una en fragmentos de unos 800 caracteres sin perder el contexto. Cada fragmento arrastra sus metadatos: título, tipo, temas y origen.
Los embeddings y la inserción
Cada fragmento se convierte en un vector, que no es más que una representación numérica de su significado. Esos vectores se insertan en Qdrant, que es la base de datos que los guarda y los busca por similitud. Aquí está la clave de todo: cada vector queda con su contexto pegado, de modo que luego se puede filtrar y no solo buscar por parecido.
La inserción se hace contra la API HTTP de Qdrant, con los puntos, su vector y su carga útil.
La consulta
A la hora de preguntar, el orden es el inverso. Primero se intenta entender qué quiere el usuario, extrayendo una intención y unos temas. Con eso, se busca en Qdrant aplicando filtros, no solo la similitud del vector. Y con los fragmentos recuperados se construye la respuesta.
Ese filtrado es lo que marca la diferencia entre un buscador que acierta a veces y uno que acierta casi siempre.
Por qué me convence
Lo que me gusta de este montaje es que es genérico. No depende del dominio ni del formato; da igual que sean apuntes, facturas o manuales. Y cada paso se puede afinar por separado, que al final es lo que te permite mejorar sin romper lo que ya funciona.
Si quieres que el modelo que responde corra en tu propia máquina, en la entrada sobre IA local con Ollama cuento cómo.