ベクトル検索(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() 関数と大規模な近似ベクトル検索は 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 ベースのベクトルインデックスは開発中。埋め込みは 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 のメトリクスをサポートする。最近傍は 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)ことで関連度を向上できる。