Olvida las bases de data vectoriales aisladas
En la fiebre actual por implementar RAG (Retrieval-Augmented Generation), veo a demasiados equipos cometiendo el mismo error de arquitectura: la fragmentación.
Montan una base de datos para sus transacciones (Oracle) y otra separada para sus vectores (Pinecone, Milvus, etc.). El resultado es deuda técnica inmediata: pipelines de ETL frágiles, latencia de red innecesaria y, lo más crítico, una pesadilla de seguridad al tener datos sincronizados en dos lugares distintos.
Con Oracle Database 23ai, el tipo de dato VECTOR es nativo. Esto significa que la búsqueda semántica no es un “add-on”, es simplemente SQL.
Aquí la prueba de concepto en 3 pasos.
1. La Arquitectura (DDL)
Ya no necesitas BLOBs oscuros. Definimos un vector con dimensiones y precisión específicas directamente en la tabla relacional.
SQL
CREATE TABLE knowledge_base (
doc_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
category VARCHAR2(50),
content_chunk VARCHAR2(4000),
-- Definición nativa: 3 dimensiones, precisión float32
embedding VECTOR(3, FLOAT32)
);

2. Los Datos (DML)
Los embeddings conviven con la data de negocio. En un escenario de producción, usaríamos DBMS_VECTOR para generar esto automáticamente, pero conceptualmente es esto:
SQL
INSERT INTO knowledge_base (category, content_chunk, embedding) VALUES
('FINANCE', 'Quarterly revenue exceeded projections by 15%', '[0.9, 0.1, 0.0]'),
('HR', 'New remote work policy applies to all departments', '[0.1, 0.9, 0.0]'),
('IT', 'Database latency decreased after index optimization', '[0.8, 0.2, 0.1]');
COMMIT;
3. La ventaja real: “Hybrid Search”
Aquí es donde Oracle gana la partida. Las bases de datos vectoriales puras sufren cuando intentas filtrar por metadatos (fechas, categorías, IDs). En Oracle, combinamos la potencia del Filtro Relacional (WHERE tradicional) con la Distancia Semántica (VECTOR_DISTANCE) en una sola ejecución optimizada.
SQL
SELECT
doc_id,
content_chunk,
-- Cálculo de distancia coseno (similitud semántica)
ROUND(VECTOR_DISTANCE(embedding, '[0.88, 0.12, 0.0]', COSINE), 4) as distance
FROM
knowledge_base
WHERE
category = 'FINANCE' -- Velocidad relacional (B-Tree index)
AND VECTOR_DISTANCE(embedding, '[0.88, 0.12, 0.0]', COSINE) < 0.5 -- Precisión semántica
ORDER BY
distance ASC;
Resultados



Por qué esto importa para tu negocio
- Gobernanza Unificada: Tus vectores heredan la misma seguridad (VPD, RLS, Grants) que tus datos financieros. No hay fugas de datos hacia servicios externos.
- Transaccionalidad (ACID): Si actualizas un registro, actualizas su vector. Sin consistencia eventual.
- Simplicidad en APEX: Al ser SQL estándar, puedes conectar esto directamente a un Interactive Report o un componente de Cards sin capas intermedias de API.
La IA no debe ser un silo. Debe ser una columna más en tu tabla.
select * from v$version;
--Oracle AI Database 26ai Enterprise Edition Release 23.26.1.1.0 - for Oracle Cloud and Engineered Systems
--"Oracle AI Database 26ai Enterprise Edition Release 23.26.1.1.0 - for Oracle Cloud and Engineered Systems
--Version 23.26.1.1.0"