Retrieval-Augmented Generation (RAG) sistemi, daha doğru ve bağlamdan haberdar yanıtlar sağlamak için büyük bir dil modelini harici, doğrulanmış veri kaynaklarıyla bağlayan teknik bir çerçevedir. Yapay zekanın yalnızca genel eğitim verilerine değil, sizin özel kurumsal bilgilerinize dayanmasını sağlayarak halüsinasyonları azaltmak için bir bilgi getirme bileşenini bir metin oluşturucu modeliyle birleştirir. Belgeleri aranabilir bir formatta indeksleyerek, sistem kullanıcı için nihai bir yanıt oluşturmadan önce ilgili parçaları getirir.
Retrieval-Augmented Generation sistemi nedir?
Bir RAG sistemi, statik bir yapay zeka modeli ile dinamik iş verileriniz arasında bir köprü görevi görür. GPT-4 veya Claude 3.5 gibi standart modellerin bilgileri için belirli bir kesinti tarihi vardır ve şirket içi notlarınızı, özel müşteri dosyalarınızı veya en son envanter güncellemelerinizi bilmezler. Bir RAG sistemi kurduğunuzda, aslında yapay zekaya bir kütüphane kartı ve bir arama motoru vermiş olursunuz. Bir soru sorulduğunda, sistem önce en alakalı paragrafları bulmak için özel veritabanınızı tarar. Ardından, bu paragrafları orijinal soruyla birlikte yapay zeka modeline iletir ve yalnızca sağlanan metne dayanarak yanıt vermesini ister.

Bu mimari popülerdir çünkü yapay zeka ile ilgili en büyük iki sorunu çözer: güncel olmayan bilgiler ve uydurma. Model konuşmadan önce bir kaynak belgeye bakmak zorunda olduğu için gerçekleri uydurma olasılığı önemli ölçüde azalır. Dijital pazarlama ajansı veya e-ticaret markası için bu, yapay zekanın müşterilerin belirli ürün özellikleri veya gönderim politikalarıyla ilgili sorgularını yüksek hassasiyetle yanıtlayabileceği anlamına gelir. Sistem, tüm modelin yeniden eğitilmesini gerektirmez, bu da geliştiriciler için önemli hesaplama maliyetlerinden ve zamandan tasarruf sağlar.
İşletmeler neden ince ayar (fine-tuning) yerine RAG kullanmalıdır?
İnce ayar, önceden eğitilmiş bir modelin ağırlıklarının belirli bir veri kümesi üzerinde güncellenmesini içerir. Bu, modelin belirli bir tonu veya jargonu öğrenmesine yardımcı olsa da, bilgi getirme için genellikle verimsizdir. Şirket politikalarınız yarın değişirse, ince ayar yapılmış bir model, onu tekrar eğitmek için binlerce dolar harcamadığınız sürece eski bilgileri sağlamaya devam edecektir. RAG sistemleri çok daha esnektir çünkü yalnızca veritabanınızdaki belgeleri güncellemeniz gerekir. Vektör deponuza yeni bir PDF yüklediğiniz anda, yapay zeka herhangi bir ek eğitim adımı gerektirmeden bu güncellenmiş bilgilere erişebilir.
Maliyet, bu iki yaklaşımı karşılaştırırken bir diğer önemli faktördür. İnce ayar, modelin orijinal yeteneklerini unutmasını önlemek için pahalı GPU kümeleri ve özel veri bilimi uzmanlığı gerektirir. Buna karşılık, bir RAG hattı oluşturmak standart API çağrılarını ve veritabanı aramalarını kullanır. 5.000 ürün varyantına sahip tipik bir Shopify mağazası, özel bir LLM’i ince ayar yapmanın maliyetinin çok altında bir maliyetle bir RAG sistemini sürdürebilir. Bu, RAG’ı verilerin sık sık değiştiği ve doğruluğun tartışılmaz olduğu çoğu kurumsal uygulama için standart seçim haline getirir.

Kurumsal bir RAG hattının temel mimarisi
İşlevsel bir RAG sistemi oluşturmak beş farklı aşamayı içerir: veri alımı, parçalama (chunking), yerleştirme (embedding), depolama ve getirme. Alım aşamasında, Notion, Google Drive veya yerel SQL veritabanları gibi kaynaklardan veri çekersiniz. Bu veriler genellikle dağınıktır ve yapay zekanın kolayca okuyamadığı HTML etiketleri, resimler veya biçimlendirmeler içerir. Bu metni temizlemek için LangChain veya LlamaIndex gibi araçlar kullanmalısınız. Metin temizlendikten sonra daha küçük parçalara bölünmesi gerekir. Modelin aynı anda çok fazla bilgiyle bunalmasını önlemek için parçalama stratejisi burada devreye girer.
Parçalamadan sonra, her metin parçası bir vektör yerleştirmesine dönüştürülür. Yerleştirme, metnin anlamsal anlamını temsil eden uzun bir sayı listesidir. Örneğin, ‘elma’ ve ‘meyve’ kelimeleri yüksek boyutlu bir uzayda benzer vektör değerlerine sahip olacaktır. Bu vektörler daha sonra özel bir vektör veritabanında saklanır. Bir kullanıcı bir soru sorduğunda, sorgusu da bir vektöre dönüştürülür. Sistem daha sonra kullanıcının sorusuna en yakın olan veritabanındaki parçaları bulmak için matematiksel bir benzerlik araması gerçekleştirir ve nihai yanıt için bağlamı sağlar.
Doğru vektör veritabanını nasıl seçersiniz?
Vektör veritabanı, RAG sisteminizin kalbidir. Bütçenize ve teknik yeteneklerinize bağlı olarak birkaç seçeneğiniz vardır. Pinecone, indeksleme ve ölçeklendirmenin tüm ağır işlerini halleden yönetilen, sunucusuz bir hizmet olduğu için birçok kişi için popüler bir seçimdir. Kendi sunucularını yönetmeden hızlı bir şekilde bir prototip çalıştırmak isteyen ekipler için özellikle yararlıdır. Daha küçük bir veri kümesiyle çalışıyorsanız veya gizlilik nedenleriyle her şeyi yerel tutmak istiyorsanız, ChromaDB doğrudan makinenizde veya basit bir Docker konteynerinde çalışabilen açık kaynaklı bir alternatiftir.
AWS veya Google Cloud gibi bulut sağlayıcılarını zaten kullanan daha büyük işletmeler için entegre seçenekler mevcuttur. Weaviate ve Milvus, milyonlarca vektörü saniyenin altında gecikmeyle işleyebilen, yüksek ölçeklenebilir, dağıtılmış mimariler sunar. Bir veritabanı seçerken, ‘top-k’ getirme hızına ve meta veri filtrelemenin kullanılabilirliğine bakmalısınız. Meta veri filtreleme, yapay zekanın aramasını belirli klasörlerle veya tarihlerle sınırlamanıza olanak tanır; bu, yapay zekanın beş yıl önceki belgeler yerine yalnızca ‘2024 Pazarlama Planları’na bakmasını sağlamak istiyorsanız yararlıdır. Bu kontrol seviyesi, kurumsal veri silolarını korumak için hayati önem taşır.
Popüler Vektör Veritabanlarının Karşılaştırması
- Pinecone: Minimum bakımla hızlı dağıtım ve sunucusuz ölçeklendirme için en iyisi.
- ChromaDB: Yerel geliştirme, açık kaynaklı projeler ve katı veri gizliliği için idealdir.
- Weaviate: Karmaşık veri türleri ve anahtar kelimeleri ve vektörleri birleştiren hibrit arama için güçlüdür.
- Milvus: Kurumsal ortamlarda devasa, milyar ölçekli vektör veri kümeleri için tasarlanmıştır.
- Supabase: Zaten PostgreSQL kullanıyorsanız ve pgvector uzantısını kullanmak istiyorsanız harika bir seçimdir.
Veri alımı ve parçalama için adım adım kılavuz
Veri alımı, birincil veri kaynaklarınıza bağlanarak başlar. Tipik bir dijital pazarlama kurulumunda bu, PowerPoint sunumları ve Excel tablolarından oluşan dağınık bir koleksiyondan metin çıkarmak için ‘Unstructured’ gibi bir Python kütüphanesi kullanmayı içerebilir. Değer katmayan üstbilgiler ve altbilgiler gibi şablon metinleri kaldırmaya dikkat etmelisiniz. Temiz bir metin akışına sahip olduğunuzda, bir parçalama stratejisine karar vermeniz gerekir. Yaygın bir model, bağlamın yapay zeka için tutarlı kalması amacıyla paragrafları ve cümleleri bir arada tutmaya çalışan RecursiveCharacterTextSplitter’ı kullanmaktır.
Parçalama için standart bir ayar, 200 karakterlik bir örtüşme ile 1.000 karakterlik bir boyuttur. Örtüşme çok önemlidir çünkü hayati bir bilgi parçası iki parça arasında bölünürse, yapay zekanın anlamı kavramak için çevredeki metni yeterince görmesini sağlar. Parçalarınız çok küçükse, yapay zeka ‘büyük resmi’ kaybeder; çok büyükse, LLM’in token sınırını aşabilir veya jeneratörü karıştıran alakasız gürültü içerebilirsiniz. Doğru dengeyi bulmak genellikle getirme işleminin nasıl çalıştığını görmek için en karmaşık belgelerinizin küçük bir örneğiyle test etmeyi gerektirir.
Yeniden sıralama (reranking) ile getirme kalitesini optimize etme
Getirme her zaman mükemmel değildir. Bazen matematiksel benzerlik araması, benzer kelimeler içeren ancak kullanıcının niyetiyle aslında alakalı olmayan bir parça çeker. Bunu çözmek için birçok gelişmiş sistem iki aşamalı bir süreç kullanır: getirme ve ardından yeniden sıralama. İlk aşamada, vektör veritabanı en olası 10 veya 20 adayı döndürür. İkinci aşamada, Cohere Rerank modeli gibi daha küçük, daha hassas bir model bu 20 adaya bakar ve kullanıcının sorduğu belirli soruyu ne kadar iyi yanıtladıklarına göre puanlar.
Yeniden sıralama, nihai çıktının doğruluğunu önemli ölçüde artırır. İlk adımda daha ucuz, daha hızlı arama yöntemleri kullanmanıza izin verirken nihai sonuçta yüksek kaliteyi korumanızı sağlar. Teknik terimlerin farklı bağlamlarda kullanılabileceği kurumsal bilgi tabanları için yeniden sıralama ikincil bir filtre görevi görür. Örneğin, bir kullanıcı ‘leads’ hakkında soru sorarsa, sistem ‘pazarlama adayları’ (marketing leads) mı yoksa ‘elektrik kabloları’ (electrical leads) mı demek istediklerini bilmelidir. Bir yeniden sıralayıcı, hangi belge parçasının kullanılacağına dair daha bilinçli bir karar vermek için kullanıcının önceki sorularının çevresindeki bağlama bakabilir.
Performansı ölçme ve halüsinasyonları azaltma
Ölçmediğiniz şeyi iyileştiremezsiniz. Bir RAG sisteminde performans, ‘sadakat’ (faithfulness) ve ‘yanıt alaka düzeyi’ (answer relevance) gibi metrikler kullanılarak ölçülür. Sadakat, yapay zekanın yanıtının getirilen belgeler tarafından gerçekten desteklenip desteklenmediğini kontrol eder. Yapay zeka ürününüzün 50 dolar olduğunu söylüyorsa ancak belge 40 dolar diyorsa, bu bir sadakat hatasıdır. Yanıt alaka düzeyi, yanıtın kullanıcının istemini ne kadar iyi ele aldığını ölçer. Ragas veya TruLens gibi araçlar, birincil RAG hattınızın çıktılarını ‘puanlamak’ için ikinci bir LLM kullanarak bu değerlendirmeleri otomatikleştirmeye yardımcı olabilir ve 0’dan 1’e kadar bir puan sağlar.
Halüsinasyonları daha da azaltmak için katı istem mühendisliği (prompt engineering) uygulamanız gerekir. Standart bir teknik, sistem isteminize bir ‘negatif kısıtlama’ dahil etmektir. Örneğin, yapay zekaya şunları söyleyebilirsiniz: ‘Yanıtlamak için yalnızca sağlanan bağlamı kullanın. Yanıt bağlamda yoksa, bilmediğinizi söyleyin. Dış bilgi kullanmayın.’ Bu, modelin ‘çok yardımcı’ olmasını ve dahili veritabanınızda bilgi eksik olduğunda yanıtlar uydurmasını önler. Kurumsal bir ortamda, ‘Bilmiyorum’ demek, yasal veya finansal hatalara yol açabilecek kendinden emin ancak yanlış bir yanıt vermekten neredeyse her zaman daha iyidir.
RAG Başarısı İçin Temel Metrikler
- Bağlam Hassasiyeti: Getirilen parçaların kaçı yanıt için gerçekten yararlıydı.
- Bağlam Geri Çağırma: Sistemin istemi yanıtlamak için gerekli tüm bilgileri bulup bulmadığı.
- Sadakat: Yanıtın yalnızca sağlanan metinden türetilme derecesi.
- Yanıt Alaka Düzeyi: Yanıtın kullanıcının belirli sorgusuna ne kadar doğrudan hitap ettiği.
- Gecikme: Kullanıcının tıklamasından ekranda son kelimenin görünmesine kadar geçen toplam süre.
Bu hafta nereden başlamalı
Bu sistemleri anlamanın en iyi yolu basit bir prototip oluşturmaktır. Dahili müşteri desteği SSS’leriniz veya ürün kılavuzları koleksiyonunuz gibi tek bir departmanın belgelerini seçerek başlayın. Bu dosyaları yüklemek ve ChromaDB gibi ücretsiz bir vektör veritabanına göndermek için bir Python ortamı kullanın. Metni dönüştürmek ve benzerlik aramasının nasıl çalıştığını görmek için OpenAI’den bir yerleştirme modeli kullanın. Temel bir soru için doğru paragrafı başarıyla getirebildiğinizde, tam yanıtlar üretmek için onu GPT-4o gibi bir üretim modeliyle bağlayabilirsiniz.
Prototip çalıştıktan sonra kullanıcı arayüzüne odaklanın. İster bir Slack botu ister web tabanlı bir sohbet widget’ı olsun, kullanıcıların RAG sistemiyle nasıl etkileşime girdiği benimsenmesini belirleyecektir. Kullanıcıların sorduğu soruları izleyin ve belgelerinizdeki boşlukları belirlemek için bu günlükleri kullanın. Yapay zeka belirli bir konuyla ilgili soruları sık sık yanıtlayamıyorsa, bu vektör deponuza daha ayrıntılı belgeler eklemeniz gerektiğinin bir işaretidir. Bu yinelemeli süreç, temel bir arama aracının her gün saatlerce manuel araştırmadan tasarruf sağlayan güvenilir bir kurumsal altyapı parçasına dönüşme yoludur.
Okumaya devam edin: Yapay Zekâ Optimizasyonu · Yapay Zekâ Optimizasyonu