Ana içeriğe geç
Kesit SQL
İleri · Yapay Zekâ ile SQL

Veritabanında yapay zekâ: embedding ve vektör benzerlik araması

Anlamsal arama, kosinüs benzerliği, pgvector, SQL Server 2025 VECTOR, BigQuery VECTOR_SEARCH.

Uygulamada aç, 7 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

Kelimeyle değil anlamla aramak

“Kablosuz kulaklık” arayan biri “Bluetooth hoparlör”ü de görmek isteyebilir; LIKE bunu bulamaz. Yapay zekâ modelleri bir metni (veya görseli) yüzlerce sayıdan oluşan bir vektöre (embedding) çevirir. Anlamca yakın metinlerin vektörleri birbirine yakındır. Veritabanı bu vektörleri saklayıp “en yakın olanları” bulduğunda anlamsal arama yapmış olur. RAG (retrieval-augmented generation) denen, şirket belgeleriyle konuşan sohbet botları da bu yöntemle çalışır.

Kosinüs benzerliği

İki vektör arasındaki açının kosinüsüdür: 1'e ne kadar yakınsa o kadar benzerdir.

benzerlik = Σ(aᵢ·bᵢ) ÷ ( √Σaᵢ² · √Σbᵢ² )

Gerçek embedding'ler 384–3072 boyutludur; fikri görmek için 3 boyutlu küçük bir örneği düz SQL ile hesaplayalım:

WITH emb AS (
    SELECT 1 AS product_id, 0.90 AS x, 0.10 AS y, 0.05 AS z UNION ALL   -- Kablosuz Kulaklık
    SELECT 3, 0.80, 0.20, 0.10 UNION ALL                                  -- Bluetooth Hoparlör
    SELECT 9, 0.05, 0.90, 0.20 UNION ALL                                  -- Suç ve Ceza
    SELECT 28, 0.10, 0.20, 0.95                                           -- Yoga Matı
)
SELECT b.product_id,
       p.name,
       ROUND((a.x * b.x + a.y * b.y + a.z * b.z)
             / (SQRT(a.x * a.x + a.y * a.y + a.z * a.z) * SQRT(b.x * b.x + b.y * b.y + b.z * b.z)), 3) AS benzerlik
FROM emb a
JOIN emb b ON b.product_id <> a.product_id
JOIN products p ON p.product_id = b.product_id
WHERE a.product_id = 1
ORDER BY benzerlik DESC;

SQL türlerinde vektör desteği

SQL türüNasıl?
SQL Server 2025 / Azure SQLVECTOR(1536) veri tipi, VECTOR_DISTANCE('cosine', a, b), vektör indeksi
PostgreSQLpgvector eklentisi: vector(1536) tipi, a <=> b (kosinüs mesafesi), HNSW indeksi
Oracle 23aiVECTOR tipi, VECTOR_DISTANCE, AI Vector Search
BigQueryML.GENERATE_EMBEDDING ile embedding üretme, VECTOR_SEARCH ile arama
MySQL 9VECTOR tipi (HeatWave'de vektör araması)
-- PostgreSQL + pgvector
CREATE EXTENSION IF NOT EXISTS vector;
ALTER TABLE products ADD COLUMN embedding vector(1536);

SELECT name
FROM products
ORDER BY embedding <=> (SELECT embedding FROM products WHERE product_id = 1)
LIMIT 5;

-- SQL Server 2025
SELECT TOP (5) name,
       VECTOR_DISTANCE('cosine', embedding, @soru_vektoru) AS mesafe
FROM dbo.products
ORDER BY mesafe;
Mesafe mi benzerlik mi?Çoğu veritabanı mesafe döndürür (kosinüs mesafesi = 1 − benzerlik); bu yüzden küçükten büyüğe sıralanır.
Alıştırmalara geç (7)