RAG local con n8n + Qdrant + OpenAI

n8n Tecnologías Sanitarias INTELIGENCIA ARTIFICIAL Inteligencia artificial IA
Manual Qdrant + n8n + RAG

📘 Manual Completo: Bases de Datos Vectoriales con Qdrant y n8n

Este manual explica de forma cronológica, didáctica y detallada cómo desplegar, conectar y aprovechar bases de datos vectoriales en local con Qdrant, integrándolas con flujos de automatización en n8n y aplicaciones de RAG (Retrieval-Augmented Generation).

1. Concepto de Base de Datos Vectorial

Una base de datos vectorial permite almacenar y consultar representaciones numéricas de datos (vectores), optimizada para la búsqueda semántica mediante distancias matemáticas (coseno, euclídea, dot product).

2. Desplegar Qdrant en local

Opción A · Docker

mkdir -p ~/qdrant_storage
docker run -d --name qdrant \
  -p 6333:6333 \
  -v ~/qdrant_storage:/qdrant/storage \
  qdrant/qdrant:latest

# Salud
curl http://localhost:6333/readyz

Opción B · Docker Compose

version: "3.9"
services:
  qdrant:
    image: qdrant/qdrant:latest
    ports:
      - "6333:6333"
    volumes:
      - ./qdrant_storage:/qdrant/storage
    restart: unless-stopped

Qdrant expone la API REST en http://localhost:6333.

3. Ejemplo de uso directo en Python

from qdrant_client import QdrantClient
from qdrant_client.models import Distance, VectorParams
import numpy as np

# Conexión
client = QdrantClient("http://localhost:6333")

# Crear colección
client.recreate_collection(
    collection_name="demo",
    vectors_config=VectorParams(size=3, distance=Distance.COSINE)
)

# Insertar puntos
vectors = [
    np.array([0.1, 0.2, 0.3]),
    np.array([0.9, 0.8, 0.7])
]

payload = [{"id": 1, "texto": "Hola mundo"}, {"id": 2, "texto": "Adiós mundo"}]

client.upsert(
    collection_name="demo",
    points=[{"id": i, "vector": v.tolist(), "payload": p} for i, (v, p) in enumerate(zip(vectors, payload), 1)]
)

# Búsqueda semántica
query = np.array([0.1, 0.2, 0.25])
hits = client.search(collection_name="demo", query_vector=query.tolist(), limit=2)

for h in hits:
    print(h)

4. Flujo en n8n

  1. Webhook: recibe consulta del usuario.
  2. OpenAI: genera embedding del texto.
  3. HTTP Node: consulta a Qdrant con el vector.
  4. OpenAI GPT: genera respuesta con contexto recuperado.
  5. Respuesta: devuelve la contestación al usuario.

5. Variante avanzada con almacenamiento

Se añade un nodo de almacenamiento (ej. PostgreSQL, SQLite o Airtable) para guardar:

  • Consultas de usuario
  • Respuestas generadas
  • Vectores asociados

Esto permite construir un histórico de interacciones y optimizar la base vectorial.

6. Diagramas visuales

Flujo Básico

Flujo básico Qdrant + n8n

Flujo Avanzado

Flujo avanzado con almacenamiento

Conclusión

Con este manual tienes la guía completa para:

  • Entender qué es una base vectorial
  • Desplegar Qdrant en local
  • Ejecutar búsquedas semánticas con Python
  • Integrar n8n en flujos de RAG
  • Escalar con almacenamiento avanzado

1 comentario en «RAG local con n8n + Qdrant + OpenAI»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *