Kurs
LlamaIndex ve LangChain, büyük dil modelleriyle güçlendirilen uygulamalar geliştirmek için tasarlanmış, her birinin kendine özgü güçlü yönleri ve odak alanları olan sağlam çerçevelerdir.
LangChain ve LlamaIndex: Temel Bakış
LlamaIndex arama ve getirme görevlerinde üstünlük sağlar. Veri indeksleme ve sorgulama için güçlü bir araçtır ve gelişmiş arama gerektiren projeler için harika bir seçimdir. LlamaIndex, büyük veri kümelerini işleyerek hızlı ve doğru bilgiye erişim sağlar.
LangChain, geniş yelpazede NLP uygulamaları geliştirmek için modüler ve esnek bir araç seti sunan bir çerçevedir. Zincirler oluşturmak için standart bir arayüz, çeşitli araçlarla kapsamlı entegrasyonlar ve yaygın uygulama senaryoları için uçtan uca zincirler sunar.
Şimdi her birine biraz daha yakından bakalım. Daha fazlasını öğrenmek için kapsamlı LlamaIndex eğitimimizi ve LangChain eğitimimizi de okuyabilirsiniz.
LangChain’in Temel Bileşenleri
LangChain şu yapı üzerine tasarlanmıştır:
İstemler (Prompts)
İstemler, dil modeline yanıtlarını yönlendirmek için verilen talimatlardır. LangChain, istemleri oluşturmak ve yönetmek için standartlaştırılmış bir arayüz sağlar; bu da bunları farklı model ve uygulamalarda özelleştirip yeniden kullanmayı kolaylaştırır. DataCamp’in uygulamalı çalışmasında GPT ve LangChain ile prompt mühendisliği hakkında daha fazla bilgi edinebilirsiniz.
Modeller
LangChain, çeşitli büyük dil modelleri (LLM) ile etkileşim için birleştirilmiş bir arayüz sunar. Buna OpenAI (örn. GPT-4o), Anthropic (örn. Claude) ve Cohere gibi sağlayıcıların modelleri dahildir. Çerçeve, modeller arasındaki farklılıkları soyutlayarak farklı modeller arasında geçişi basitleştirir ve sorunsuz entegrasyon sağlar.
Bellek
LangChain’in öne çıkan özelliği, LLM’ler için bellek yönetimi yetenekleridir. Her sorguyu bağımsız işleyen tipik LLM’lerin aksine LangChain, önceki etkileşimlerden bilgileri tutarak bağlama duyarlı ve tutarlı sohbetler sağlar.
Çeşitli bellek uygulamaları sunar; tüm konuşma geçmişini depolayabilir ve eskileri özetleyip yenileri koruyarak son geçmişi sürdürebilir.
Zincirler
Zincirler, bir adımın çıktısının bir sonraki adımın girdisi olarak kullanıldığı işlem dizileridir. LangChain, zincirler oluşturmak ve yönetmek için sağlam bir arayüz ve çok sayıda yeniden kullanılabilir bileşen sağlar. Bu modüler yaklaşım, birden fazla araç ve LLM çağrısını entegre eden karmaşık iş akışlarının oluşturulmasına olanak tanır.
Aracılar (Agents)
LangChain’deki aracılar, verilen girdiye göre hangi eylemlerin gerçekleştirileceğini belirlemek ve bunları yürütmek üzere tasarlanmıştır. Eylem sırasına karar vermek için bir LLM kullanır ve görevleri tamamlamak için çeşitli araçlardan yararlanırlar. LangChain, belirli uygulama ihtiyaçlarına uyacak şekilde kullanılabilecek veya özelleştirilebilecek çeşitli hazır aracı içerir.
LangChain’in parladığı alanlar
- Sohbet robotları ve otomatik müşteri desteği gibi, konuşmanın bağlamını korumanın ilgili yanıtlar sunmak için kritik olduğu uygulamalar.
- Metin üretme, dil çevirisi veya sorguları yanıtlama gibi görevleri yürütmesi için LLM’leri yönlendirme.
- LLM’nin zengin bir bilgi tabanından yararlanma becerisini artıran, farklı kaynak ve biçimlerden çeşitli belgelere erişim sağlayan belge yükleyiciler.
LangChain, metinlerin anlamsal anlamını yakalayan gömlemeler oluşturmak için metin yerleştirme (embedding) modelleri kullanır; bu da içerik keşfini ve geri getirmeyi iyileştirir. Gömlemeler için depolama ve geri getirme dahil 50’den fazla farklı depolama seçeneğini destekler.
LangChain aracılar ve araç setleri
LangChain’de bir aracı, doğal dil talimatlarıyla hareket eder ve sorguları yanıtlamak için araçlar kullanabilir. Kullanıcı girdisine bağlı olarak, aracılar hangi eylemleri hangi sırayla yapacaklarına karar verir. Eylemler, araçların (ör. arama motoru veya hesap makinesi) kullanılmasını, çıktılarının işlenmesini veya kullanıcılara yanıt döndürülmesini içerebilir.
Aracılar, kullanıcı girdisine bağlı olarak zincirleri dinamik şekilde çağırabilir.
LangChain Entegrasyonları: LangSmith ve LangServe
LangSmith
LangSmith, LLM uygulamalarının test ve optimizasyonu için bir değerlendirici paketidir. Eğitimimizle LangSmith’te LLM’lerin nasıl hata ayıklanıp test edileceğine derinlemesine bakabilirsiniz.
LangSmith paketi, LLM performansının hem nitel hem nicel yönlerini değerlendirmek için çeşitli değerlendiriciler ve araçlar içerir.
Veri kümeleri, LangSmith’in değerlendirme sürecinin merkezinde yer alır ve sistemin performansı test etmek ve kıyaslamak için kullandığı örnek koleksiyonlarıdır.
Veri kümeleri el ile oluşturulabilir, kullanıcı geri bildiriminden toplanabilir veya LLM’ler aracılığıyla üretilebilir; deneyler yürütmenin ve zaman içindeki performansı izlemenin temelini oluştururlar.
Değerlendiriciler belirli performans metriklerini ölçer:
- Tahmin edilen dizeleri referans çıktılarla karşılaştıran dize değerlendiricileri ve bir aracının gerçekleştirdiği eylemlerin tüm sırasını inceleyen yörünge değerlendiricileri.
- Önceden tanımlanmış ölçütlere (ilgili olma, tutarlılık, faydalılık gibi) göre çıktıları puanlamaya LLM’in kendisinin yardımcı olduğu “hakem olarak LLM” değerlendiricileri.
LangSmith değerlendirmesi çevrimdışı ve çevrimiçi yapılabilir: Çevrimdışı değerlendirmeler, dağıtımdan önce referans veri kümeleri üzerinde gerçekleştirilebilirken, çevrimiçi değerlendirmeler canlı uygulamaları sürekli izleyerek performans standartlarını karşıladıklarından emin olur ve sapma veya gerileme gibi sorunları tespit eder.
LangSmith, prototipten üretime geçişte faydalıdır; uygulamaların gerçek dünya koşullarında iyi performans göstermesini sağlar.
LangServe
LangServe, LangChain uygulamalarının dağıtım aşamasında şema çıkarımını otomatikleştirerek, API uç noktaları ve gerçek zamanlı izleme sağlayarak kullanılır.
LangServe herhangi bir zinciri şu özelliklerle bir REST API’ye dönüştürebilir:
- Otomatik şema çıkarımı, girdi ve çıktı şemalarını elle tanımlama ihtiyacını ortadan kaldırır
/invoke,/batchve/streamgibi ön yapılandırılmış API uç noktaları birden çok isteği eşzamanlı olarak işleyebilir.
İzleme
LangServe, gerçek zamanlı izleme yetenekleri için LangSmith izleme ile entegre edilebilir:
- Performans metriklerini izleme, sorunları ayıklama ve uygulamanın davranışına ilişkin içgörüler elde etme.
- Uygulamaları yüksek bir performans standardında tutma.
LangServe, hem teknik hem teknik olmayan kullanıcıların uygulamayla etkileşime geçip test edebilecekleri bir oyun alanı sunar: akışlı çıktıları destekler, ara adımları kaydeder ve uygulamaları ince ayarlamak için yapılandırılabilir seçenekler sunar. LangServe ayrıca API belgelerini otomatik olarak üretir.
LangServe ile dağıtım, GitHub üzerinden tek tıkla yapılabilir ve Google Cloud ile Replit gibi çeşitli barındırma platformlarını destekler.
LlamaIndex’in Temel Bileşenleri
LlamaIndex, harici bilgi kaynakları, veritabanları ve indeksleri bellek amaçlı sorgu motorları olarak kullanarak sisteme RAG işlevselliği kazandırır.
LlamaIndex’in Tipik İş Akışı
İndeksleme aşaması
Bu aşamada, özel verileriniz verimli bir şekilde aranabilir bir vektör indeksine dönüştürülür. LlamaIndex, yapılandırılmamış metin belgeleri, yapılandırılmış veritabanı kayıtları ve bilgi grafikleri dahil çeşitli veri türlerini işleyebilir.
Veriler, anlamsal anlamını yakalayan sayısal gömlemelere dönüştürülür; bu da daha sonra hızlı benzerlik aramalarını mümkün kılar. Bu aşama, ilgili tüm bilgilerin indekslenmesini ve hızlıca getirilmeye hazır olmasını sağlar.
Depolama
Verileri yükleyip indeksledikten sonra, yeniden indeksleme zaman ve maliyetinden kaçınmak için bunları depolamak istersiniz. Varsayılan olarak indekslenen veriler yalnızca bellekte tutulur, ancak gelecekte kullanım için kalıcı hale getirmenin yolları vardır.
En basit yöntem, tüm verileri belirtilen bir konuma diske yazan .persist() yöntemini kullanmaktır. Örneğin, bir indeks oluşturduktan sonra verileri bir dizine kaydetmek için .persist() yöntemini kullanabilirsiniz.
Kalıcı verileri yeniden yüklemek için, kaydedilen dizinden depolama bağlamını yeniden oluşturur ve ardından indeksi bu bağlamı kullanarak yüklersiniz. Bu şekilde, depolanmış indekse hızla kaldığınız yerden devam ederek zaman ve hesaplama kaynakları tasarrufu sağlarsınız.
Bunu nasıl yapacağınızı kapsamlı LlamaIndex eğitimimizde öğrenebilirsiniz.
Vektör Depoları
Vektör depoları, indeksleme sürecinde oluşturulan gömlemeleri depolamak için kullanışlıdır.
Gömlemeler
LlamaIndex bu gömlemeleri üretmek için varsayılan olarak OpenAI’den text-embedding-ada-002’yi kullanır. Kullanılan LLM’e bağlı olarak, verimlilik ve hesaplama maliyeti açısından farklı gömlemeler tercih edilebilir.
VectorStoreIndex, tüm metni LLM’in bir API’sini kullanarak gömlemelere dönüştürür. Sorgulama sırasında, girilen sorgu da bir gömlemeye dönüştürülür ve sıralanır. İndeks, en benzer k gömlemeyi metin parçaları olarak döndürür.
“Top-k anlamsal getirme” olarak bilinen bir yöntem, en ilgili verilerin geri getirilmesi için kullanılır.
Gömlemeler zaten oluşturulmuş ve depolanmışsa, belgeleri yeniden yüklemeye veya indeksi yeniden oluşturmaya gerek kalmadan bunları doğrudan vektör deposundan yükleyebilirsiniz.
Özet indeksi, metin belgelerinden özet üretmeye en uygun, daha basit bir indeksleme biçimidir. Tüm belgeleri depolar ve sorgu motoruna geri döndürür.
Sorgu
Sorgu aşamasında, bir kullanıcı sistemi sorguladığında, sorgunun anlamsal benzerliğine göre vektör indeksinden en ilgili bilgi parçaları getirilir. Getirilen parçalar, özgün sorguyla birlikte büyük dil modeline iletilir ve nihai yanıt üretilir.
Getirme
Sistem, depolanmış indekslerden en ilgili bilgileri geri getirir ve bunu LLM’e sağlar; LLM de güncel ve bağlama uygun bilgilerle yanıt verir.
Son işleme
Bu adım, getirmenin ardından gelir. Bu aşamada, getirilen belge segmentleri veya düğümler yeniden sıralanabilir, dönüştürülebilir veya filtrelenebilir. Düğümler, verinin uygunluk ve doğruluğunu iyileştiren belirli meta veriler veya anahtar kelimeler içerir.
Yanıt sentezi
Yanıt sentezi, sorgu, en ilgili veriler ve başlangıç isteminin birleştirilerek LLM’e gönderildiği ve yanıtın üretildiği son aşamadır.
LlamaHub
LlamaHub, çoklu veri kaynağını uygulama iş akışına entegre etmek veya farklı biçim ve depolardan veri alımı için kullanılabilecek çeşitli veri yükleyiciler içerir.
Örneğin, Google Docs Reader başlatılabilir ve Google Docs’tan veri yüklemek için kullanılabilir. Aynı model, LlamaHub içindeki diğer bağlayıcılar için de geçerlidir.
Yerleşik bağlayıcılardan biri olan SimpleDirectoryReader, markdown dosyaları (.md), PDF’ler, görüntüler (.jpg, .png), Word belgeleri (.docx) ve hatta ses ve video dosyaları dahil geniş bir dosya türü yelpazesini destekler. Bağlayıcı, LlamaIndex’in bir parçası olarak doğrudan kullanılabilir ve belirtilen bir dizinden veri yüklemek için kullanılabilir.
LangChain ve LlamaIndex: Karşılaştırmalı Analiz
LlamaIndex öncelikle arama ve getirme görevleri için tasarlanmıştır. Büyük veri kümelerini indekslemede ve ilgili bilgileri hızlı ve doğru şekilde getirmede üstündür. LangChain ise sohbet botları, içerik üretim araçları ve karmaşık iş akışı otomasyon sistemleri dahil çeşitli NLP uygulamaları oluşturmak için modüler ve uyarlanabilir bir çerçeve sunar.
Veri indeksleme
LlamaIndex, yapılandırılmamış metin belgeleri ve yapılandırılmış veritabanı kayıtları gibi çeşitli veri türlerini anlamsal anlamlarını yakalayan sayısal gömlemelere dönüştürür.
LangChain, birden çok aracı ve LLM çağrısını entegre eden karmaşık işlem zincirleriyle, veri indekslemeye modüler ve özelleştirilebilir bir yaklaşım sunar.
Getirme algoritmaları
LlamaIndex, sorgu gerçekleştirmek için belgeleri anlamsal benzerliklerine göre sıralayan algoritmalar kullanarak getirme için optimize edilmiştir.
LangChain, bağlama duyarlı çıktılar üretmek üzere getirme algoritmalarını LLM’lerle entegre eder. LangChain, kullanıcı girdisinin bağlamına göre ilgili bilgiyi dinamik şekilde getirip işleyebilir; bu da sohbet botları gibi etkileşimli uygulamalar için kullanışlıdır.
Özelleştirme
LlamaIndex, indeksleme ve getirme görevlerine odaklanan sınırlı özelleştirme sunar. Tasarımı bu spesifik işlevler için optimize edilmiştir ve yüksek doğruluk sağlar. Buna karşın LangChain, kapsamlı özelleştirme seçenekleri sunar. Özel gereksinimleri olan uygulamalar için son derece uyarlanmış karmaşık iş akışlarının oluşturulmasını destekler.
Bağlam koruma
LlamaIndex, basit arama ve getirme görevlerine uygun temel bağlam koruma yetenekleri sağlar. Sorguların bağlamını bir ölçüde yönetebilir ancak uzun etkileşimleri sürdürmek üzere tasarlanmamıştır.
LangChain, önceki etkileşimlerden bilgi tutmanın ve uzun sohbetlerde tutarlı, bağlama uygun yanıtlar üretmenin kritik olduğu uygulamalarda bağlam koruma konusunda üstünlük sağlar.
Kullanım alanları
LlamaIndex, doğru bilgi getirmenin kritik olduğu dahili arama sistemleri, bilgi yönetimi ve kurumsal çözümler için idealdir.
LangChain, müşteri desteği, kod dokümantasyonu ve çeşitli NLP görevleri gibi karmaşık etkileşim ve içerik üretimi gerektiren uygulamalar için daha uygundur.
Performans
LlamaIndex hız ve doğruluk için optimize edilmiştir; ilgili bilgilerin hızlı şekilde getirilmesini sağlar. Optimizasyon, büyük veri hacimlerini ele almak ve hızlı yanıtlar vermek için kritiktir.
LangChain, modüler mimarisi içinde çalışabilen karmaşık veri yapılarının ele alınmasında etkilidir.
Yaşam döngüsü yönetimi
LlamaIndex, yaşam döngüsü yönetimini kolaylaştırmak için hata ayıklama ve izleme araçlarıyla entegre olur. Entegrasyon, sorun giderme için içgörüler ve araçlar sağlayarak uygulamaların performans ve güvenilirliğinin izlenmesine yardımcı olur.
LangChain, değerlendirme paketi LangSmith ile LLM uygulamalarını test etmek, hata ayıklamak ve optimize etmek için araçlar sunar; böylece uygulamaların gerçek dünya koşullarında iyi performans göstermesini sağlar.
Sonuç
Her iki çerçeve de harici araç ve hizmetlerle entegrasyonu desteklese de, birincil odak alanları onları birbirinden ayırır.
LangChain son derece modüler ve esnektir; zincirler, istemler, modeller, bellek ve aracılar kullanarak karmaşık işlem dizileri oluşturma ve yönetmeye odaklanır.
LangChain, sohbet botları ve otomatik müşteri destek sistemleri gibi, karmaşık etkileşim kalıpları ve bağlam koruması gerektiren uygulamalar için idealdir.
LlamaIndex, anlamsal ilgililiğe dayalı hızlı ve hassas belge getirmesi gereken sistemler için tercih edilen araçtır.
LangChain’in LangSmith (değerlendirme) ve LangServe (dağıtım) gibi entegrasyonları, dağıtım süreçlerini ve optimizasyonu kolaylaştıran araçlar sunarak geliştirme yaşam döngüsünü iyileştirir.
Öte yandan LlamaIndex, RAG tabanlı uygulamalar için bellek amaçlı sorgu motorları olarak harici bilgi kaynakları ve veritabanlarını entegre eder. LlamaHub, çeşitli veri kaynaklarının entegrasyonu için veri yükleyicilerle LlamaIndex’in yeteneklerini genişletir.
- LlamaIndex’i seçin eğer birincil ihtiyacınız, büyük veri hacimlerini işleyen ve hızlı erişim gerektiren uygulamalar için veri getirme ve arama yetenekleriyse.
- LangChain’i seçin eğer önceliğin karmaşık etkileşim ve bağlam koruması olan, karmaşık iş akışlarını destekleyecek esnek bir çerçeveye ihtiyacınız varsa.
Başlıca farkları özetlemek için karşılaştırmalı bir tablo aşağıdadır:
|
Özellik |
LlamaIndex |
LangChain |
|
Birincil Odak |
Arama ve getirme |
Esnek, LLM destekli uygulama geliştirme |
|
Veri İndeksleme |
Yüksek verimli |
Modüler ve özelleştirilebilir |
|
Getirme Algoritmaları |
Gelişmiş ve optimize |
Bağlama duyarlı çıktılar için LLM’lerle entegre |
|
Kullanıcı Arayüzü |
Basit ve kullanıcı dostu |
Kapsamlı ve uyarlanabilir |
|
Entegrasyon |
Çoklu veri kaynağı, sorunsuz platform entegrasyonu |
Çeşitli yapay zeka teknolojileri ve hizmetlerini destekler |
|
Özelleştirme |
Sınırlı, indeksleme ve getirmeye odaklı |
Kapsamlı, karmaşık iş akışlarını destekler |
|
Bağlam Koruma |
Temel |
Gelişmiş, sohbet botları ve uzun etkileşimler için kritik |
|
Kullanım Alanları |
Dahili arama, bilgi yönetimi, kurumsal çözümler |
Müşteri desteği, içerik üretimi, kod dokümantasyonu |
|
Performans |
Hız ve doğruluk için optimize |
Karmaşık veri yapılarının ele alınmasında verimli |
|
Yaşam Döngüsü Yönetimi |
Hata ayıklama ve izleme araçlarıyla entegre |
Kapsamlı değerlendirme paketi (LangSmith) |
Her iki çerçeve de güçlü yetenekler sunar; aralarındaki seçim, özel proje ihtiyaçlarınıza ve hedeflerinize dayanmalıdır.
Bazı projelerde, LlamaIndex ve LangChain’in güçlü yönlerini birleştirmek en iyi sonuçları sağlayabilir.
Bu araçlar hakkında daha fazla bilgi edinmek isterseniz, çeşitli kaynaklar mevcuttur:
Vektör arama ve bilgi erişimi alanında uzmanlaşmış bir ML mühendisi olmuş dilbilimci ve yazarım. NLP araştırmaları ile RAG sistemleri, LLM’ler, transformer’lar ve genel olarak derin öğrenme/sinir ağları geliştirme konusunda deneyimliyim. Python ve Rust ile kodlama; bilimsel makaleler, dokümantasyon, teknik raporlar (white paper), blog yazıları, eğitimler ve kurslar dahil olmak üzere teknik ve eğitsel içerik yazmaktan büyük keyif alıyorum. Çerçeveler, modeller ve araçlarla araştırmalar yürütüyor, deneyler yapıyor ve yüksek kaliteli, ilgi çekici içerikler üretiyorum.

