向量搜索(AI/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 提供原生 VECTOR 数据类型和 AI Vector Search 功能。VECTOR_DISTANCE 函数使用 COSINE/EUCLIDEAN/DOT 度量计算相似度;近似搜索支持 HNSW 和 IVF 向量索引。embedding 在数据库内或通过外部模型生成。
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() 函数和大规模近似向量搜索仅在 Oracle Cloud 的 MySQL HeatWave 中提供;在 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 的向量索引正在开发中。embedding 通过 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 聚合阶段查询 embedding;底层执行基于 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 度量。最近邻通过 FT.SEARCH 中的 KNN 语法检索。用于低延迟语义搜索和 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 通过 dense_vector 字段类型和内置 knn 搜索支持近似最近邻(HNSW)查询;相似度可以是 cosine/dot_product/l2_norm。将向量搜索与传统文本查询结合(混合搜索 / RRF)可提高相关性。