paint-brush
Warhammer 40K'yı Öğrenmek İster misiniz? Ticari Donanımda Vektörler ve RAG ile Bu Chatbot'u Oluşturunby@datastax
521
521

Warhammer 40K'yı Öğrenmek İster misiniz? Ticari Donanımda Vektörler ve RAG ile Bu Chatbot'u Oluşturun

DataStax11m2024/02/26
Read on Terminal Reader

Ticari donanımlarda doğru RAG gerçekleştirmek için vektör depolarını, sözcüksel aramayı ve istem mühendisliğini birleştirmeye yönelik basit bir yöntem hakkında bilgi edinin.
featured image - Warhammer 40K'yı Öğrenmek İster misiniz? Ticari Donanımda Vektörler ve RAG ile Bu Chatbot'u Oluşturun
DataStax HackerNoon profile picture
0-item


Bir görevi tamamlamak için büyük bir dil modelini (LLM) birden çok kez çağırmak zorunda olan üretken bir yapay zeka uygulaması oluştururken, LLM'ye tekrarlanan sorguların hem pahalı hem de öngörülemez olabilmesi yaygın bir sorundur. GPT-3.5/4 gibi büyük modeller, çıkarımı eğitmek ve çalıştırmak için inanılmaz derecede kaynak yoğundur; bu durum API ücretlerine ve ara sıra hizmette yaşanan kesintilere de yansır. ChatGPT başlangıçta bir araştırma önizlemesi olarak piyasaya sürüldü ve üretim uygulamaları için kullanılması amaçlanmamıştı. Bununla birlikte, geniş bir uygulama yelpazesindeki kullanışlılığı tartışılmaz olduğundan Yüksek Lisans'a olan ilgide patlama yaşandı.


ChatGPT'nin başlangıcından bu yana kullanıcılar, GPT kullanırken gizlilik eksikliğini ve çalışma süresini veya çıkarım ayarlarını kontrol edememeyi aşmanın yollarını arıyorlar. Bu, Meta'nın Llama 2'si gibi ücretsiz, halka açık modellerin popülerliğine ve daha sonra tüketici donanımında çalışabilen Llama'nın nicelenmiş ve daha düşük parametreli versiyonlarının yaratılmasına yol açtı. Bu genel modeller, daha az parametre ve daha az ayrıntılı çıktı pahasına olsa da, çok daha az bilgi işlem gücüyle GPT ile aynı işlevlerin çoğunu sağlama kapasitesine sahiptir.


Uygulamanız aşırı büyük bağlamları işlemeye veya ayrıntılı çıktılar üretmeye bağlı değilse, kontrol ettiğiniz örnekler üzerinde kendi çıkarımlarınızı barındırmak daha uygun maliyetli bir seçenek olabilir. Ve konu , artırılmış üretim (RAG)'nin gerçek dünyadaki uygulamalarına geldiğinde, maliyet farklılıkları daha da önemli hale gelebilir.


Ticari donanım üzerinde doğru RAG gerçekleştirmek için vektör depolarını, sözcüksel aramayı ve istem mühendisliğini birleştirmeye yönelik basit bir yöntem göstereceğim. Bu yöntemi kullanarak, hem büyük hacimli bilgilerin karmaşıklığını azaltabilir hem de üretken yapay zeka uygulamalarının çalışmasını geniş ölçekte daha doğru, verimli ve uygun maliyetli hale getirebilirsiniz. RAG'ı belirli bilgi depolarında kullanarak, halüsinasyonları ortadan kaldırma ve üçüncü taraf API'ler için ödeme yapmaya gerek kalmadan herhangi bir kaynak malzemeden etkili ve bilgili aracılar oluşturma becerisini kazanabilirsiniz.


Başlamak için, vektörleri ve metin verilerini depolamak için bir DataStax Enterprise 7 örneğine veya DataStax Astra DB'ye , ayrıca yanıtlar oluşturmak ve verilerinizi vektörlerle kodlamak için bir LLM'ye ve bir cümle dönüştürücü modeline ihtiyacınız olacak. Verilerinizin veya kullanıcı istemlerinin karmaşıklığına bağlı olarak, bunu daha geniş veri aralıklarıyla eşleştirmek için Solr aramaları gerçekleştirebilen bir DataStax Enterprise 6.8 veritabanıyla birleştirmeyi de düşünebilirsiniz; bu örnekte de bunu kullandım. DataStax, tüm bu işlemlerin tek bir veritabanıyla yapılabilmesi için sürekli olarak iyileştirmeler üzerinde çalışıyor, ancak şimdilik iki veritabanı kullanıyorum.


Halüsinasyonları Çözmek

Hangi LLM'yi seçerseniz seçin, hepsi hala halüsinasyonlardan muzdariptir. Şimdilik bu sınırlamanın, RAG olarak da bilinen LLM'ye bilgi istemleri bağlamında doğru bilgilerin sağlanmasıyla çözülmesi gerekiyor. Bilgilerinizi bulma ve bilgi istemleri için dönüştürme yöntemi tamamen veri modelinize bağlıdır, ancak vektör veritabanlarını kullanarak daha ilgili bilgileri daha verimli bir şekilde bulabilirsiniz.


Örneğin, Warhammer 40,000'in nasıl oynanacağı gibi keşfetmek istediğiniz bir konu hakkında bir e-kitap koleksiyonunuz olduğunu varsayalım. Normal şartlar altında, destekleyici literatürü okumak ve uzman seviyesine ulaşmak için yeterli oyun deneyimi kazanmak yıllar alır.

"Adepta Sororitas'tan Morvenn Vahl hakkında bana ne söyleyebilirsin?" gibi hedefe yönelik bir soru. sorusuna en iyi tecrübeli bir oyuncu veya Warhammer mağazasındaki herhangi bir çalışan cevap verecektir. ChatGPT oyunla ilgili birçok soruyu yanıtlayabilse de ne yazık ki bu karakteri kapsayan bir eğitim verisi bulunmuyor:

Bunu, Nvidia RTX A4000 grafik kartına sahip bir tüketici iş istasyonunda barındırılan Llama 2 13B parametre LLM'si ile karşılaştırın. Benzer şekilde, model Warhammer evrenine ilişkin temel bilgileri gösterebilir, ancak ayarlama nedeniyle model, karakterin bulunmamasını umursamaz ve bunun yerine en iyi çabayla halüsinasyon sağlar:

Hem yeni gelenlerin hem de deneyimli oyuncuların Warhammer 40,000 oynamasına yardımcı olabilecek bir chatbot oluşturmak istiyorsanız bu çıktılar kabul edilemez. Etkili bir oyun rehberi olabilmek için chatbotun oyunun kurallarını, her ünitenin kurallarını, bazı bilgi parçalarını ve bazı strateji ve yorumları bilmesi gerekir. Şans eseri, 10. basım kurallarıyla ilgili tüm bilgiler Games Workshop'ta ve hayran web sitelerinde ücretsiz olarak mevcut ve yapmanız gereken tek şey, onu chatbot uygulamanızda aranabilir hale getirmek.


Bunu aynı 13B Llama modeliyle karşılaştırın; burada RAG'da Morvenn Vahl'deki birkaç kaynağın karşılaştırılması ve kullanıcı istemine göre ilgili bir yanıt tasarlanması istenir. Bu sefer, sohbet robotu bir arama veritabanına ve Warhammer 40,000, 10. Baskı'nın nasıl oynanacağına dair tüm halka açık bilgilerle dolu bir vektör veritabanına erişime sahip:

Ne fark var! Yalnızca bu niş karakter hakkında uygun bilgileri bulmakla kalmıyor, aynı zamanda çıktılarını oyunun 10. basım kurallarıyla nasıl oynanacağı bağlamına uygun olarak tutuyor.

Tüm bunların en zor kısmı, LLM'ye gönderilecek ilgili sayfaları bulmak için etkili bir arama yapmaktır. Vektör veritabanlarının özellikle yararlı olabileceği yer burasıdır.

Vektörleri uygulama

Bu örnekte, vektörleri karşılaştırabilmesi ve sözcüksel aramalar yapabilmesi gereken chatbot uygulamasının veritabanı gereksinimlerini karşılamak için Docker örneklerinde çalışan DSE 7 ve DSE 6.8'i kullanacağız. DSE 7 ve Astra DB, vektörleri saklama ve vektör aramaları gerçekleştirmenin yanı sıra metin eşleşmelerine göre filtreleme özelliğini de tanıttı. Bu örnek için yalnızca birkaç düzine kitapta arama yapmamız gerekiyor, dolayısıyla Docker'da DSE örneklerini çalıştırmak çoğu tüketici donanımı için yeterli olacaktır.


Veritabanlarınızda vektörlerin kullanılması, belirli bir sorguya benzer belgeleri bulmanıza yardımcı olur veya başka bir aramadan alınan sonuçları karşılaştırmak için kullanılabilir. Bu, sözcüksel aramanın sınırlamalarını aşmanıza ve veri modellerinin etkinliğini artırmanıza yardımcı olabilir.


Örneğin, e-kitap PDF'leri miniLM gibi cümle dönüştürücülerle kodlanmaktan yararlanabilir ve vektörler, bir sorgu ile belirli bir kaynak arasında benzerlik karşılaştırması yapmak için kullanılabilir. Bu durumda, bir e-kitaptaki sayfa metninin yerleştirmelerini oluşturmak için bir cümle dönüştürücü modeli kullanılır ve bu, bir sonucun sorguyla alakalı olup olmadığını anlamak için kullanıcının istemiyle karşılaştırmanızı sağlayabilir. İlgili sayfalar, kullanıcının sorgusuna benzeyen ve model açısından daha iyi benzerlik puanları sağlayan terimlerin bir veya daha fazla örneğini içermelidir.


Bununla birlikte, vektörler en iyi şekilde mevcut bir sözcüksel arama modeline ek olarak uygulanır. Yalnızca vektörlere göre arama yaparsanız, beklenmedik bir şekilde alakasız belgeler alabilir ve bunları geçerli olmadıkları bağlam olarak sunabilirsiniz.

Bu örnekte "Adepta Sororitas'tan Morvenn Vahl hakkında bana ne söyleyebilirsin?" Yüksek Lisans tarafından bir dizi basit arama terimine dönüştürülebilir:


Morvenn, Vahl, Adepta, Sororitas


İlgili belgeleri bulmanın ilk adımı, bu temel terimleri içeren belgeleri aramak olacaktır. Bu, böyle bir sorguyla eşleşen sayfa metnindeki anahtar kelimeleri bulmak için önce veritabanındaki metin eşleşmelerini filtreleyerek yapılabilir. Anahtar kelimeler oluşturmak için bir LLM kullanmanın nedeni, aranacak olası anahtar kelimelerin daha geniş bir aralığını sağlamaktır; çünkü çoğu zaman orijinal bilgi isteminin metninde yer almayan ancak ilgili olan daha fazla anahtar kelime eklemeye çalışır. Bununla birlikte, LLM'ler aynı zamanda sterilize etmeniz gereken özel karakterler ve tuhaf diziler de oluşturabileceğinden bu konuda dikkatli olun.


En az bir sonuca sahip olduğunuzda, kullanıcının sorgusunu vektörleştirebilir ve bunu sözcüksel aramanın vektörleriyle karşılaştırarak her bir sonucun ne kadar alakalı olduğuna ilişkin puanlar oluşturabilirsiniz. Bu, sorgunun doğruluğu açısından arama sonuçlarını kontrol etmenize ve sonuçlarınızı nihayet Yüksek Lisans'a sunma konusunda ilgisiz sonuçları reddetmek için bir eşik belirlemenize olanak tanır.


Bu durumda ilk adım, özellikle Morvenn Vahl'in dizin kartını veya oynanış mekaniklerini gösteren sayfalarla eşleşmelidir çünkü bunlar, karakterin birimini oyunda nasıl oynandığına göre tanımlar. Sayfa, kullanıcı sorgusu için uygulama tarafından belirlenen belirli bir alaka eşiğini karşılıyorsa özetlenir ve bir sonuç listesine yerleştirilir.


Son olarak, arama sonuçları bir liste halinde derlenebilir ve LLM'ye geri gönderilebilir; burada orijinal sorguyu yanıtlamak için en alakalı bağlamları kullanması istenir. İşte akışın görselleştirilmesi:



Gördüğünüz gibi LLM bu akış için oldukça sık çağrılıyor. Yüksek Lisans, kullanıcı istemini anahtar kelimelere dönüştürmekten, uygulanabilir sonuçları özetlemekten ve bir sorguya en iyi yanıt veren bağlamı seçmekten sorumludur. Kontrol edilecek her kaynak, GPT'de sorgu yapılırken oldukça pahalı olabilecek başka bir LLM çağrısı ekler. Ancak ihtiyacınız olan bilgiye zaten sahipseniz ve onu sadece özetlemek veya dönüştürmek istiyorsanız o zaman bu kadar büyük bir model kullanmanıza gerek kalmayabilir. Aslında daha küçük modellere geçmek birçok fayda sağlayabilir.


Daha küçük bir LLM kullanarak her sorgunun hesaplama maliyetini düşürebilirsiniz; bu da zaman içinde önemli tasarruflara yol açabilir. Bu aynı zamanda kullanıcılarınız için daha hızlı yanıt süreleri sağlayabilir ve bu da genel deneyimlerini geliştirebilir. RAG'nin, tümü aynı GPU örneğinde barındırılan küçük bir LLM ve küçük veritabanları kullanılarak gerçekleştirildiği bu örnekte, 15 kaynağın alınması, bunların alaka açısından analiz edilmesi ve nihai bir yanıt sağlanması yaklaşık 30 saniye sürer. İstemler (kaynaklar) ne kadar kısa olursa, çıktılar o kadar hızlı döndürülebilir.


Ek olarak, bu yöntem daha fazla güvenlik ve ölçeklenebilirlik sağlar. Hızlı mühendislik ve LLM'ye yapılan çağrılar sayesinde, verilere nasıl erişildiği ve kullanıcıların yanıtlarında ne elde edeceği konusunda tam kontrol sizdedir. Kaynak kullanımı açısından, örnek 13B parametre modeli yalnızca 8 GB'ın biraz üzerinde VRAM tüketiyor ve yine de ilgili yanıtlar sağlıyor. İhtiyaçlara bağlı olarak bu, RAG'ın kullanıcı iş istasyonları ve mobil cihazlar gibi sayısız başka platformda bile çalıştırılma potansiyelini gösterir.

Çıkışı kontrol etme

Hızlı mühendislik, RAG'ın tam olarak istediğiniz şeyi yapmasını sağlamanın anahtarıdır. Chatbot'un verileri nasıl yorumlayacağının ve düşünmesi gereken bağlamın kontrolü sizdedir. Bu örnekte, chatbot'un özellikle Warhammer bilgileri aradığımızı bilmesini sağlamak istiyoruz, böylece öncelikle ondan kullanıcının sorgusuna destekleyici bağlam sağlamaya yardımcı olmasını isteyebiliriz:


Sorgu: “<kullanıcı sorgusu>”

Bana bir arama motoru için Warhammer 40K anahtar kelimelerinin minimal, virgülle ayrılmış bir listesini verin. Yalnızca sorguyla yanıt verin. Emoji veya özel karakterler kullanmayın.

Cevap:


Warhammer 40.000, ilgisiz diğer popüler kültürde görünebilecek terimler ve isimlerle doludur; bu nedenle, ilk sorguda RAG'ın bağlamını belirlemek önemlidir. Bu bağlam, uygulamanız birden fazla bağlamı kapsıyorsa (örneğin, Warhammer oyun kurallarının birden fazla sürümünü kapsamanız veya bunları resmi bilgi kitaplarıyla birleştirmeniz gerekiyorsa) seçebileceğiniz veya değiştirebileceğiniz bir şey olmalıdır.


Bu deneme için kullanıcının sorgusunun her zaman tırnak işaretleri içine alındığını unutmayın. Bu, LLM'nin doğrudan yanıtlamaya çalıştığı sorgu ile doğrudan yanıtlamaması gereken ayrı bilgi istemi mühendisliği talimatları arasında ayrım yapmasına yardımcı olur. Bilgi isteminin soru/cevap kısmı belirli bir bağlama uyacak şekilde ayarlanabilir, ancak çoğunlukla yapmanız gereken tek şey LLM'ye doğrudan neye yanıt vermesi, neye yanıt vermemesi gerektiği ve nasıl yanıt vermesi gerektiği konusunda bilgi vermektir.


Bu durumda, seri oldukça popüler olduğundan ve genel bilgiler ücretsiz olarak sunulduğundan Yüksek Lisans'ın oyun evreni hakkında genel bilgiye sahip olduğunu varsaymak yanlış olmaz. Bu ilk sorgunun çıktısı, uygulamamızda bir yardımcı sayfa oluşturmamıza gerek kalmadan sözcüksel aramada kullanılacak bazı anahtar kelimelerin oluşturulmasına yardımcı olur.


Daha sonra sözcüksel ve vektörsel karşılaştırmalar arka planda gerçekleştirilebilir ve LLM tarafından incelenmek üzere bir sonuç listesi derlenir. Kullanıcının orijinal istemine hiçbir zaman ilk adımda çıkarımla doğrudan yanıt verilmediğinden, LLM yalnızca bir aramada bulunanı dönüştürür ve kendi korkulukları veya bilgi tabanı dışındaki sorguları yanıtlaması kolayca durdurulabilir.

Aramadan alakalı sonuçlar varsa:


Sorgu: “<kullanıcı sorgusu>”

Bu arama sonuçlarını inceleyin ve sorguyu yanıtlamak için bunları kullanın.

Sonuç 1

Sonuç 2

vesaire.

Cevap:


Aramadan alakalı sonuç yoksa:


Sorgu: “<kullanıcı sorgusu>”
Kibarca bana aradığınızı ancak sorguya yanıt bulamadığınızı söyleyin. Bunun yerine bilginiz dahilinde en iyisine yanıt verin.

Cevap:


Daha fazla güvenlik için, istek yerine getirilemediğinde isteği tamamen reddedebilir veya yeniden yönlendirebilirsiniz.


Sorgu: “<kullanıcı sorgusu>”

Kibarca aradığınızı ancak soruya yanıt bulamadığınızı söyleyin. Bunun yerine yardım için Müşteri Desteği ekibine ulaşmamı söyleyin.

Cevap:


Hatta daha fazla ayrıntı isteyerek çıktıları daha uzun hale getirebilirsiniz. Kaynak materyalinizi bağlam penceresine sığdırabildiğiniz sürece LLM onu sizin için dönüştürebilir.


Sorgu: “<kullanıcı sorgusu>”

Bu arama sonuçlarını inceleyin ve sorguyu yanıtlamak için bunları kullanın. Mümkün olduğunca ayrıntılı olun ve kaynakları belirtin.

Sonuç 1

Sonuç 2

vesaire.

Cevap:

Sınırlamalar

LLM'nin sınırlı bir bağlam penceresi vardır ve olağanüstü büyük metin sayfalarını işlemede başarısız olur. Verilerinizin daha yönetilebilir olması ve LLM tarafından işlenmesinin daha kolay olması için satır boyutuna sınırlar koymayı düşünün. Örneğin, sayfaları yaklaşık 1000 karakterlik parçalara bölmek işe yarayacak gibi görünüyor ve istemde dört veya beşten fazla ayrıntılı yanıt vermekten kaçınmaya çalışın.


LLM'nin, bağlam penceresine sığdırabileceğiniz şeyler dışında bir konuşma anısı yoktur. Kalıcı bir konuşma verisi deposu oluşturmak mümkündür, ancak bir LLM'nin aşırı derecede büyük konuşmaları veya ayrıntılı bağlamı bir bilgi istemine sığdırması mümkün değildir; dönüştürebileceklerinin bir üst sınırı vardır. Bu, ne olursa olsun, belirli bir noktada LLM'nin belirli ayrıntıları bağlam olarak sağlanmış olsalar bile "unuttuğunu" fark edeceğiniz anlamına gelir; bu sadece aracın doğasında olan bir sınırlamadır. Yalnızca kısa konuşmalar için ona güvenmek ve halüsinasyonları en aza indirmek için bir kerede küçük miktarlardaki metni dönüştürmeye odaklanmak en iyisidir.


LLM'de rastgelelik bir sorun olabilir. Veri kümeniz için hangi istemlerin en iyi sonucu verdiğini belirlemek ve kullanım durumunuz için hangi modelin en iyi sonucu verdiğini bulmak için test etmek ve ayarlama yapmak gerekli olacaktır. 13B parametre modeliyle yaptığım testlerde, özellikle bilgi istemi uzunluğu arttıkça, ilk bilgi isteminden hangi arama anahtar kelimelerinin oluşturulduğu konusunda pek çok öngörülemezlik vardı. En iyi sonuçları elde etmek için daha kısa istemlere sadık kalın.

Çözüm

Özetle, vektör ve sözcüksel arama modellerini birleştirerek RAG'dan yararlanmak, ilgili sonuçların daha etkili bir şekilde bulunmasına ve sınıflandırılmasına ve halüsinasyonlara çok daha az eğilimli ajan çıktıları üretilmesine olanak tanır. Aranabilir bağlam ne kadar küçük olursa, yanıtlar da o kadar kesin ve doğru olur. Kendi özel LLM çağrılarınızı oluşturmak, yanıtları istediğiniz doğruluk düzeyine ve koruma raylarına göre ayarlama konusunda çok daha fazla esneklik sunar.


Sınırlı bağlam penceresi içinde aşırı derecede büyük miktarda veriyi işleyemese de, sınırlı bilgi tabanlarında etkili yardımcılar oluşturmanın yanı sıra aynı veya daha az donanım üzerinde daha fazla eş zamanlı aracıyı eskisinden daha fazla çalıştırma olanağı sunar. Bu, sanal asistanlara masa üstü oyun oynama gibi uygulamalar için daha fazla olanak sunabilir ve hatta hükümet, hukuk ve muhasebe firmaları, bilimsel araştırma, enerji ve daha fazlası tarafından kullanılacak daha karmaşık konuları kapsayabilir.


İnşaata başlamaya hazırsanız Astra DB'yi ücretsiz deneyebilirsiniz . Bulut veya veritabanı Ops deneyimi gerektirmeden veritabanınızı oluşturun ve RAG kaynaklarınızı bugün yüklemeye başlayın.


Yazan: Mario Charnell-Delgado, DataStax


Burada da yayınlandı.