DBAtlas · Atlas de operaciones de bases de datos

Búsqueda vectorial (IA/embeddings)

Oracle

-- Oracle 23ai native VECTOR type:
CREATE TABLE docs (id NUMBER, content CLOB, embedding VECTOR);
-- Similarity search (cosine distance):
SELECT id FROM docs
ORDER BY VECTOR_DISTANCE(embedding, :query_vector, COSINE)
FETCH FIRST 5 ROWS ONLY;

Oracle Database 23ai ofrece un tipo de datos VECTOR nativo y la función AI Vector Search. La función VECTOR_DISTANCE calcula la similitud con las métricas COSINE/EUCLIDEAN/DOT; se admiten índices vectoriales HNSW e IVF para búsqueda aproximada. Los embeddings se generan en la base de datos o con modelos externos.

PostgreSQL

-- pgvector extension:
CREATE EXTENSION IF NOT EXISTS vector;
CREATE TABLE docs (id int, embedding vector(1536));
CREATE INDEX ON docs USING hnsw (embedding vector_cosine_ops);
-- 5 nearest neighbors (<-> Euclidean, <=> cosine):
SELECT id FROM docs ORDER BY embedding <=> :query_vec LIMIT 5;

La extensión pgvector añade a PostgreSQL un tipo vector y operadores de similitud: <-> (L2/euclídea), <=> (coseno), <#> (producto interno). Los índices HNSW o IVFFlat aceleran la búsqueda aproximada de vecinos más cercanos (ANN). Muy usada en aplicaciones de RAG y búsqueda semántica.

MySQL

-- MySQL 9.0+ native VECTOR type:
CREATE TABLE docs (id INT, embedding VECTOR(1536));
-- Cosine distance (DISTANCE is HeatWave-only):
SELECT id, DISTANCE(embedding, :query_vec, 'COSINE') AS d
FROM docs ORDER BY d LIMIT 5;

MySQL 9.0 añadió el tipo de datos VECTOR nativo y las funciones STRING_TO_VECTOR/VECTOR_TO_STRING y VECTOR_DIM (también en Community). La función DISTANCE() y la búsqueda vectorial aproximada a escala solo están disponibles en MySQL HeatWave en Oracle Cloud; en Community/Enterprise, calcule las distancias en la aplicación o en un almacén vectorial externo. Las versiones on-premises anteriores requieren un almacén vectorial externo.

SQL Server

-- SQL Server 2025 native vector type:
CREATE TABLE docs (id INT, embedding VECTOR(1536));
-- Nearest neighbors by cosine distance:
SELECT TOP 5 id,
  VECTOR_DISTANCE('cosine', embedding, @query_vec) AS distance
FROM dbo.docs ORDER BY distance;

SQL Server 2025 (y Azure SQL) ofrecen un tipo de datos vector nativo y la función VECTOR_DISTANCE (cosine/euclidean/dot); los índices vectoriales basados en DiskANN para la búsqueda aproximada de vecinos más cercanos están en desarrollo. Los embeddings se generan con modelos externos como Azure OpenAI y se almacenan.

MongoDB

// Atlas Vector Search ($vectorSearch aggregation stage):
db.docs.aggregate([
  { $vectorSearch: {
      index: "vector_idx",
      path: "embedding",
      queryVector: [0.12, 0.87, /* ... */],
      numCandidates: 100,
      limit: 5
  } }
])

MongoDB Atlas Vector Search consulta embeddings con la etapa de agregación $vectorSearch; internamente realiza una búsqueda aproximada de vecinos más cercanos basada en HNSW. El índice vectorial se define como un índice de Atlas Search. Esta función es específica del servicio gestionado Atlas (no está disponible en la edición Community on-premises).

Redis

# Requires the RediSearch (Redis Stack) VECTOR field type.
# Define an HNSW vector index:
FT.CREATE docs_idx ON HASH PREFIX 1 docs: SCHEMA
  embedding VECTOR HNSW 6 TYPE FLOAT32 DIM 1536 DISTANCE_METRIC COSINE
# KNN search (with a query vector):
FT.SEARCH docs_idx "*=>[KNN 5 @embedding $vec]" PARAMS 2 vec "..."

Redis proporciona búsqueda vectorial mediante el módulo RediSearch (Redis Stack); el tipo de campo VECTOR admite índices FLAT (exacto) o HNSW (aproximado) y las métricas COSINE/L2/IP. Los vecinos más cercanos se obtienen con la sintaxis KNN dentro de FT.SEARCH. Se usa para búsqueda semántica de baja latencia y RAG.

Elasticsearch

# dense_vector field and kNN search:
PUT docs
{ "mappings": { "properties": { "embedding":
  { "type": "dense_vector", "dims": 1536, "similarity": "cosine" } } } }
GET docs/_search
{ "knn": { "field": "embedding", "query_vector": [0.12, 0.87],
  "k": 5, "num_candidates": 100 } }

Elasticsearch admite consultas aproximadas de vecinos más cercanos (HNSW) con el tipo de campo dense_vector y la búsqueda knn integrada; la similitud puede ser cosine/dot_product/l2_norm. La relevancia se puede mejorar combinando la búsqueda vectorial con una consulta de texto clásica (búsqueda híbrida / RRF).

Abrir en DBAtlas →