Векторный поиск (AI/эмбеддинги)
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 предлагает нативный тип данных VECTOR и функцию AI Vector Search. Функция VECTOR_DISTANCE вычисляет сходство по метрикам COSINE/EUCLIDEAN/DOT; для приближённого поиска поддерживаются векторные индексы HNSW и IVF. Эмбеддинги генерируются в базе или внешними моделями.
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;Расширение pgvector добавляет в PostgreSQL тип vector и операторы сходства: <-> (L2/евклидово), <=> (косинусное), <#> (скалярное произведение). Индексы HNSW или IVFFlat ускоряют приближённый поиск ближайших соседей (ANN). Широко используется в RAG и семантическом поиске.
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 добавил нативный тип данных VECTOR и функции STRING_TO_VECTOR/VECTOR_TO_STRING и VECTOR_DIM (также в Community). Функция DISTANCE() и масштабный приближённый векторный поиск доступны только в MySQL HeatWave в Oracle Cloud; в Community/Enterprise вычисляйте расстояния в приложении или во внешнем векторном хранилище. Старым локальным версиям нужно внешнее векторное хранилище.
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 (и Azure SQL) предлагают нативный тип данных vector и функцию VECTOR_DISTANCE (cosine/euclidean/dot); векторные индексы на основе DiskANN для приближённого поиска ближайших соседей в разработке. Эмбеддинги генерируются внешними моделями, например Azure OpenAI, и сохраняются.
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 запрашивает эмбеддинги этапом агрегации $vectorSearch; внутри выполняется приближённый поиск ближайших соседей на основе HNSW. Векторный индекс определяется как индекс Atlas Search. Функция доступна только в управляемом сервисе Atlas (нет в локальной редакции Community).
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 обеспечивает векторный поиск через модуль RediSearch (Redis Stack); тип поля VECTOR поддерживает индексы FLAT (точный) или HNSW (приближённый) и метрики COSINE/L2/IP. Ближайшие соседи извлекаются синтаксисом KNN внутри FT.SEARCH. Используется для семантического поиска с низкой задержкой и 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 поддерживает запросы приближённого поиска ближайших соседей (HNSW) через тип поля dense_vector и встроенный knn-поиск; сходство может быть cosine/dot_product/l2_norm. Релевантность можно улучшить, комбинируя векторный поиск с классическим текстовым запросом (гибридный поиск / RRF).