DBAtlas · Atlas de operações de banco de dados

Busca vetorial (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;

O Oracle Database 23ai oferece um tipo de dado VECTOR nativo e o recurso AI Vector Search. A função VECTOR_DISTANCE calcula a similaridade com as métricas COSINE/EUCLIDEAN/DOT; índices vetoriais HNSW e IVF são suportados para busca aproximada. Os embeddings são gerados dentro do banco ou com 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;

A extensão pgvector adiciona ao PostgreSQL um tipo vector e operadores de similaridade: <-> (L2/euclidiana), <=> (cosseno), <#> (produto interno). Índices HNSW ou IVFFlat aceleram a busca aproximada de vizinhos mais próximos (ANN). Muito usada em aplicações de RAG e busca 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;

O MySQL 9.0 adicionou o tipo de dado VECTOR nativo e as funções STRING_TO_VECTOR/VECTOR_TO_STRING e VECTOR_DIM (também no Community). A função DISTANCE() e a busca vetorial aproximada em escala estão disponíveis apenas no MySQL HeatWave na Oracle Cloud; no Community/Enterprise, calcule as distâncias na aplicação ou em um vector store externo. Versões on-premises mais antigas exigem um vector store 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;

O SQL Server 2025 (e o Azure SQL) oferecem um tipo de dado vector nativo e a função VECTOR_DISTANCE (cosine/euclidean/dot); índices vetoriais baseados em DiskANN para busca aproximada de vizinhos mais próximos estão em desenvolvimento. Os embeddings são gerados com modelos externos, como o Azure OpenAI, e armazenados.

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
  } }
])

O MongoDB Atlas Vector Search consulta embeddings com o estágio de agregação $vectorSearch; internamente, faz busca aproximada de vizinhos mais próximos baseada em HNSW. O índice vetorial é definido como um índice do Atlas Search. Esse recurso é específico do serviço gerenciado Atlas (não está disponível na edição 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 "..."

O Redis fornece busca vetorial pelo módulo RediSearch (Redis Stack); o tipo de campo VECTOR suporta índices FLAT (exato) ou HNSW (aproximado) e as métricas COSINE/L2/IP. Os vizinhos mais próximos são obtidos com a sintaxe KNN dentro de FT.SEARCH. Usado para busca semântica de baixa latência e 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 } }

O Elasticsearch suporta consultas aproximadas de vizinhos mais próximos (HNSW) com o tipo de campo dense_vector e a busca knn nativa; a similaridade pode ser cosine/dot_product/l2_norm. A relevância pode ser melhorada combinando a busca vetorial com uma consulta de texto clássica (busca híbrida / RRF).

Abrir no DBAtlas →