Kendi anlamsal arama modelinize ince ayar yaparak bir Retrieval Augmented Generation (RAG) boru hattı uygulamak, soru yanıtlama sistemlerinin doğruluğunu ve alaka düzeyini artırmak için güçlü bir yaklaşımdır.
Bu teknik, hem anlamsal arama hem de üretici yapay zekanın güçlü yönlerini birleştirerek sistemin kullanıcı sorularını daha iyi anlamasını ve daha doğru ve bağlamsal olarak alakalı yanıtlar üretmesini sağlar. Geliştiriciler, Cümle Dönüştürücüleri kullanarak bir anlamsal arama modeline ince ayar yaparak modeli kendi özel alanlarına göre uyarlayabilir ve RAG işlem hattının genel performansını artırabilir.
Semantik arama, geleneksel anahtar kelime tabanlı arama yöntemlerinin ötesine geçen bir veri arama tekniğidir. Arama yapan kişinin amacını ve sorgusunda kullandığı terimlerin bağlamsal anlamını dikkate alarak arama sonuçlarının doğruluğunu artırmak için doğal dil işleme ve makine öğrenimi algoritmalarını kullanır. Bu yaklaşım, sadece anahtar kelimeleri eşleştirmek yerine, arama sorgusunun ve web sayfalarındaki içeriğin altında yatan anlamı anlamayı amaçlamaktadır. Bunu yaparak, anlamsal arama, orijinal sorguda kullanılan kelimeleri tam olarak içermese bile daha alakalı sonuçlar sunabilir.
Bunu başarmak için anlamsal arama, kelime anlam ayrıştırma, kavram çıkarma ve sorgu genişletme gibi çeşitli teknikler kullanır. Ayrıca, kullanıcının amacı ve bağlamıyla eşleşmeyi amaçlayan sonuçlar döndürmek için vektör arama ve makine öğrenimini kullanır. Anlamsal arama, Google gibi web arama motorlarında yaygın olarak kullanılmaktadır ve varlıklar ve ilişkileri hakkında yapılandırılmış verileri depolayan Bilgi Grafiği gibi teknolojiler tarafından desteklenmektedir. Bu, arama motorlarının arama sorgularının arkasındaki anlamı anlamasına ve daha doğru ve anlamlı sonuçlar sağlamasına olanak tanır.
Anlamsal arama, teknik belgeleri, sözleşmeleri, ürün açıklamaları gibi kendi alan bilgileriyle ilgili soruları yanıtlamak isteyen işletmeler için çok yararlıdır.
Retrieval Augmented Generation (RAG), bağlamsal olarak daha doğru ve güncel bilgiler sağlamak için harici veri kaynaklarını dahil ederek Büyük Dil Modelleri (LLM'ler) gibi üretken yapay zeka modellerinin doğruluğunu ve güvenilirliğini artıran bir tekniktir. Bir geri alma bileşenini üretken bir modelle entegre ederek, sistemin yanıtları oluştururken dahili bilgisini desteklemek için bir veritabanından veya bilgi tabanından ilgili bilgileri aramasına ve getirmesine olanak tanır.
Bu yaklaşım, YZ modelinin en güncel, güvenilir gerçeklere dayalı yanıtlar verebilmesini ve kullanıcıların modelin yanıtlarında kullanılan bilgilerin kaynaklarını doğrulamasını sağlar. RAG, YZ modelinin harici bilgi kaynaklarına dayandırılmasına yardımcı olarak çıktısının kalitesini artırır ve kapsamlı bir yeniden eğitime gerek kalmadan modeli güncellemek için bir yol sağlar.
RAG, üretici yapay zeka modellerinden kaynaklanan potansiyel halüsinasyonları azaltmak için harika bir stratejidir. RAG, her iki dünyanın da en iyisine sahip bir soru yanıtlama sistemi oluşturmaya yardımcı olur: gerçeklere dayalı doğruluk ve doğal dilde oluşturulan insan yanıtları.
Sentence Transformers kütüphanesi, son teknoloji metin katıştırmaları için tasarlanmış güçlü bir Python çerçevesidir. BERT, RoBERTa, XLM-R ve diğerleri gibi dönüştürücü sinir ağları üzerine inşa edilmiştir ve anlamsal arama, paraphrase madenciliği, anlamsal benzerlik karşılaştırması, kümeleme ve daha fazlası dahil olmak üzere çeşitli görevlerde en yüksek performansı elde eder. Bu kütüphane, cümle gömme yöntemlerinde kolaylıkla ince ayar yapılmasına olanak tanıyarak özel ihtiyaçları karşılamak üzere göreve özgü cümle gömme yöntemlerinin oluşturulmasını sağlar. Cümle Dönüştürücüler web sitesinden daha fazla bilgi edinin
Kütüphane, Hugging Face platformunda bulunan 50'den fazla dil için önceden eğitilmiş çok çeşitli Sentence Transformers modelleri sunar. Kullanıcılar ayrıca kütüphaneyi kullanarak kendi modellerini eğitebilir veya ince ayar yapabilir, böylece benzersiz kullanım durumları için özel modeller oluşturma esnekliği sağlar. Sentence Transformers ekibi kısa bir süre önce bu kütüphanenin yeteneklerini, özellikle de ince ayar yeteneklerini önemli ölçüde geliştiren yeni bir ana sürüm (v3) yayınladı.
Sentence Transformers kütüphanesi hızlı, kapsamlı ve bakımlıdır, bu yüzden bu eğitimde onu kullanıyoruz.
Kendi anlamsal arama modelinizi oluşturmak, çok düşük bir gecikme süresi sağlarken doğru sonuçlar elde etmenin harika bir yoludur. Kendi anlamsal arama modelinizi bir GPU'ya yerleştirirseniz bu daha da doğru olur.
İlk olarak, verilerimizi içeren küçük bir veri kümesi oluşturalım. HP yazıcılarla ilgili aşağıdaki teknik belgeleri içeren 1 sütunlu bir CSV dosyası ("dataset.csv" olarak adlandırılır) oluşturun (gerçek hayat senaryosunda elbette çok daha fazla örnek eklemek isteyeceksiniz):
"HP® LaserJets have unmatched printing speed, performance and reliability that you can trust. Enjoy Low Prices and Free Shipping when you buy now online."
"Every HP LaserJet comes with a one-year HP commercial warranty (or HP Limited Warranty)."
"HP LaserJet ; Lowest cost per page on mono laser printing. · $319.99 ; Wireless options available. · $109.00 ; Essential management features. · $209.00."
Her satır en fazla 512 belirteç (kabaca 400 kelimeye eşdeğer) içerebilir ve doğruluğu en üst düzeye çıkarmak için 128 belirtecin (kabaca 100 kelimeye eşdeğer) altında kalınması önerilir. Artık veri kümemizde 3 adet dokümantasyonumuz olduğuna göre, modelimizi kullanarak verileri Sentence Transformers ile kodlayabiliriz. Aşağıdakileri içeren bir Python betiği oluşturun (PyTorch ve Sentence Transformers'ın yüklü olduğundan emin olun).
from sentence_transformers import SentenceTransformer
import csv
import torch
model_name = 'paraphrase-multilingual-mpnet-base-v2'
encoded_model_path = 'semantic_search_model.pt'
dataset_path = 'dataset.csv'
bi_encoder = SentenceTransformer(model_name)
passages = []
with open(dataset_path) as csv_file:
csv_reader = csv.reader(csv_file)
for row in csv_reader:
passages.append(row[0])
corpus_embeddings = bi_encoder.encode(
passages, batch_size=32, convert_to_tensor=True, show_progress_bar=True)
torch.save(corpus_embeddings, encoded_model_path)
Bu komut dosyası paraphrase-multilingual-mpnet-base-v2'yi temel model olarak indirip kullanır ve verilerimizi kodlamak için kullanır. Gereksinimlerinize bağlı olarak (model boyutu, kullanım durumu, desteklenen diller, ...) mevcut birçok önceden eğitilmiş model arasından seçim yapabilirsiniz. Donanımınıza bağlı olarak, kodlama işlemini hızlandırmak için "batch_size" parametresini uyarlamak isteyeceksiniz.
Oluşturulduktan sonra aşağıdaki Python betiği ile modelinizi çıkarım için kullanabilirsiniz:
import csv
from sentence_transformers import SentenceTransformer, util
import torch
bi_encoder = SentenceTransformer('paraphrase-multilingual-mpnet-base-v2')
semantic_search_model = torch.load('semantic_search_model.pt')
passages = []
with open('app/custom_model/dataset.csv') as csv_file:
csv_reader = csv.reader(csv_file)
for row in csv_reader:
passages.append(row[0])
question_embedding = bi_encoder.encode(
"How long is the warranty on the HP Color LaserJet Pro?", convert_to_tensor=True)
hits = util.semantic_search(
question_embedding, semantic_search_model, top_k=3)
hits = hits[0]
result = {"search_results": [
{"score": hit['score'], "text": passages[hit['corpus_id']]} for hit in hits]}
Yukarıdaki çıkarım komut dosyası aşağıdaki sonuçları döndürür:
{
"search_results": [
{
"score": 0.99,
"text": "Every HP LaserJet comes with a one-year HP commercial warranty (or HP Limited Warranty)."
},
{
"score": 0.74,
"text": "All consumer PCs and printers come with a standard one-year warranty. Care packs provide an enhanced level of support and/or an extended period of coverage for your HP hardware. All commercial PCs and printers come with either a one-year or three-year warranty."
},
{
"score": 0.68,
"text": "In-warranty plan · Available in 2-, 3-, or 4-year extension plans · Includes remote problem diagnosis support and Next Business Day Exchange Service."
},
]
}
Çıkarım kodumuzda, "top_k" parametresi kaç sonuç döndürmek istediğimizi belirler. Sonuç olarak, veri kümesindeki eşleşen metni bir güven puanıyla birlikte gösteriyoruz. Bu puan önemlidir çünkü yanıtı kabul edip etmeyeceğimize karar vermemize yardımcı olur.
Gördüğünüz gibi, semantik aramanın ana sınırlaması, modelin soruyu doğrudan yanıtlamadan veri kümesinden ham metni döndürmesidir. Bu yüzden şimdi ilk soruyu doğal dilde yanıtlamak için bunu bir bağlam olarak üretken bir yapay zeka modeline vermek istiyoruz.
OpenAI üzerinde GPT-4 veya NLP Cloud üzerinde LLaMA 3 ve ChatDolphin gibi gelişmiş bir LLM'den yararlanarak bunu kolayca başarabiliriz. Anlamsal arama modelinden en iyi sonucu tutmaya ve bunu LLM'ye bir bağlam olarak iletmeye karar verebilir veya birkaç sonucu tutabilirsiniz. İşte yalnızca en iyi sonucu kullanan bir istem örneği:
Context: Every HP LaserJet comes with a one-year HP commercial warranty (or HP Limited Warranty).
Based on the above context, answer the following question: How long is the warranty on the HP Color LaserJet Pro?
Bu istek buna benzer bir şey döndürür:
The warranty on the HP Color LasertJet Pro lasts at least 1 year.
Getirimi Artırılmış Üretim (RAG) sisteminde, yerel kodlanmış verilerle anlamsal bir arama modeli oluşturmak veya bir vektör veritabanı kullanmak iki ilginç seçenektir.
Kendi verilerimizi kodlarken, verileri tensörlere dönüştürür ve ardından verileri bir GPU'ya yükleme fırsatına sahip oluruz. Öte yandan, bir vektör veritabanı, bu yüksek boyutlu vektörleri verimli bir şekilde depolamak, indekslemek ve sorgulamak için tasarlanmış özel bir veritabanıdır.
Çok düşük gecikme süreleri elde etmek isteyen işletmeler için, hesaplama süresini iyileştirmek amacıyla kendi verilerinizi kodlamanız ve verileri bir GPU'ya yüklemeniz önerilir. Ancak, veri kümesi her değiştiğinde verilerinizin yeniden kodlanması gerektiğinden bu esneklikten ödün vermek anlamına gelir. Temel verileriniz çok sık değişiyorsa, katıştırmaları çıkarmanız ve bunları bir vektör veritabanında (örneğin PG Vector gibi) artımlı olarak depolamanız daha basit olabilir.
Retrieval Augmented Generation, sonuçların doğruluğunu önemli ölçüde artırdığı için teknik belgeler, sözleşmeler vb. gibi belirli verilerle ilgili soruları yanıtlamak isteyen işletmeler için çok önemlidir. RAG, örneğin bir destek sohbet botunun önemli bir bileşenidir.
Sentence Transformers, kendi verilerinize dayalı olarak kendi anlamsal arama modelinizi oluşturmak için kullanılabilecek harika bir kütüphanedir. Bir GPU'ya yerleştirildiğinde ve gelişmiş bir üretken yapay zeka modeliyle birleştirildiğinde, böyle bir modelin son derece güçlü olduğu kanıtlanır.
Cümle Dönüştürücülerine dayalı kendi anlamsal arama modelinizi kendiniz oluşturmak ve dağıtmakla ilgilenmiyorsanız, bunu NLP Cloud'da 1 tıklamayla kolayca yapabilirsiniz. NLP Cloud'da semantik aramayı şimdi deneyin!
RAG, semantik arama ve Sentence Transformers hakkında sorularınız varsa, lütfen bize sormaktan çekinmeyin, tavsiyede bulunmak her zaman bir zevktir!
Julien
NLP Cloud'da CTO