Dokümanlarınıza güçlü bir arama motoru entegre etmek, kullanıcı deneyimini kökten değiştirebilir. Farklı arama yöntemleri - tam metin araması, vektör araması, grafik araması ve coğrafi arama - her biri farklı avantajlar sunar. Peki, bu yöntemleri birleştirerek en etkili sonucu nasıl elde edersiniz?
SurrealDB’nin son güncellemesiyle birlikte, doküman araması artık hibrit arama özelliğiyle çalışıyor. Bu özellik, tam metin aramasının doğruluk avantajıyla vektör aramasının anlam odaklı yaklaşımını birleştiriyor. Böylece kullanıcılar, aradıkları terimlerin hem biçimsel hem de anlamsal olarak en ilgili sonuçlarını elde edebiliyor. Bu yenilik, açık kaynak koduyla da erişilebilir durumda ve geliştiricilerin kendi projelerinde nasıl uygulayabileceklerini gösteriyor.
Hibrit Aramanın Temel Bileşenleri
Hibrit arama, iki temel arama yöntemini bir araya getirir:
- Tam metin araması: Kelimelerin tam olarak nasıl yazıldığını dikkate alır ve dilbilimsel analizler uygular. Örneğin, İngilizce metinlerde kelimelerin kök hallerine indirgenmesi (stemming) veya özel karakterlerin temizlenmesi gibi işlemler yapılır.
- Vektör araması: Kelimelerin ve cümlelerin anlamını temsil eden sayısal vektörlere dönüştürülmesini sağlar. Bu sayede, benzer anlamlara sahip ancak farklı yazılan terimler de bulunabilir.
SurrealDB’nin hibrit arama sistemi, bu iki yöntemi Reciprocal Rank Fusion (RRF) adı verilen bir algoritma ile birleştiriyor. RRF, farklı sıralama listelerindeki sonuçları birleştirirken, her listenin kendi ağırlığını dikkate alarak en ilgili sonuçları ortaya çıkarıyor.
Tam Metin Analizinin Gücü
Tam metin aramasının nasıl çalıştığını anlamak için, önce analizörlerin rolünü incelemek gerekir. SurrealDB’de bir analizör, metni işlemek için kullanılan bir dizi kural ve filtreden oluşur. Örneğin, İngilizce metinler için yaygın olarak kullanılan bir analizör aşağıdaki gibi tanımlanabilir:
DEFINE ANALYZER OVERWRITE simple TOKENIZERS blank, class, camel, punct FILTERS snowball(english);Bu analizör, metni aşağıdaki adımlardan geçirir:
- Tokenizasyon: Metni kelimelere ve cümlelere ayırır. Örneğin, "project lead" ifadesi "project" ve "lead" olarak ayrılır.
- Biçimlendirme: Büyük harflerin küçük harflere dönüştürülmesi, özel karakterlerin temizlenmesi gibi işlemler uygular.
- Stemming: Kelimelerin kök hallerine indirgenmesini sağlar. Örneğin, "frowning" kelimesi "frown" olarak dönüştürülür.
Bu analizörü kullanarak, metninizi nasıl işleyeceğinizi test edebilirsiniz. Örneğin, aşağıdaki sorguyu çalıştırarak analizörün çıktısını görebilirsiniz:
search::analyze(
"simple",
"The project lead frowned and took a hard look at the results. They were clear as day."
).join(' ');Bu sorgu, metni analiz ederek aşağıdaki çıktıyı üretir:
the project lead frown and took a hard look at the result they were clear as day
Görüldüğü gibi, analizör metni standartlaştırarak arama işlemini daha etkili hale getirir. Örneğin, kullanıcı "frown" kelimesini aradığında, metinde "frowning" olarak geçse bile bu sonuç da dahil edilebilir.
Vektör Aramanın Anlam Odaklı Yaklaşımı
Vektör araması, kelimelerin veya cümlelerin anlamını temsil eden sayısal vektörlere dayanır. Bu vektörler, genellikle büyük dil modelleri (LLM) tarafından üretilir ve metnin semantik yapısını yakalar. Örneğin, aşağıdaki cümlede geçen "lead" kelimesi iki farklı anlamda kullanılmıştır:
Proje leadi sonuçlara sert bir bakış attı. Şehrin sularında çok fazla kurşun içeriği vardı ve bu yüzden insanlar hastalandı.
Bir insan olarak, bizler bu iki "lead" kelimesinin farklı anlamlara geldiğini anlayabiliriz. Benzer şekilde, dil modelleri de bu kelimeleri farklı vektörlere dönüştürerek anlam farklılıklarını yakalayabilir. Bu sayede, kullanıcılar arama terimlerinin anlamına odaklanarak daha ilgili sonuçlar elde edebilir.
Hibrit Aramanın Uygulanması: RRF ile Birleştirme
Peki, tam metin araması ve vektör aramasını nasıl birleştirebilirsiniz? SurrealDB, bu işlem için search::rrf() adlı bir fonksiyon sunuyor. Bu fonksiyon, farklı sıralama listelerini birleştirerek en ilgili sonuçları ortaya çıkarır. Örneğin:
-- Reciprocal Rank Fusion (RRF) kullanarak sonuçları birleştirme
LET $fused = search::rrf(
[$page_ft, $page_vs, $section_ft, $section_vs],
60, -- k: düzleştirme sabiti (standart RRF değeri)
80 -- limit: değerlendirilecek maksimum aday sayısı
);Burada kullanılan değişkenler şunları temsil ediyor:
$page_ft: Sayfa başlığı ve içeriğinin tam metin arama sonuçları.$page_vs: Sayfa içeriğinin vektör arama sonuçları.$section_ft: Bölüm başlığı ve içeriğinin tam metin arama sonuçları.$section_vs: Bölüm içeriğinin vektör arama sonuçları.
Bu yaklaşım, sonuçları hem biçimsel hem de anlamsal olarak optimize eder. Böylece, kullanıcılar aradıkları terimlerin en ilgili ve doğru sonuçlarını elde edebilir.
Uygulama İçin Öneriler
Eğer siz de kendi projelerinizde hibrit arama özelliğini kullanmak istiyorsanız, aşağıdaki adımları izleyebilirsiniz:
- Analizör tanımlama: Kullanacağınız dil için uygun bir analizör oluşturun. Bu analizör, metninizi tokenize edecek, stemming uygulayacak ve gereksiz karakterleri temizleyecektir.
- Tam metin ve vektör indeksleri oluşturma: Tam metin araması için
FULLTEXT ANALYZERkullanarak indeksler oluşturun. Vektör araması içinse metinlerinizi vektörlere dönüştüren bir model kullanın. - RRF fonksiyonunu kullanma: Farklı arama sonuçlarını birleştirmek için
search::rrf()fonksiyonunu kullanın. Bu fonksiyon, sonuçları en ilgili şekilde sıralayacaktır. - Test ve optimizasyon: Uygulamanızı yerel ortamda test edin ve sonuçların doğruluğunu değerlendirin. Gerekirse analizörleri veya indeksleri optimize edin.
SurrealDB’nin hibrit arama özelliği, doküman aramanızı bir üst seviyeye taşıyabilir. Bu yenilikçi yaklaşım, kullanıcıların aradıkları içeriği daha hızlı ve doğru bir şekilde bulmalarını sağlar. Geliştiriciler için açık kaynak koduyla erişilebilir olan bu özellik, projelerinizde kolayca uygulanabilir.
Gelecekte, hibrit arama teknolojisinin daha da gelişmesiyle birlikte, kullanıcı deneyiminin daha da iyileştirilmesi mümkün olacaktır. Bu alanda yapılan yenilikleri takip etmek, projelerinizin rekabet gücünü artırabilir.
Yapay zeka özeti
SurrealDB’nin hibrit arama sistemiyle doküman aramasını nasıl geliştirebilirsiniz? Tam metin ve vektör aramayı birleştiren RRF yöntemi hakkında detaylı bilgi edinin.