Üretimde RAG Arama: Gerçekte Önemli Olan
2.700 uygulama üzerinde anlamsal arama kurdum. Çalışmasını sağlayan şey model değildi, ve zor problemlerin çoğu sıradan mühendislikti.
UKUgur KelleciogluBağımsız Ürün Mühendisi2.700 uygulama üzerinde, "okuduklarımı takip edecek ama sosyal ağ olmayan bir şey" gibi soruları cevaplayan bir arama motoru kurdum. Çalışıyor, insanlar kullanıyor, ve çalışmasını sağlayan şey model değildi.
RAG üzerine yazılanların çoğu bir eğitim: parçala, göm, sakla, getir, prompt yaz. O kısım bir öğleden sonra sürüyor. Aşağıdaki geri kalanı, ve o hayli uzun sürdü.
Getirme kalitesi ürünün kendisi
Doğru doküman ilk birkaç sonuçta değilse hiçbir prompt sizi kurtarmaz. Model kendisine verilen neyse ondan kendinden emin bir cevap üretir, ki bu hiçbir şey söylememekten kötüdür; çünkü kullanıcının üzerine hareket ettiği şey, kendinden emin yanlış cevaptır.
Yani iş getirmede, üretimde değil. Çıktı kötü olduğunda içgüdü prompt'u düzenlemek oluyor. Önce sorulacak soru şu: doğru kaynak doküman getirildi mi? Genelde getirilmemiştir, ve eksik bir girdiyi hiçbir prompt düzenlemesi düzeltmez.
Neyi gömdüğünüz, hangi modelle gömdüğünüzden önemli
Başlangıçta gömme modellerini karşılaştırmaya emek harcadım ve çok az şey kazandım. İçlerine ne girdiğini değiştirmekten çok şey kazandım.
Ham açıklamayı gömerseniz kelimeler üzerinden eşleşen dokümanlar elde edersiniz. Şeyin ne işe yaradığına dair kısa, üretilmiş bir özeti gömerseniz niyet üzerinden eşleşen dokümanlar elde edersiniz; ve insanların yazdığı şey niyettir. Kimse bir ürünün kendini tarif ettiği gibi arama yapmıyor.
Önemli meta veriyi yalnızca filtreye değil, gömülen metne de koyun. Kategori ve amaç anlamsal uzayda olmalı, çünkü bir sorgu bunları her şeyle serbestçe karıştırır.
Saf vektör araması, anahtar kelime aramasının yakaladığını kaçırır
Vektör araması tam eşleşen ifadelerde kötüdür. Bir ürün adı, sürüm numarası, kısaltma: bunlar kullanıcının tam olarak ne istediğini bildiği sorgulardır ve anlamsal benzerlik onları belli belirsiz ilgili şeylerden oluşan bir komşuluğa dağıtır.
İkisini de çalıştırın. Anlam için vektör, kesinlik için anahtar kelime, sonra birleştirin. Birleştirmenin gelişmiş olması gerekmiyor, ve tamamen atlamak kabaca birleştirmekten çok daha büyük bir hata.
Parçalama bir ürün kararıdır, parametre değil
Her rehber size bir sayı verir. O sayı, iyi bir cevabın neye benzediğine bağlı.
Cevaplar belirli bir paragrafa atıf yapacaksa küçük parçalayın ve parçanın tek başına anlaşılmasına yetecek kadar çevre bağlamı bırakın. Cevaplar bir öğenin tamamını anlatacaksa, öğe başına tek parça, o öğeyi her biri onu kısmen anlatan altı parçaya bölmekten iyidir.
Bir katalog için ürün başına tek doküman geriye bakınca aşikârdı, o an değildi; çünkü rehberler uzun dokümanlar için yazılmıştı.
Bilmediğinizi söyleyin
Eklediğim en değerli davranış reddetmek oldu.
En iyi sonuç bir benzerlik eşiğinin altındaysa, dürüst cevap hiçbir şeyin eşleşmediğidir. Bunu ara sıra kabul eden bir sisteme, her seferinde bir şey üreten sistemden daha çok güvenilir; çünkü kullanıcı uydurma cevabı eninde sonunda fark eder ve o andan itibaren bütün cevaplara güvenmeyi bırakır.
Eşiği sezgiyle değil, gerçek başarısız sorgulara bakarak seçin. "Hiçbir şey eşleşmedi"nin zorlamadan daha sık doğru olduğu sayıyı arıyorsunuz.
Maliyet aslında nereye gidiyor
Modele değil. Bir kataloğu bir kez gömmek ucuz, sorgulamak daha da ucuz.
Maliyet, altındaki veri değiştikçe gömmeleri güncel tutmak, ve bu bir yapay zeka problemi değil altyapı problemi. Bir şeyin, bir kaydın değiştiğini fark edip yeniden gömmesi gerekiyor. Bunu yanlış yaparsanız aramanız sessizce, aylar önce var olmayı bırakmış bir katalog versiyonunu anlatır; ki bu bayat önbellekle aynı sınıfta bir arıza ve onun kadar görünmez.
Dürüst özet de bu: bir RAG sistemindeki ilginç problemler, etrafında duran sıradan mühendislik problemleri.
Sıkça sorulan sorular
RAG sistemim neden kendinden emin yanlış cevaplar veriyor?
Neredeyse her zaman doğru doküman getirilmediği için. Model kendisine verilen neyse ondan cevap üretir. Prompt'u düzenlemeden önce doğru kaynağın ilk sonuçlarda olup olmadığına bakın, çünkü eksik bir girdiyi hiçbir prompt düzeltmez.
Vektör araması mı anahtar kelime araması mı kullanmalıyım?
İkisini de. Vektör araması ürün adı, sürüm numarası ve kısaltma gibi tam eşleşmelerde zayıftır, ki bunlar kullanıcının tam olarak ne istediğini bildiği sorgulardır. İkisini çalıştırıp birleştirin. Kaba bir birleştirme, atlamaktan iyidir.
Gömmeye ne koymalıyım?
Açıklamayı değil niyeti. Ham ürün açıklamasını gömerseniz kelime üzerinden eşleşir. Şeyin ne işe yaradığına dair kısa bir özeti gömerseniz niyet üzerinden eşleşir, ki insanların yazdığı budur. Kategori ve amacı yalnızca filtreye değil gömülen metne koyun.
Daha fazla yazı
Tüm yazıları görüntüle