Yapay zeka modelleri ve platformları
LlamaIndex: LLM Uygulamalarınızı Özel Verilerle Kolayca Genişletin
Büyük dil modelleri (LLM’ler) gibi OpenAI’nin GPT serisi, çeşitli kamu erişimi olan verilerle eğitilmiş ve metin oluşturma, özetleme, soru cevaplama ve planlama konularında dikkat çekici yetenekler sergilemiştir. Bu modellerin esnekliğine rağmen, özel veya özel veri ile entegrasyonu konusunda sıkça sorulan bir soru vardır.
İşletmeler ve bireyler, Notion, Slack ve Salesforce (CRM ) gibi çeşitli uygulamalarda veya kişisel dosyalarında bulunan benzersiz ve özel verilerle doludur. Bu verileri LLM’lerle kullanmak için çeşitli yöntemler önerilmiş ve denenmiştir.
Fine-tuning bu yöntemlerden biridir ve modelin ağırlıklarının belirli veri kümelerinden bilgi içerecek şekilde ayarlanmasıdır. Ancak bu süreç zorluklar içerir. Veri hazırlama ve optimizasyon süreci önemli bir çaba gerektirir ve makine öğrenimi uzmanlığı gerektirir. Ayrıca, büyük veri kümeleriyle çalışırken maliyet önemli olabilir.
Bağlam içi öğrenme, modelin yeniden eğitilmesine gerek kalmadan, LLM’ye gerekli bağlamı sağlamak için girdileri ve promt’ları oluşturarak alternatif bir yaklaşım olarak ortaya çıkmıştır. Bu yaklaşım, geniş model yeniden eğitimi ihtiyacını azaltır ve özel verilerin entegrasyonu için daha verimli ve erişilebilir bir yol sunar.
Ancak, bu yaklaşımın dezavantajı, kullanıcıların prompt mühendisliği konusunda uzmanlık ve beceri gerektirmesidir. Ayrıca, bağlam içi öğrenme her zaman fine-tuning kadar doğru veya güvenilir olmayabilir, özellikle teknik veya uzmanlık gerektiren verilerle çalışırken. Modelin geniş internet metinleri üzerinde önceden eğitilmiş olması, özel jargon veya bağlamın anlaşılmasını garanti etmez ve bu da yanlış veya alakasız çıktılara yol açabilir. Bu, özellikle özel veri bir niş alan veya endüstriye ait olduğunda önemlidir.
Dahası, bir promtta sağlanabilecek bağlam miktarı sınırlıdır ve LLM’nin performansı, görevin karmaşıklığı arttıkça düşebilir. Ayrıca, sağlanan bilgilerin gizliliği ve güvenliği konusunda da bir zorluk vardır, çünkü promtta verilen bilgiler hassas veya gizli olabilir.
Topluluk bu teknikleri keşfederken, LlamaIndex gibi araçlar dikkat çekmeye başlamıştır.
LlamaIndex, eski Uber araştırma bilimcisi Jerry Liu tarafından başlatılmıştır. Geçen sonbahar GPT-3 ile deneyler yaparken, Liu modelin özel verilerle çalışmadaki sınırlılıklarını fark etti ve bu gözlem LlamaIndex açık kaynak projesinin başlangıcına yol açtı.
Girişim, yatırımcıları çekerek recent bir finansman turunda 8,5 milyon dolar topladı.
LlamaIndex, LLM’leri özel verilerle genişletmeyi kolaylaştırır ve önceden eğitilmiş modellerle özel veri kullanım örnekleri arasındaki boşluğu doldurur. LlamaIndex ile kullanıcılar, LLM’lerle kendi verilerini kullanabilir ve böylece bilgi oluşturma ve akıl yürütme yeteneklerini kişiselleştirilmiş içgörülerle kilitleyebilir.
Kullanıcılar, LLM’lere kendi verilerini kolayca sağlayabilir ve böylece bilgi oluşturma ve akıl yürütme yeteneklerini derinlemesine kişiselleştirilmiş bir ortamda gerçekleştirebilir. LlamaIndex, bağlam içi öğrenmenin sınırlılıklarını, daha kullanıcı dostu ve güvenli bir veri etkileşimi platformu sağlayarak giderir ve böylece LLM’lerin özel verileriyle tam potansiyelini kullanmak için makine öğrenimi uzmanlığına gerek kalmaz.
Yüksek Düzeyli Kavramlar ve Bilgiler
1. Alım Güçlendirilmiş Oluşturma (RAG):
RAG, LLM’leri özel verilerle birleştirmek için iki aşamalı bir süreçtir ve modelin daha doğru ve bilgilendirici yanıtlar verme yeteneğini tăngtırır. Süreç şunları içerir:
- İndeks Oluşturma Aşaması: Bu, bilgi tabanı oluşturmak için hazırlık aşamasıdır.
- Sorgulama Aşaması: Burada, bilgi tabanı, LLM’lere sorgulara yanıt vermek için ilgili bağlamı bulmak amacıyla taranır.
LlamaIndex ile İndeks Oluşturma Yolculuğu:
- Veri Bağlayıcıları: Veri bağlayıcıları, verilerin LlamaIndex’e geçişini sağlayan bir tür “pasaport” gibi düşünülebilir. Çeşitli kaynaklardan ve formatlardan verileri alır ve bunları basit bir “Belge” temsiline dönüştürür. Veri bağlayıcıları, LlamaHub’da bulunabilir, bu da açık kaynaklı bir depodur ve kolay entegrasyon için tasarlanmış veri yükleyicileri içerir.
- Belgeler / Düğümler: Bir Belge, çeşitli veri türlerini (PDF, API çıktısı, veritabanı girişleri gibi) tutabilen genel bir “valiz” gibidir. Bir Düğüm ise, bir Belgeden alınan bir parça veya “parça”dır ve meta veri ve diğer düğümlerle ilişkilerle zenginleştirilir, böylece daha sonra precisa veri alma için güçlü bir temel oluşturur.
- Veri İndeksleri: Veri alındıktan sonra, LlamaIndex bu verilerin aranabilir bir forma dönüştürülmesine yardımcı olur. Arka planda, ham belgeleri ara temsilcilere ayırır, vektör gömme hesaplar ve meta verileri çıkarır. İndeksler arasında ‘VectorStoreIndex’ genellikle tercih edilen seçenektir.
LlamaIndex’de İndeks Tipleri: Organize Verilerin Anahtarı
LlamaIndex, farklı ihtiyaçlar ve kullanım durumları için çeşitli indeks türleri sunar. Bu indekslerin temelinde “düğümler” yatmaktadır. LlamaIndex indekslerini mekanizmaları ve uygulamalarıyla anlamaya çalışalım.
1. Lista İndeksi:
- Mekanizma: Liste İndeksi, düğümleri sıralı bir şekilde düzenler. Girdi verisi düğümlere bölündükten sonra, bunlar lineer bir şekilde sıralanır ve sıralı veya anahtar kelimeler ya da gömme yoluyla sorgulanmaya hazır hale gelir.
- Avantaj: Bu indeks türü, sıralı sorgulama gerektiğinde parlar. LlamaIndex, LLM’nin token limitini aşan tüm girdi verilerini kullanarak, her düğümdeki metni sorgulayarak ve yanıtları iyileştirerek yanıt verir.
2. Vektör Deposu İndeksi:
- Mekanizma: Burada, düğümler vektör gömmelerine dönüştürülür ve yerel olarak veya özel bir vektör veritabanında (örneğin Milvus) depolanır. Sorgulandığında, en benzer düğümleri getirir ve yanıtları sentezlemek için bunları kullanır.
- Avantaj: Metin benzerliği için vektör arama gerektiren iş akışlarında bu indeks kullanılabilir.
3. Ağaç İndeksi:
- Mekanizma: Ağaç İndeksi, girdi verilerini bir ağaç yapısına dönüştürür. Bu, düğümlerin alt düğümlerden oluşan bir hiyerarşi oluşturmasıyla oluşur. Sorgulamada, ağaç kökten yaprak düğümlere doğru gezilir veya seçilen düğümlerden doğrudan yanıt oluşturulur.
- Avantaj: Uzun metin parçalarını sorgulamak daha verimli hale gelir ve çeşitli metin segmentlerinden bilgi çıkarmak kolaylaşır.
4. Anahtar Kelime İndeksi:
- Mekanizma: Anahtar Kelime İndeksi, anahtar kelimelerin düğümlere haritalanmasıyla oluşur. Sorgulandığında, anahtar kelimeler çıkarılır ve yalnızca eşleşen düğümler dikkate alınır.
- Avantaj: net kullanıcı sorguları olduğunda, örneğin sağlık belgelerinde COVID-19 ile ilgili belgeleri filtrelemek gibi durumlarda kullanılabilir.
LlamaIndex’i Kurma
LlamaIndex’i kurmak oldukça basittir. Ya Pip’den doğrudan kurabilir ya da kaynak kodundan kurabilirsiniz. (Sisteminizde python kurulu olmalıdır veya Google Colab kullanabilirsiniz)
1. Pip’den Kurulum:
- Aşağıdaki komutu çalıştırın:
pip install llama-index
- Not: Kurulum sırasında, LlamaIndex bazı paketler için (NLTK ve HuggingFace gibi) yerel dosyaları indirebilir ve depolayabilir. Bu dosyaların depolanacağı dizini belirtmek için “LLAMA_INDEX_CACHE_DIR” ortam değişkenini kullanabilirsiniz.
2. Kaynak Kodundan Kurulum:
- İlk olarak, LlamaIndex deposunu GitHub’dan klonlayın:
git clone https://github.com/jerryjliu/llama_index.git
- Proje dizinine gidin.
- Poetry’yi paket bağımlılıklarını yönetmek için kullanacaksınız.
- Sanal bir ortam oluşturun:
poetry shell - Temel paket gereksinimlerini yükleyin:
poetry install
Çevrenizi LlamaIndex için Ayarlama
1. OpenAI Ayarları:
- Varsayılan olarak, LlamaIndex OpenAI’nin
gpt-3.5-turbomodelini metin oluşturma vetext-embedding-ada-002modelini geri çağırma ve gömme için kullanır. - Bu ayarları kullanmak için
OPENAI_API_KEYsahibi olmanız gerekir. OpenAI web sitesine kaydolup yeni bir API anahtarı oluşturabilirsiniz. - Ayrıca, altta yatan Büyük Dil Modelini (LLM) projenize göre özelleştirebilirsiniz. LLM sağlayıcınıza bağlı olarak, ek ortam anahtarları ve token’lara ihtiyaç duyabilirsiniz.
2. Yerel Çevre Ayarları:
- Eğer OpenAI kullanmak istemiyorsanız, LlamaIndex yerel modellere otomatik olarak geçer –
LlamaCPPvellama2-chat-13Bmetin oluşturma için veBAAI/bge-small-engeri çağırma ve gömme için. LlamaCPPkullanmak için, sağlanan kurulum kılavuzunu takip edin.llama-cpp-pythonpaketini yükleyin, ideal olarak GPU’nuzu destekleyecek şekilde derleyin. Bu kurulum, CPU ve GPU’da yaklaşık 11.5GB bellek kullanacaktır.- Yerel gömmeler için
pip install sentence-transformersçalıştırın. Bu yerel kurulum yaklaşık 500MB bellek kullanacaktır.
Bu ayarlarla, çevrenizi ya OpenAI’nin gücünden yararlanmak ya da modelleri yerel olarak çalıştırmak için uyarlayabilirsiniz.
Basit Bir Kullanım Örneği: LlamaIndex ve OpenAI ile Web Sayfalarını Sorgulama
Aşağıdaki Python betiği, bir web sayfasını belirli bilgiler için nasıl sorgulayabileceğinizi gösterir:
!pip install llama-index html2text
<p>import os
from llama_index import VectorStoreIndex, SimpleWebPageReader</p>
<p># OpenAI anahtarınızı aşağıdaki satıra girin:
os.environ["OPENAI_API_KEY"] = ""</p>
<p># Sorgulamak istediğiniz URL'yi aşağıdaki satıra girin:
url = "http://www.paulgraham.com/fr.html"</p>
<p># URL'yi belgeler olarak yükleyin (birden fazla belge mümkün):
documents = SimpleWebPageReader(html_to_text=True).load_data([url])</p>
<p># Belgelerden vektör deposu oluşturun:
index = VectorStoreIndex.from_documents(documents)</p>
<p># Sorgulama motorunu oluşturun:
query_engine = index.as_query_engine()</p>
<p># Yüklenen verilere karşı soru sorabilirsiniz:
response = query_engine.query("Paul'un para toplamak için verdiği 3 tavsiyesi nedir?")
print(response)
Paul'un para toplamak için verdiği 3 tavsiyesi: 1. İlk olarak düşük bir sayı ile başlamak. Bu, esneklik sağlar ve uzun vadede daha fazla fon toplama şansını artırır. 2. Mümkünse karlı olma hedefi koymak. Karlılık planı oluşturmak, startup'ı yatırımcılar için daha çekici hale getirir. 3. Değerlendirmeye odaklanmamak. Değerlendirme önemli olmakla birlikte, en kritik faktör değildir. Gerekli fonları toplamak ve iyi yatırımcılar bulmak daha önemlidir.
Bu betikle, bir web sayfasından belirli bilgiler için sorgulama yapan güçlü bir aracı oluşturmuş olursunuz. Bu, LlamaIndex ve OpenAI ile web verilerini sorgulamanın yalnızca bir örneğidir.
LlamaIndex vs Langchain: Hedefinize Göre Seçim
LlamaIndex ve Langchain arasında seçim, projenizin amacına bağlıdır. Akıllı bir arama aracı geliştirmek istiyorsanız, LlamaIndex güçlü bir seçimdir ve veri alma için akıllı bir depolama mekanizması olarak exceller. Öte yandan, ChatGPT gibi bir sistem oluşturmak ve eklenti yetenekleri istiyorsanız, Langchain tercih edeceğiniz araçtır. Langchain, yalnızca ChatGPT ve LlamaIndex örneklerini değil, aynı zamanda çok görevli ajanların oluşturulmasına da olanak tanır. Örneğin, Langchain ile Python kodu çalıştırırken aynı zamanda Google’da arama yapabilen ajanlar oluşturabilirsiniz. Kısacası, LlamaIndex veri işlemede uzmanlaşırken, Langchain daha geniş bir çözüm sunar.

LlamaIndex Logo Artwork created using Midjourney


















