MsSql

Azure SQL Database'de Vector Search: Vektör Tabanlı Arama Nedir?

· 8 dakika okuma · 0
Azure SQL Database'de Vector Search: Vektör Tabanlı Arama Nedir?

Merhaba,

Yapay zeka uygulamalarının hızla yaygınlaşmasıyla birlikte "vektör veritabanı" kavramı IT gündeminin üst sıralarına taşındı. Pinecone, Weaviate, Chroma gibi özelleşmiş vektör veritabanlarının yanında artık tanıdık isimlere de vektör arama özellikleri geliyor. Bunların başında Azure SQL Database var. Bu yazımda elimden geldiğince bu konuyu açıklamaya çalışacağım.

Vektör Nedir, Neden Lazım ?

Önce temelden girelim. Klasik veritabanı araması metin eşleştirmesi üzerine kurulu: "şu kelimeyi içeren kayıtları getir." Ama anlamsal arama farklı çalışıyor.

Vektör, bir metni, resmi veya sesi sayısal koordinatlar dizisine dönüştürüyor. OpenAI'nin text-embedding-ada-002 modeli bir metni 1536 boyutlu bir vektöre çeviriyor mesela. Anlamca benzer metinlerin vektörleri uzayda birbirine yakın duruyor. Bu sayede "anlamca benzer şeyleri bul" diye sorgulayabiliyorsunuz.

Peki bu ne işe yarar? En popüler kullanım senaryoları şunlar:

  • Semantik döküman arama (tam kelime geçmese de anlamca ilgili dokümanlar gelsin)
  • RAG (Retrieval Augmented Generation) mimarileri — LLM'lere kendi verinizi bağlamak
  • Ürün öneri sistemleri
  • Duplicate içerik tespiti

Azure SQL'de Vector Search Nasıl Çalışıyor ?

Microsoft, Azure SQL Database ve SQL Server 2022'ye native vektör depolama ve arama yeteneği ekliyor. Bu özellik şu an preview aşamasında ama kurumsal senaryolar için test etmeye değer.

Temel konsept şu:

  • Vektörler VECTOR veri tipiyle saklanıyor (veya şu an için binary formatında)
  • VECTOR_DISTANCE fonksiyonuyla iki vektör arasındaki mesafe hesaplanıyor (cosine, euclidean, dot product destekleniyor)
  • En yakın komşuları bulmak için sıralama yapılıyor
SELECT TOP 5
    d.Id,
    d.Baslik,
    VECTOR_DISTANCE('cosine', d.Embedding, @sorgu_vektoru) AS Mesafe
FROM Dokumanlar d
ORDER BY Mesafe ASC;

Özelleşmiş Vektör DB'ye Karşı SQL'de Vektör

Dürüst olmak gerekirse: Pinecone veya Weaviate gibi özelleşmiş vektör veritabanları şu an için performans açısından Azure SQL'i geçiyor. Milyonlarca vektör üzerinde milisaniye altı sorgu süresi istiyorsanız özelleşmiş çözümler daha iyi.

Ama şu avantajı göz ardı etmeyin: Kurumsal veri zaten SQL'de duruyor. Vektörleri de aynı yerde saklayabilmek; ek altyapı maliyeti, senkronizasyon sorunu ve yeni güvenlik katmanı olmadan vektör arama yapmak anlamına geliyor. Orta ölçekli kurumsal kullanım için bu yeterli ve cazip.

Başlamak için Ne Lazım ?

Temel adımlar şunlar:

  • Mevcut içeriklerinizi (dökümanlar, ürün açıklamaları vs vs) OpenAI veya Azure OpenAI Embeddings API ile vektöre çevirin
  • Bu vektörleri Azure SQL'de saklayın
  • Kullanıcı sorgusunu da aynı modelle vektöre çevirip veritabanında en yakın komşuları sorgulayın

İlerleyen aylarda bu konuyla ilgili pratik bir örnek yazısı yazmayı planlıyorum. Bu alan çok hızlı gelişiyor, takipte kalın.

İyi Günler Dilerim,

Bu yazıyı paylaş: