Vector Search Nedir? Teorik Değerlendirmede Bulunalım…
Merhaba,
Bu içeriğimizde, geleneksel kelime eşleştirmeden farklı olarak, semantik anlamları yakalayıp daha doğru sonuçlar elde edebilmek, kullanıcıların geçmiş davranışlarına benzer içerikler önerebilmek ve görüntü, ses veya video gibi multimedya içeriklerin temsil edilip karşılaştırılmasını sağlayabilmek için tercih edilen Vector Search yaklaşımını inceleyecek ve böylece anlam temelli karşılaştırmaların nasıl yapıldığını teoride değerlendiriyor olacağız. O halde fazla vakit kaybetmeksizin buyurun başlayalım…
Vector/Vektör Nedir?
Vector/Vektör, matematiksel olarak bir sayı dizisidir ve genellikle çok boyutlu bir uzayda bir noktayı temsil etmektedir. Bilgisayar ve veri bilimlerinde ise genellikle metin, resim, ses vs. gibi karmaşık verileri sayısal bir formda ifade etmemizi sağlamakta ve bu sayısal temsiller ile bu verilerin özelliklerini(örneğin; bir metinin anlamını, bir resmin görsel özelliklerini vs.) yakalamamıza imkan tanımaktadır.
Vektör; verinin anlamını yoğun bir şekilde kodlayarak veriyi AI modeli tarafından okunabilir hale getirir. Aynı/bitişik anlamlar yakın; farklı anlamlar uzak sayılar üretirler. Böylece
'Ankara - Türkiye + İran ≈ Tahran'gibi sezgisel çıkarımlar yapabilmekteyiz. Ne demek bu? derseniz eğer; Ankara vektöründen Türkiye vektörünü çıkarınca elde bir ülkenin başkentine giden yön kalacak, haliyle İran’a bu vektörü ekleyince yön Tahran’ı işaret edecektir.
Vektörlerin amacı, bu karmaşık verileri makine öğrenimi modellerinin anlayabileceği ve işleyebileceği bir formata dönüştürmektir. Misal olarak; bir kelimeyi veya cümleyi temsil eden bir vektör, o kelimenin veya cümlenin anlamsal içeriğini sayısal olarak ifade etmektedir. Haliyle bizler bu sayısal ifadeleri kullanarak görüntü işlemede, tavsiye sistemlerinde, arama motorlarında yahut doğal dil işleme süreçlerinde çalışmalar gerçekleştirebilmekteyiz.
Vector Search/Vektör Araması Nedir?
Vector search, verileri vektör formunda temsil ederek, bu vektörler arasındaki benzerlikleri ölçen ve en benzer sonuçları döndüren bir arama yöntemidir. Geleneksel anahtar kelime tabanlı aramalardan farklı olarak vector search, verilerin anlamsal veya yapısal benzerliklerini dikkate almaktadır.
Çalışma mantığı nasıldır?
Çalışma mantığı; vektör dönüşümü, benzerlik ölçümü ve sonuçların sıralanması olmak üzere üç odağa dayanmaktadır.
- Vektör Dönüşümü
Öncelikle aranacak veriler(metin, görüntü vs.) bir makine öğrenimi modeli kullanılarak(örneğin; BERT, ResNet) vektörlere dönüştürülür. Bu vektörler, verinin anlamını veya özelliklerini sayısal olarak temsil ederler. - Benzerlik Ölçümü
Bir sorgu(misal olarak bir kelime, cümle veya görüntü) aynı şekilde vektöre dönüştürülür. Ardından
bu sorgu vektörü ile veritabanındaki diğer vektörler arasında benzerlik hesaplanır. Yaygın olarak aşağıdaki benzerlik ölçüleri kullanılır?- Kosinüs Benzerliği
İki vektör arasındaki açıyı ölçer. Anlam açısından benzerlik için sıkça kullanılır. - Öklid Mesafesi
Vektörler arasındaki düz mesafeyi hesaplar.
- Kosinüs Benzerliği
- Sonuçların Sıralanması
En yüksek benzerlik puanına sahip vektörler(yani ilgili veriler) kullanıcıya sunulur.
Böylece vektörler metin tabanlı ya da anahtar kelimeler yerine anlam benzerliğinin bulunması gereken anlamsal aramalarda, bir görüntüye benzer diğer görüntüleri bulmanın gerektiği Google Görsel Arama misali görüntü arama durumlarında, kullanıcıya benzer ürünleri tavsiye etmesi gereken sistemlerde, kullanıcı sorularına anlamsal olarak en uygun yanıtları bulmanın gerektiği chatbot veya soru-cevap gibi sistemlerde ve büyük veri setlerinden benzer pattern’ları veya ilişkili içerikleri bulmak için gerçekleştirilen veri keşif süreçlerinde kullanılır.
Anlayacağınız vector search, geleneksel kelime tabanlı arama yaklaşımlarından ziyade anlama göre içerik bulmamızı sağlayan ve böylece alışılageldik davranışları ve yöntemleri değiştirerek insan benzeri bir değerlendirmeyle daha yararlı çalışmalar sergileyen bir yöntemdir. Bu minvalde, “Yozgat’ta gezilecek tarihi yerler” şeklinde bir arama yapıldığında, vector search tam olarak sadece sizin kelimelerinizi kullanmayacak ve “Yozgat’ta gezilecek yerler”, “Yozgat’ta medeniyet izleri”, “Yozgat olduğuna emin misin a*” şeklinde değerlendirmelerde bulunup bu metinlerle ilgili arama sonuçlarını da bulup, getirecektir. Bunun nedeni, vektör sonuçlarının yalnızca yazılanlardan değil, ne demek istediğinizi de anlamasından kaynaklanmaktadır.
Kelimelerden veya Resimlerden Sayılara Nasıl Ulaşılır?
Vector search’ün esas olarak kalbinde Vector Embeddings kavramı mevcuttur. Bu kavramı anlamadan kelimelerin ve resimlerin nasıl sayılara dönüştürüldüğünü anlamak biraz zor olacaktır. Haliyle öncelikle bu kavrama odaklanmalıyız…
Vector embeddings, kelimeler veya görseller gibi yapısal olmayan verileri sabit boyutlu sayısal vektörlere dönüştüren bir temsildir. Bu vektörler ile kral ile kraliçe arasındaki yakınlık gibi anlamsal benzerlikler korunmakta, matematiksel işlemler yapılacak kadar hesaplamaya uygunluk söz konusu olmakta ve anlamsal olarak üretilen veri yüksek boyutlu uzayda yer edinebilmektedir.
Neden vector embeddings’e ihtiyaç duyuyoruz?
Çünkü her ne kadar yapay zeka çağında olsak da bilgisayarlar bizim gibi anlam yapısına sahip değildirler ve hala sayılarla çalışmaktadırlar. Yani bizlerin bir kelime görmesiyle tarifsiz bir kimya neticesinde kafamızda anlam canlanması gerçekleşmektedir, lakin bilgisayarlar için bu kelime esasında sadece karakterden ibarettir. İşte bu noktada vector embedding devreye girmekte ve bilgisayar açısından anlama anlam kazandırmaktadır.
Şimdi aşağıdaki örnek üzerinden, yapısal olmayan verilerde anlamsal yakınlığın sayılarla nasıl temsil edildiğini inceleyerek içeriğe devam edelim…
- kedi >>> [0.21, -0.54, 0.66, …]
- köpek >>> [0.19, -0.50, 0.60, …]
- uçak >>> [-0.95, 0.14, 0.22, …]
Yukarıdaki çalışmada görüldüğü üzere her kelime artık bir sayı dizisine dönüştürülmüştür. Tabi bu sayılar rastgele değildir. Dikkat ederseniz anlamsal yakınlıklar sayılardan anlaşılmaktadır. Yani ‘kedi’ ile ‘köpek’ arasındaki yakınlık ‘uçak’a nazaran aşikar olduğu sayılardan da görülebilmektedir.
İşte bu vektörleri yukarıdaki görselde olduğu gibi üç boyutlu uzayda resmedersek eğer anlamsal olarak yakınlık arz edenlerin zahirende birbirlerine yakın koordinatlara konuşlandığını gözlemliyor olacağız. Vector search’de tıpkı bu görselde olduğu gibi aynı mantıkta, komleks veriler vektörel verilere dönüştürüldükten sonra arama süreçlerinde birbirlerine anlamsal yakınlık gösteren verileri netice olarak istemciye sunacak ve böylece yazılıma daha insani bir davranış kazandırmış olacaktır.
Tabi şimdi burada bu ‘kedi’, ‘köpek’ ve ‘uçak’ verilerini ve hatta diğer metinsel, görsel vs. verileri sayısal verilere kimin/neyin nasıl dönüştürdüğünü merak ediyor olma ihtimaliniz yüksek! Haliyle hemen izah etmekte fayda var… Bu dönüşüm süreçleri, sihirli bir şekilde olmasa da yapay zeka modelleri tarafından etkileyici bir mühendislik süreci neticesinde gerçekleştirilmektedir.
Misal olarak, metinsel veriler; BERT, GPT, Word2Vec gibi NLP modelleri tarafından, görsel veriler; ResNET, CLIP, DINO gibi görsel modeller tarafından, ses verileri ise Wav2Vec ve Whisper gibi ses modelleri tarafından vektörlere dönüştürülmektedir. Tabi bir yandan da birden fazla veri türünü bir arada dönüştürebilen CLIP, Flamin, Gemini gibi multi-modal modeller de ihtiyaçlar doğrultusunda tercih edilebilmektedir.
Peki hoca! Bi basitinden metinlerin sayısal verilere dönüşüm sürecinden bahsetsen la? şeklinde nazik istirhamınızı duyar gibiyim… Hadi gelin bahsedelim… Metinlerin sayısal verilere dönüştürülme süreci aşağıdaki gibi tokenizasyon, sayısal temsil ve embedding layer olmak üzere üç aşamadan oluşmaktadır;
- Tokenizasyon
Metin; önce kelime, hece, karakter parçacıkları gibi mümkün mertebe küçük parçalara bölünür.Örneğin;
‘Sabuncuoğlu Şerafettin’ ➥ [‘Sabuncu’, ‘oğlu’, ‘şe’, ‘ra’, ‘fettin’] - Sayısal Temsil (Token ID)
Her parça bir ID alır.Örneğin;
[‘Sabuncu’, ‘oğlu’, ‘şe’, ‘ra’, ‘fettin’] ➥ [123, 234, 234, 32423, 23423] - Embedding Layer (Gömme Katmanı)
Bu ID’ler, embedding matrisinden geçirilerek sayı dizilerine çevrilir.Örneğin;
[0.21, -0.54, 0.66, …]Bu matris; kelime, cümle, görsel veya herhangi bir verinin sayısal (vektörel) temsillerini barındıran çok boyutlu bir matristir. Yapay zeka modeli tarafından embedding sürecinde milyonlarca veri anlamlaştırılır ve hangi metinsel ya da görsel veri hangi veriye yakın gibi ilişkiler sayısal olarak ortaya çıkarılmış olur. Böylece nihai olarak her verinin çok boyutlu bir anlam vektörü sağlanmış ve matrisi oluşturulmuş olunacaktır.
Metinsel verilerin sayısal hale dönüştürülmesi mantıken bu kadar kolaydır… Benzer mantığın görsel veriler için de geçerli olduğunu söyleyebiliriz. Önce resim piksellere bölünür, ardından CLIP ya da ResNet gibi görsel modellerle bu pikseller işlenir ve son olarak da vektör veriler yapay zeka modeli tarafından üretilir.
Vector Embeddings Nasıl Çalışır?
LLM ile bir embedding çıkarımı(inference) elde edilirken sergilenen yaklaşım şöyle olacaktır; LLM önce, kelimelerin çevresindeki diğer kelimeleri inceleyecektir.
Örneğin,
‘Kedi süt içer’ – ‘Bebek süt içer’
Bu örneklerden, ‘kedi’ ve ‘bebek’in her ikisinin de ‘süt’ ile ilişkili olduğunu öğrenecek ve ardından tüm kelimeleri çok boyutlu bir koordinat sistemine yerleştirecektir. Böylece 'kral' - 'erkek' + 'kadın' ≈ 'kraliçe' gibi işlemler yapılabilecek bir durum söz konusu olacaktır. Yani artık vektörler arasındaki mesafe ile(örneğin kosinüs benzerliği) kelimelerin birbirine ne kadar ‘anlamca’ yakın olduğu rahatlıkla ölçülebilecektir.
Vector Search Nasıl Gerçekleşir?
Vector search ile arama yapıldığı taktirde aşağıdaki süreç cereyan edecektir;
- Aranan cümle embedding modelinden geçirilir ve vektöre dönüştürülür.
- Sistem bu vektörü, vector database’deki tüm vektörlerle karşılaştırır ve benzerlikler ölçülür. Burada teknik olarak en yaygın ölçüm kosinüs benzerliğidir, yani verilerin açılarına bakılır, aynı yöndelerse yakın anlamdalardır ve yüksek benzerlik beklenir.
- Neticede benzer vektörlere bağlı veriler sonuç olarak döndürülür.
Vector Database’ler Nelerdir?
Vector search sürecinde çok sayıda(milyonlarca ve hatta milyarlarca vektör) veriyle verimli bir şekilde çalışmanın sergilenebilmesi için vector database adı verilen özel depolama sistemlerine ihtiyacımız vardır. Bu sistemler üzerinde, vektörler depolanmakta ve bunlar arasında hızlı bir şekilde arama gerçekleştirilebilmektedir. Bunun ötesinde, bu veritabanlarında hızlı ve verimli aramalar yapabilmek için ANN(Approximate Nearest Neighbor – Yaklaşık En Yakın Komşu) algoritmaları kullanılmakta ve böylece anında sonuçlar elde edilebilmektedir.
Aşağıdaki görselde vector database’lerini inceleyebilirsiniz;
Yukarıdaki veritabanları, orjinal veriyi ham bir şekilde vektörlerle birlikte depolamakta ve böylece eldeki verileri gözlemlerken neyin ne olduğunu rahatlıkla görebilmemizi sağlamaktadırlar.Bu veritabanlarından en popüler olanları Weaviate, Pinecone ve Qdrant‘tır diyebiliriz. Ayrıca pgvector extension’ını kullanarak da PostgreSQL’i bir vektör veritabanına dönüştürebilme şansımızın söz konusu olduğunu bilmenizi isterim.
Dikat ederseniz, vector search’ün geleneksel aramalardan temel farkı kelimeler yerine anlamın ön plana çıkması, odak olmasıdır. Bundan kaynaklı vector search birçok AI temelli uygulama tarafından desteklendiğini ve özellikle chatbot’lar da ve öneri sistemlerinde verilerin hızlı bir şekilde bulunması için kullanıldığını söyleyebiliriz.
Nihai olarak;
Vector search, bilgisayarın metin ve görsel gibi yapılandırılmamış verileri vektörler aracılığıyla anlam temsillerine dönüştürerek bu veriler üzerinde benzerlik ve ilişki kurabilmesine olanak tanıyan kritik bir işlevi temsil etmektedir. Ayrıca geleneksel veri depolama yaklaşımlarının aksine, vector search’ün veri depolama biçimi ile insanların anlam hakkında düşünme biçimi arasındaki boşlukta bir korelasyon oluşturmakta ve bu ilişki son kullanıcılara sezgisel açıdan oldukça yararlı neticeler vermektedir. Bizler, bu içeriğimizde vector search’ü teorik olarak incelemiş bulunuyoruz. Bir sonraki içeriğimizde pratikte bu yaklaşımın nasıl uygulanabileceğine dair deneyimde bulunacağız. O halde heyecanla sonraki yazıda görüşmek üzere diyelim ve içeriğimizi burada nihayete erdirelim…
Vector search, online mağazalarda benzer ürünleri bulmak için AI agent’ların sorularımızı yanıtlamasına yardımcı olan işlevin, arkasındaki aklın ta kendisidir.
İlgilenenlerin faydalanması dileğiyle…
İyi çalışmalar…



Bir kaç deneme yaptım local elastic üzerinde, çok güzel bir makale olmuş elinize sağlık.