Kendi dokümantasyonunuza dayanan bir chatbot, sohbet arayüzü takılmış bir getirme sistemidir. Sayfalarınızı çeker, chunk’lara böler, her parçayı vektöre çevirir ve en yakın birkaçını dil modeline uzatır. Bu 4 adımın tamamı model tek kelime yazmadan önce olur ve her biri sessizce bozulur. Ekipler yanlış cevabı görür, modeli suçlar ve daha büyüğüyle değiştirir. Büyük model aynı yanlışı tekrarlar, çünkü eline verilen parça baştan yanlıştı.
Siteye dayalı chatbot, tarayıcıyla aynı HTTP GET ile başlar
Getirme ile zenginleştirilmiş üretimi Lewis ve arkadaşları 2020 tarihli makalede tarif etti; çekirdek hamle bugün de siteye dayalı chatbot’ların çoğunu anlatıyor: önce getir, sonra üret. Getirme yarısı sıradan web tesisatıdır — bir şey URL ister, işaretlemeyi soyar, metni böler, her chunk’ı gömer ve saklar. Sizin içe aktarma script’iniz ile GPTBot bu ilk adımı aynı HTML üzerinde birebir aynı şekilde koşar.
Ortak ilk adım, bunların neden 2 sorun gibi görünüp 1 sorun olduğunu açıklar. Cevap motorunun okuyamadığı sayfa, sizin kendi asistanınızın da okuyamadığı sayfadır. Fark görünürlüktedir: chatbot yanlış cevap verince müşteri destek talebi açar, hiç almadığınız alıntıyı ise kimse bildirmez.
JavaScript kabuğu, içe aktarıcıya boş belge uzatır
İstemcide render edilen dokümantasyon bu hattaki en sessiz arızadır. Sunucu neredeyse boş bir kap döner, tarayıcı içini doldurur ve JavaScript çalıştırmayan her çekici hiçbir şey saklamaz. Google işi tarama, render ve indeksleme olmak üzere 3 aşamaya böler ve bunu JavaScript SEO kılavuzunda belgeler; render geçişini de ayrı bir kuyruğa alır. İçe aktarma script’leri ile başlıca yapay zekâ çekicileri ise tek geçiş yapar: 1 GET, render yok, hidrasyon yok, istemci yönlendiricisi yok.
Varsaymak yerine ölçün. Sayfayı curl ile çekin, etiketleri soyun, ayakta kalan cümleleri sayın. Lekta bu açığı 0 ile 1 arasında bir JS bağımlılık katsayısı olarak raporlar — ana metnin yalnızca render sonrası var olan payı. 0,01 ve altında fark ölçüm gürültüsüdür, sayfa tam kredi alır; 0,35’te kontrol zaten uyarıya düşmüştür; 0,5’te görünür metnin yarısından fazlası, render yapmayan bir çekici için yoktur. O derlem üzerine kurulmuş chatbot halüsinasyon görmüyor. Boş raftan cevap veriyor.
Chunk sınırları, botun ne söyleyebileceğini belirler
Chunk boyutu, örtüşme ve getirilen pasaj sayısı araca göre değişen ayarlardır, standart değil: belgelenmiş varsayılanlar birkaç yüz token ile birkaç bin karakter arasında, getirilen sayı ise 2 ile 50 arasında değişir. Mekanik Chunk için yazmak yazısında. Ayar ne olursa olsun, getirilen her chunk tek başına gelir: 2 paragraf yukarıda duran bağlam onunla birlikte gelmez.
Kesintisiz okuma için yazılmış metin tam burada kırılır. “Bu yaklaşım şu durumda da işe yarar…” diye açılan bir bölüm, chunk koparıldığı anda göndergesini kaybeder ve model boşluğu tahminle doldurur. Konusunu ilk cümlede adıyla söyleyen bölümler kesintiden sağ çıkar. Böyle yazmak hiçbir şeye mal olmaz ve sonradan ayarlayabileceğiniz her getirme parametresinden daha çok kazandırır.
Gömmeler anlamı karşılaştırır, yazdığınız başlıkları değil
Getirme, soru vektörünü chunk vektörleriyle eşleştirir. Lekta multilingual-e5-small modelinin int8 sürümüyle gömer: 100 dili kapsayan 384 boyutlu bir model; site chatbot’larının arkasında da benzeri küçük çok dilli gömücüler yaygın bir tercihtir. Bir başlık, ancak altındaki gövde o başlığı konuşuyorsa getirme ağırlığı kazanır; süs olsun diye konmuş başlık vektöre hiçbir şey katmaz ve eşleşmeyi size kaybettirir.
1 fikri tekrar eden 2 bölüm, birbirine neredeyse özdeş 2 vektör üretir ve aynı getirme yuvaları için yarışır; tek güçlü bölümün toplayacağı ilgiyi bölerler. Birleştirin, her birinden iyi örneği tutun ve boşalan başlığı derleminizin henüz cevaplamadığı bir soruya çevirin.
Tarihsiz sayfa, bayat fiyatı kendinden emin bir cevaba çevirir
Getirilen chunk, ne zaman yazıldığına dair hiçbir hafıza taşımaz. Fiyatınız mart ayında değiştiyse ve chunk deposu hâlâ ocak metnini tutuyorsa, model ocak rakamını tam bir güvenle söyler; çünkü kendisine verilen bağlamı söylemek zaten yaptığı işin ta kendisidir.
Makine okunur tarih, elinizdeki en ucuz savunmadır. datePublished ve dateModified taşıyan bir Article nesnesi, içe aktarıcıya sıralayıp süzebileceği bir alan verir ve cevap motoruna aynı güncellik sinyalini uzatır. Tarihi okurun göreceği yere de basın: yalnız JSON-LD içinde yaşayan tarih ayrıştırıcıya hizmet eder, insanı tahmine bırakır.
Modeli değiştirmeden önce derlemi denetleyin
Siteye dayalı chatbot kötü cevap verdiğinde ilk refleks model değiştirmektir. Pahalı olan da yanlış olan da budur. Düşen soruyu elinize alın, hangi chunk’ların getirildiğine bakın ve onları modelin aldığı hâlde okuyun — yalnız, çevresindeki her şeyden soyulmuş olarak. Chunk’ın boş, bayat ya da konusuz çıkması, yetkin bir modelin iyi bir chunk üzerinde kötü akıl yürütmesinden çok daha sık görülür.
Derlem düzeltmesi ile cevap motoru düzeltmesi tek bir iştir. Sunucuda render edilmiş HTML, kendine yeten bölümler, dürüst tarihler ve somut iddialar; tek bir düzenleme turunda hem kendi asistanınızın isabetini hem başka yerde alıntılanma ihtimalinizi yükseltir. Önce sayfaları denetleyin; darboğaz nadiren modeldir.
Kaynaklar
arXiv makalesi, getirme ile zenginleştirilmiş üretime adını veren çalışmadır; model kartı gömücünün 384 boyutunu ve 100 dil kapsamını belgeler; Google kılavuzu render tarafını, schema.org tanımı tarih tarafını karşılar. 4 bağlantının dördü de birincil ve bakımı yapılan belgelere gider.