Birimleştirilmiş Üretken Yapay Zeka (RAG), Büyük Dil Modellerini (LLM) özel verilerle temellendirmek için standart mimari haline gelmiştir. Ancak RAG hatlarında yaygın bir darboğaz, ilk alma adımında ortaya çıkar. Yaklaşık en yakın komşu (ANN) algoritmalarına dayanan standart vektör arama motorları hızlıdır ancak hesapsal olarak verimli yaklaşımlardır. Bu motorlar, genellikle konusal olarak ilgili ancak anlamsal olarak yüzeysel olan belgeleri getirir; bu da LLM'in halüsinasyonlar veya alakasız yanıtlar ürettiği "çöp girdi, çöp çıktı" senaryolarına yol açar.
Burada yeniden sıralama devreye girer. Daha sıkı bir filtreleme katmanı ekleyerek geliştiriciler, ilk alımın hızından ödün vermeden LLM'e sağlanan bağlamın doğruluğunu önemli ölçüde artırabilir.
İki Aşamalı Alma Mimarisi
Yeniden sıralamayı anlamak için modern RAG mimarisini iki aşamalı bir huni olarak hayal etmek esastır:
- Aşama 1: Aday Alma (Hatırlama). Bu aşama, seyrek vektör araması (BM25) veya yoğun vektör araması (kosinüs benzerliği) gibi hafif ve yüksek hızlı yöntemleri kullanır. Amaç, geniş bir veri havuzundan büyük bir aday havuzu (örneğin, 100 belge) almaktır.
- Aşama 2: Yeniden Sıralama (Doğruluk). Bu aşama, sorguyu ve Aşama 1'den gelen en iyi N adayı alır ve ilginçliklerini daha doğru bir şekilde puanlamak için daha karmaşık bir model uygular. En iyi K sonuç (örneğin, 5 belge) LLM'e iletilir.
Yeniden sıralama olmadan, "Sızan bir boruyu nasıl tamir ederim?" diye sorduğunuzda sistem size "yazılımda su sızıntısı" veya "yağmur suyu tahliyesi" hakkında makaleler getirebilir. Yeniden sıralama ile sistem, "sızan boru" ifadesinin fiziksel tesisat anlamına geldiğini fark eder ve yazılımla ilgili içeriği sıralamada aşağı çeker.
Neden Çapraz-Öncüller?
Yeniden sıralama için endüstri standardı Çapraz-Öncüllerdir. Aşama 1'de kullanılan ve sorguları ile belgeleri bağımsız olarak vektörlere kodlayan Bi-Öncüllerin aksine, Çapraz-Öncüller sorguyu ve belgeyi tek bir ileri geçişte birlikte işler. Bu, modelin sorgu kelimeleri ile belge kelimeleri arasındaki belirli etkileşimlere odaklanmasını sağlar ve nüanslı anlamsal ilişkileri yakalar.
Örneğin, Bi-Öncülde, "Elma" (meyve) ve "Apple" (şirket), genel olarak benzer bağlamlarda geçse bile benzer vektör temsillerine sahip olabilir. "Meyve beslenmesi" sorgusuna ve "teknoloji hisse senedi fiyatları" belgesine bakan bir Çapraz-Öncül, neredeyse hiçbir etkileşim görmeyecek ve düşük bir ilginçlik puanı verecektir.
Python ile Bir Yeniden Sıralayıcı Uygulama
sentence-transformers veya pyserini gibi kütüphaneler kullanarak yeniden sıralama uygulamak basittir. Aşağıda, optimize edilmiş Çapraz-Öncül modelleri sağlayan popüler sentence-transformers kütüphanesini kullanan pratik bir örnek bulunmaktadır.
from sentence_transformers import CrossEncoder
# Çapraz-Öncül modelini başlatın
# 'cross-encoder/ms-marco-MiniLM-L-6-v2' hızlı ve etkili bir seçenektir
model = CrossEncoder('cross-encoder/ms-marco-MiniLM-L-6-v2')
# Sorgu ve Aşama 1'den alınan aday belgeler listesi
query = "Python'da OAuth2 nasıl uygulanır?"
candidates = [
"Python bir programlama dilidir.",
"Flask kullanılarak Python uygulamalarında OAuth2 kimlik doğrulamasının uygulanmasına yönelik adım adım rehber.",
"HTTP isteklerinin temellerini anlamak.",
"OAuth2 spesifikasyon belgesi sürüm 2.0."
]
# Sorgu-belge çiftlerini kodlayın
# Model her çift için bir ilginçlik puanı döndürür
scores = model.predict([(query, doc) for doc in candidates])
# Puanları belgelerle eşleştirin ve ilginçliğe göre sıralayın
ranked_results = sorted(zip(candidates, scores), key=lambda x: x[1], reverse=True)
# En iyi sonucu yazdırın
print("En Yüksek Sıralı Sonuç:")
print(f"Belge: {ranked_results[0][0]}")
print(f"Puan: {ranked_results[0][1]:.4f}")
Bu örnekte, açıkça "OAuth2" ve "Python" ifadelerini içeren ikinci belge, genel "Python" veya "HTTP" belgelerine kıyasla önemli ölçüde daha yüksek bir puan alacaktır; bu da LLM'e en bağlamsal olarak doğru bilgilerin iletilmesini sağlar.
Gecikme ve Doğruluk Dengesi
Çapraz-öncüller, metin çiftlerini paralel değil de sıralı olarak işledikleri için hesapsal olarak maliyetlidir. Veri havuzunuz çok büyükse ve sorgu hacmi yüksekse, binlerce aday üzerinde bir Çapraz-Öncül çalıştırmak imkansızdır. İşte bu nedenle iki aşamalı yaklaşım kritiktir: ilk aşama arama alanını milyonlardan yüzlerceye düşürür, ikinci aşama ise bu küçük küme üzerinde ince ayar yapar.
Üretim ortamları için, daha hızlı çıkarım için ms-marco-TinyBERT-L-2-v2 gibi optimize edilmiş modelleri veya sık sorulan sorular için önbellekleme stratejilerini kullanmak üzere özel yeniden sıralama API'leri kullanmayı düşünün.
Sonuç
Yeniden sıralama sadece bir optimizasyon değil; güvenilir, üretim seviyesinde RAG uygulamaları oluşturmak için bir zorunluluktur. Hatırlamayı doğruluktan ayırarak geliştiriciler, vektör veritabanlarının hızından yararlanırken derin anlamsal anlayışın doğruluğunu koruyabilir. Bir Çapraz-Öncül yeniden sıralayıcı uygulamak, LLM'in yanıt kalitesini artırarak halüsinasyonları azaltmak ve kullanıcı güvenini artırmak için yapabileceğiniz en yüksek getirili değişikliklerden biridir.