Bu gönderi Aurabase'in Yerel AI panoramasının bir parçasıdır. Her iki çerçeve de bir veritabanına özel bir bağlayıcı sunmaz: Postgres bağlantısı her iki durumda da genel bir SQL sürücüsü (Python tarafında SQLAlchemy) ve standart bir bağlantı dizesi aracılığıyla gerçekleşir. Bu, yönetilen Postgres için olduğu gibi Aurabase için de geçerlidir.
- LangChain: genel LLM düzenleme çerçevesi (zincirler, araçlar, bellek). Aracılar bugün
LangGrapharacılığıyla oluşturuluyor ve SQL, diğerleri arasında bir araç seti olarak değerlendiriliyor. - LlamaIndex: RAG ve yapılandırılmış kaynakları sorgulamak için doğmuş veri çerçevesi. Yerel SQL motoru (
NLSQLTableQueryEngine), aracılarıWorkflowsmotoru aracılığıyla. - CrewAI ve AutoGen, LangChain/LlamaIndex'in alternatifi değildir: bunlar, ikisinden birinin (veya şirket içi Python fonksiyonunun) üstüne yerleştirilen çok aracılı orkestrasyon katmanlarıdır.
- Ne LangChain ne de LlamaIndex tescilli bir Postgres konektörü sunmaz: her ikisi de Aurabase dahil tüm yönetilen Postgres'lerle uyumlu SQLAlchemy kullanır.
- Bu çerçeveler için şu ana kadar Aurabase paket entegrasyonu mevcut değildir. Bağlantı, her proje tarafından sunulan standart Postgres bağlantı dizesi aracılığıyla yapılır.
Farklı ihtiyaçlar için doğmuş iki çerçeve
LangChain ve LlamaIndex, ChatGPT'nin 2022'nin sonunda piyasaya sürülmesinin ardından aynı dönemde ortaya çıktı. Başlangıç noktaları önemli ölçüde farklı. LangChain, bir LLM uygulamasını birleştirilebilir adımlar zinciri olarak modeller: bilgi istemi, model çağrısı, araç, bellek, tümü LCEL veya LangGraphgrafiği aracılığıyla birleştirilir.
LlamaIndex ilk olarak verileri modeller: belgeler, düğümler, dizinler, sorgu motoru. VectorStoreIndex veya SQLDatabase birinci sınıf vatandaşlardır, genel aracıya eklenen araçlar değildir. Her ikisi de açık kaynaktır (MIT lisansı), Python ve TypeScript'te mevcuttur ve bugün büyük ölçüde örtüşen bir kapsamı kapsamaktadır: aracılar, RAG, araç çağrısı, SQL bağlantısı.
Bu yakınlaşma, özellikler listesinden ziyade mimari açısından karşılaştırmayı daha kullanışlı hale getirir: her ikisi de neredeyse aynı şeyi yapabilir. Ne değişir, nasıl değişir.
Paket entegrasyon olmadan herkes Postgres'e nasıl bağlanıyor?
LangChain tarafında, langchain_community.utilities.SQLDatabase modülü bir SQLAlchemy motorunu kapsüller. create_sql_agent aracısı daha sonra bunu bir dizi araç olarak kullanıma sunar: tabloları listelemek, bir şemayı tanımlamak, bir sorguyu yürütmek, yürütmeden önce bir sorguyu kontrol etmek.
LlamaIndex tarafında eşdeğer soyutlama llama_index.core.SQLDatabaseolup yine bir SQLAlchemy motoru üzerine kurulmuştur. NLSQLTableQueryEngine sorgu motoru, doğal dil sorusunu bir SQL sorgusuna çevirir, yürütür ve ardından sonucu yanıt olarak yeniden formüle eder.
Her iki alıntı da Aurabase'e bağlı değildir. Tıpkı Supabase, RDS veya kendi kendine barındırılan bir örnek için olduğu gibi bir SQLAlchemy sürücüsü ve standart bir Postgres bağlantı dizesi yeterlidir.
LangGraph ve İş Akışları: bir aracıyı düzenlemenin iki yolu
LangChain ilk olarak klasik bir aracı döngüsü (AgentExecutor, ReAct modeli) önerdi. Proje o zamandan bu yana aracılarını LangGraphyönünde birleştirdi: burada bir aracı, iki aşama arasında kontrol noktaları ve olası insan müdahalesi ile düğümlerin ve kenarların açık bir grafiği olarak temsil ediliyor.
LlamaIndex, Workflowsile yanıt verir: her adımın yazılan olayları yaydığı ve tükettiği olay odaklı bir düzenleme. Bir SQL veya vektör sorgu motoru, ek bir uyarlama katmanı olmadan doğrudan bir adım olarak bağlanır, çünkü bu motorlar zaten çerçevenin yerel ilkelleridir.
Postgres'i sorgulayan bir aracı için pratik fark şudur: LangGraph, dallar üzerinde ayrıntılı kontrol sağlar ve bir SQL çağrısı etrafında yeniden denemeler yapar. Soru ilk olarak çerçeve tarafından zaten indekslenmiş verilerle ilgili olduğunda LlamaIndex daha az bağlantı kodu gerektirir.
Daha derine inin: Postgres aracısı için işlev çağırma eğitimi
LlamaIndex'in tarihi bir adım önde olduğu yer
LlamaIndex, en başından itibaren bir yüksek lisans eğitimini veri kaynaklarına bağlamak için bir bağlayıcı kataloğu (LlamaHub) ve içeriğin türüne bağlı olarak özel dizinler ile tasarlandı. RAG, sonradan eklenen bir özellik değil, çerçevenin en doğrudan kullanım durumu olmaya devam ediyor.
LangChain, aynı ihtiyacı LangGraph ekosistemine eşit derecede olgun entegrasyonla retrievers ve getirme zincirleri aracılığıyla karşılar. Fark, kapasiteden ziyade iş mantığının nerede yaşadığıyla ilgilidir: LlamaIndex tarafında endekse entegre edilmiş, LangChain tarafında açıkça bir zincirde bir araya getirilmiştir.
Her ikisi de pgvector'un vektör tabanı olarak nasıl kullanılacağını biliyor: LlamaIndex tarafında llama-index-vector-stores-postgres, LangChain tarafında langchain-postgres paketinin PGVector sınıfı. Bir Aurabase projesinde, Postgres kiracı görüntüsünde pgvector 0.8.6 zaten mevcuttur: her iki paket de ayrı bir etkinleştirme adımı olmadan aynı bağlantı dizesiyle ona bağlanır.
Daha Derine Kazın: Postgres/pgvector RAG Boru Hattı Oluşturmak
CrewAI ve AutoGen: Tek bir ajan artık yeterli olmadığında
CrewAI rol başına birkaç aracıyı düzenler: her aracı bir hedef, bir bağlam (backstory) ve Crew olarak gruplandırılmış ve Task sırayla veya bir hiyerarşiye göre yürütülür. LangChain'in bir uzantısı değil, tam teşekküllü bir orkestrasyon çerçevesidir.
Bir Microsoft araştırma projesi olan AutoGen farklı bir yaklaşım benimsiyor: birbirleriyle konuşan aracılar (AssistantAgent, UserProxyAgent, GroupChat), yalıtılmış bir ortamda kod yürütme becerisine sahip. Koordinasyon, LangGraph gibi açık bir durum grafiğine değil, bir konuşmaya benzer.
İkisi de veri bağlantı katmanının yerini almaz. Pratikte Postgres çağrılarını, LangChain veya LlamaIndex ile oluşturulmuş bir SQL aracını veya psycopg2etrafında basit bir Python işlevini okuması gereken bir CrewAI veya AutoGen aracısı. CrewAI ve AutoGen "veritabanının nasıl okunacağı" değil, "kimin neyi, hangi sırayla yaptığı" sorusunu yanıtlıyor.
Postgres veritabanında yerel olarak ne yapılmaz?
create_sql_agent ve NLSQLTableQueryEngine model tarafından oluşturulan sorguyu sağlanan bağlantıya göre yürütür. Varsayılan olarak döndürülen satır sayısını sınırlamaz veya bir yazma isteğini engellemez: gerçek koruma, bir çerçeve seçeneği değil, bağlantı dizesinde kullanılan Postgres rolüdür.
Bu, sunucu tarafında bir soruyu SQL'e çeviren, oluşturulan sorguyu doğrulayan (SQL ayrıştırma, sahte sunucu alanlarının reddedilmesi) ve yürütmeden önce LIMIT'yi sınırlayan Aurabase'in yerel NL2SQL'iyle yapısal bir farktır. Bu aynı tuğla değil: Bir NL2SQL uç noktası, platform tarafından kurulan korkuluklarla tek seferde yanıt verir; Bir LangChain veya LlamaIndex temsilcisi, kendinizi toparlamanızı sağlayacak güvenlik önlemleriyle birlikte birkaç aşamada mantık yürütür.
Uygulamada, iki yaklaşım birbirini dışlamak yerine birbirini tamamlar: son kullanıcıya sunulan basit bir soru için sınırlı bir NL2SQL uç noktası, SQL'in ötesinde çeşitli araçları birleştiren çok adımlı akıl yürütmeye yönelik bir aracı.
LangChain, LlamaIndex, CrewAI, AutoGen tek tabloda
| Ana amaç | Genel LLM orkestrasyonu | Veri çerçevesi / RAG | Rollere göre çoklu aracı orkestrasyonu | Konuşmaya dayalı çoklu aracı orkestrasyonu |
|---|---|---|---|---|
| İlkel ajan | LangGraph (durum grafiği) | İş akışları (olay adımları) | Mürettebat / Görev / Süreç | AsistanAgent / Grup Sohbeti |
| Yerel SQL bağlantısı | SQLVeritabanı + create_sql_agent | SQLVeritabanı + NLSQLTableQueryEngine | Yok (harici araç) | Yok (harici araç) |
| pgvektör desteği | langchain-postgres (PGVector) | lama-index-vektör-mağazalar-postgres | Yerli yok | Yerli yok |
| Yerel çoklu aracı | Hayır (çok düğümlü LangGraph) | Hayır (tek aracılı akış) | Evet | Evet |
| Lisans | MİT | MİT | MİT | MIT (Microsoft Araştırma projesi) |
| LANZİNCİRİ | LLAMANDEX | CREWAI | OTOJEN |
LangChain veya LlamaIndex'i standart bir Postgres arka ucuna takın
Seçilen çerçeve ne olursa olsun üç adım yeterlidir ve platforma özgü herhangi bir bağlayıcıya bağlı değildir.
Üçüncü adım çerçeve seçiminden daha önemlidir. Gerçekten gerekli haklarla sınırlı bir Postgres rolü, onu yürüten aracıya bakılmaksızın kapsamını aşan oluşturulan bir talebe karşı tek güvenilir koruma olmaya devam ediyor. Temsilci tarafında kullanılabilen Aurabase'in yerel LLM sağlayıcılarının (OpenAI, Anthropic, Gemini) yapılandırması için AI belgelerine bakın.
Projenize göre hangisini seçmelisiniz
Her iki çerçeve de Postgres'e bağlı bir aracı için kesinlikle üstün değildir. Projenin başlangıç bağlamı, işlevler listesinden daha belirleyicidir.
- LangChain: Aracının LangGraph aracılığıyla akışın hassas kontrolü ile çeşitli heterojen araçları (SQL, harici API'ler, web araması) birleştirmesi gerekiyorsa ve ekip piyasadaki en geniş entegrasyon ekosistemine değer veriyorsa.
- LlamaIndex: Projenin kalbi RAG veya önceden indekslenmiş verilerin sorgulanmasıysa, kaynak bağlayıcılara ve kullanım senaryosuna doğrudan uyan bir indeks/sorgu modeline güçlü bir ihtiyaç duyulur.
- CrewAI veya AutoGen ek olarak: tek bir aracı artık yeterli olmadığında ve işin, iki veri çerçevesinden birinin veya diğerinin üzerinde, birkaç özel rol arasında dağıtılması gerektiğinde.
İkisi aynı projede bir arada da bulunabilir: LangGraph aracısında bir araç olarak sunulan LlamaIndex sorgu motoru ortak bir modeldir. İki çerçeveyi korumanın, varsayılan olarak benimsenmeden önce kazanca karşı tartılması gereken gerçek bir karmaşıklık maliyeti vardır.