EJEMPLO SENCILLO DE VECTOR Y DE UNA BÚSQUEDA SEMÁNTICA Y SU USO EN IA

Ejemplo de pequeña base de conocimiento de artículos donde el usuario pueda hacer preguntas en lenguaje natural y MariaDB devuelva los artículos más relevantes (búsqueda semántica), ideal para usar con ChatGPT, Claude, Gemini, etc. (RAG básico).
  1. Creación de la tabla con VECTOR:

    CREATE TABLE articulos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    titulo VARCHAR(300) NOT NULL,
    contenidoTEXT NOT NULL,
    embeddingVECTOR(1536) NOT NULL,  -- Usamos 1536 (OpenAI text-embedding-3-small)
    
    -- Índice vectorial (imprescindible para buena velocidad)
    VECTOR INDEX idx_embedding (embedding) 
    DISTANCE=cosine 
    M=16
    ) ENGINE=InnoDB;
    
  2. Insertar datos con embeddings: Supongamos que ya generaste los embeddings. Aquí insertamos algunos artículos:

    INSERT INTO articulos (titulo, contenido, embedding) VALUES
    ('¿Qué es MariaDB?', 
     'MariaDB es un fork de MySQL, muy rápido y con gran compatibilidad...', 
     VEC_FromText('[0.021, -0.045, 0.678, ..., 0.123]')),-- 1536 valores
    
    ('Ventajas de usar vectores en bases de datos', 
     'Los vectores permiten búsquedas semánticas mucho más inteligentes que LIKE...', 
     VEC_FromText('[-0.12, 0.34, ..., 0.89]')),
    
    ('Cómo crear un chatbot con RAG', 
     'RAG significa Retrieval Augmented Generation. Combina búsqueda + IA generativa...', 
     VEC_FromText('[0.45, -0.67, 0.23, ..., -0.11]'));
    
    Nota: En la vida real, no escribes los 1536 números a mano. Los generas con Python, Node.js o PHP.
  3. Búsqueda Semántica:

    -- Ejemplo: El usuario pregunta: "¿Qué es MariaDB y para qué sirve?"
    SET @pregunta_embedding = VEC_FromText('[0.015, -0.032, 0.712, ..., 0.098]');-- Embedding de la pregunta
    SELECT 
    id,
    titulo,
    contenido,
    VEC_DISTANCE_COSINE(embedding, @pregunta_embedding) AS similitud
    FROM articulos
    ORDER BY similitud ASC -- Menor distancia = más similar (con cosine)
    LIMIT 3;
    
    Ejemplo de resultado esperado
    ID Título Similitud
    1 ¿Qué es MariaDB? 0.89
    3 Cómo crear un chatbot con RAG 0.71
    2 Ventajas de usar vectores en bases de datos 0.58
  4. Uso en Inteligencia Artificial (RAG sencillo) Una vez que se tienen los artículos más relevantes, se envían junto con la pregunta del usuario a un modelo de IA:
    1. Flujo típico: Usuario pregunta → "¿MariaDB soporta vectores?"
    2. Generar el embedding de la pregunta (con OpenAI, Cohere, etc.).
    3. Hacesrla búsqueda semántica en MariaDB (como arriba).
    4. Tomar los 3-5 mejores resultados.
    5. Construirs un prompt como este:

      Responde a la pregunta del usuario usando solo la siguiente información:
      
      Artículo 1: ¿Qué es MariaDB? 
      Contenido: MariaDB es un fork...
      
      Artículo 2: ...
      
      Pregunta del usuario: ¿MariaDB soporta vectores?
      
      Respuesta:
      
    6. Envíar el prompt a ChatGPT / Claude / Grok / etc.

Versión más práctica con una sola consulta

SET @query_embedding = VEC_FromText('[... embedding de la pregunta ...]');

SELECT 
titulo,
contenido,
VEC_DISTANCE_COSINE(embedding, @query_embedding) AS score
FROM articulos
ORDER BY score ASC
LIMIT 5;

Resumen del flujo completo (IA + MariaDB)

  1. El usuario hace una pregunta en lenguaje natural.
  2. Generar el embedding de la pregunta.
  3. Buscar en MariaDB usando búsqueda semántica (VECTOR + cosine).
  4. Recuperar los documentos más relevantes.
  5. Se pasan al modelo de IA junto con la pregunta → el modelo responde de forma precisa y contextualizada.