यह पोस्ट ऑराबेस के नेटिव AI पैनोरमा का हिस्सा है। Neither framework offers a proprietary connector to a database: the connection to Postgres goes, in both cases, through a generic SQL driver (SQLAlchemy on the Python side) and a standard connection string. यह किसी भी प्रबंधित पोस्टग्रेज़ की तरह ऑराबेस के लिए भी सत्य है।
- लैंगचेन: सामान्य एलएलएम ऑर्केस्ट्रेशन ढांचा (चेन, उपकरण, मेमोरी)। एजेंट आज
LangGraphके माध्यम से बनाए जाते हैं, और SQL को दूसरों के बीच एक टूलकिट के रूप में माना जाता है। - LlamaIndex: RAG और क्वेरी संरचित स्रोतों के लिए जन्मा डेटा फ्रेमवर्क। मूल SQL इंजन (
NLSQLTableQueryEngine), इसकेWorkflowsइंजन के माध्यम से एजेंट। - CrewAI और AutoGen LangChain/LlamaIndex के विकल्प नहीं हैं: वे मल्टी-एजेंट ऑर्केस्ट्रेशन परतें हैं, जो दो में से एक (या एक इन-हाउस पायथन फ़ंक्शन) के शीर्ष पर रखी गई हैं।
- न तो लैंगचेन और न ही लामाइंडेक्स मालिकाना पोस्टग्रेज कनेक्टर प्रदान करता है: दोनों SQLAlchemy का उपयोग करते हैं, जो किसी भी प्रबंधित पोस्टग्रेज के साथ संगत है, जिसमें ऑराबेस भी शामिल है।
- आज तक इन ढाँचों के लिए कोई ऑराबेस पैकेज्ड एकीकरण मौजूद नहीं है। कनेक्शन प्रत्येक प्रोजेक्ट द्वारा प्रदर्शित मानक पोस्टग्रेज़ कनेक्शन स्ट्रिंग के माध्यम से होता है।
विभिन्न आवश्यकताओं के लिए जन्मी दो रूपरेखाएँ
2022 के अंत में चैटजीपीटी की रिलीज के मद्देनजर लैंगचेन और लामाइंडेक्स उसी अवधि के दौरान सामने आए। उनका शुरुआती बिंदु स्पष्ट रूप से भिन्न है। लैंगचेन एक एलएलएम एप्लिकेशन को कंपोज़ेबल चरणों की एक श्रृंखला के रूप में मॉडल करता है: प्रॉम्प्ट, मॉडल कॉल, टूल, मेमोरी, सभी को LCEL या LangGraphग्राफ़ के माध्यम से इकट्ठा किया जाता है।
LlamaIndex पहला मॉडल डेटा: दस्तावेज़, नोड्स, इंडेक्स, क्वेरी इंजन। VectorStoreIndex या SQLDatabase प्रथम श्रेणी के नागरिक हैं, किसी सामान्य एजेंट में जोड़े गए उपकरण नहीं। दोनों ओपन सोर्स (एमआईटी लाइसेंस) हैं, जो पायथन और टाइपस्क्रिप्ट में उपलब्ध हैं, और आज बड़े पैमाने पर ओवरलैपिंग स्कोप को कवर करते हैं: एजेंट, आरएजी, टूल कॉल, एसक्यूएल कनेक्शन।
यह अभिसरण सुविधाओं की सूची की तुलना में वास्तुकला पर तुलना को अधिक उपयोगी बनाता है: दोनों, लगभग, एक ही काम कर सकते हैं। क्या बदलता है कैसे.
पैकेज्ड इंटीग्रेशन के बिना हर कोई पोस्टग्रेज़ में कैसे प्लग इन करता है
लैंगचेन पक्ष पर, langchain_community.utilities.SQLDatabase मॉड्यूल एक SQLAlchemy इंजन को इनकैप्सुलेट करता है। create_sql_agent एजेंट फिर इसे टूल के एक सेट के रूप में प्रदर्शित करता है: तालिकाओं की सूची बनाना, एक स्कीमा का वर्णन करना, एक क्वेरी निष्पादित करना, निष्पादन से पहले एक क्वेरी की जांच करना।
LlamaIndex की ओर, समतुल्य अमूर्तता llama_index.core.SQLDatabaseहै, जिसे SQLAlchemy इंजन पर भी बनाया गया है। NLSQLTableQueryEngine क्वेरी इंजन एक प्राकृतिक भाषा प्रश्न को SQL क्वेरी में अनुवादित करता है, इसे निष्पादित करता है, और फिर परिणाम को प्रतिक्रिया के रूप में पुन: तैयार करता है।
कोई भी अर्क ऑराबेस पर निर्भर नहीं करता है। एक SQLAlchemy ड्राइवर और एक मानक Postgres कनेक्शन स्ट्रिंग पर्याप्त हैं, जैसे कि Supabase, RDS, या स्वयं-होस्टेड इंस्टेंस के लिए।
लैंगग्राफ बनाम वर्कफ़्लोज़: एक एजेंट को व्यवस्थित करने के दो तरीके
लैंगचेन ने सबसे पहले एक क्लासिक एजेंट लूप (AgentExecutor, रिएक्ट पैटर्न) प्रस्तावित किया। The project has since converged its agents towards LangGraph: an agent is represented there as an explicit graph of nodes and edges, with checkpointing and possible human intervention between two stages.
LlamaIndex अपने Workflowsके साथ प्रतिक्रिया करता है: एक इवेंट-संचालित ऑर्केस्ट्रेशन, जहां प्रत्येक चरण टाइप किए गए इवेंट को उत्सर्जित और उपभोग करता है। An SQL or vector query engine plugs in directly as a step, without an additional adaptation layer, since these engines are already native primitives of the framework.
पोस्टग्रेज से पूछताछ करने वाले एक एजेंट के लिए, व्यावहारिक अंतर यह है: लैंगग्राफ एक एसक्यूएल कॉल के आसपास शाखाओं और पुनर्प्रयासों पर बढ़िया नियंत्रण देता है। जब प्रश्न पहले फ्रेमवर्क द्वारा पहले से ही अनुक्रमित डेटा से संबंधित होता है तो LlamaIndex को कम लिंकिंग कोड की आवश्यकता होती है।
गहराई में जाएं: पोस्टग्रेज एजेंट के लिए फ़ंक्शन कॉलिंग ट्यूटोरियल
जहां LlamaIndex एक ऐतिहासिक कदम आगे है
LlamaIndex को शुरू से ही एलएलएम को डेटा स्रोतों से जोड़ने के लिए डिज़ाइन किया गया था, जिसमें सामग्री के प्रकार के आधार पर कनेक्टर्स (LlamaHub) और विशेष इंडेक्स की एक सूची शामिल थी। RAG फ्रेमवर्क का सबसे प्रत्यक्ष उपयोग का मामला बना हुआ है, तथ्य के बाद जोड़ा गया कोई फीचर नहीं।
लैंगचेन अपने retrievers और फ़ेच चेन के माध्यम से लैंगग्राफ पारिस्थितिकी तंत्र में समान रूप से परिपक्व एकीकरण के साथ समान आवश्यकता को पूरा करता है। व्यापार तर्क जहां रहता है, उसकी तुलना में क्षमता के बारे में अंतर कम है: लामाइंडेक्स पक्ष पर सूचकांक में एकीकृत, लैंगचेन पक्ष पर एक श्रृंखला में स्पष्ट रूप से इकट्ठा किया गया।
दोनों जानते हैं कि वेक्टर आधार के रूप में pgvector का उपयोग कैसे किया जाता है: LlamaIndex पक्ष पर llama-index-vector-stores-postgres, लैंगचेन पक्ष पर langchain-postgres पैकेज का PGVector वर्ग। ऑराबेस प्रोजेक्ट पर, पीजीवेक्टर 0.8.6 पहले से ही पोस्टग्रेज किरायेदार छवि में मौजूद है: दोनों पैकेज एक अलग सक्रियण चरण के बिना, एक ही कनेक्शन स्ट्रिंग के साथ इससे जुड़ते हैं।
गहराई से खुदाई करें: एक पोस्टग्रेज/पीजीवेक्टर RAG पाइपलाइन का निर्माण
CrewAI और AutoGen: जब एक भी एजेंट पर्याप्त नहीं रह जाता है
CrewAI orchestrates several agents per role: each agent receives an objective, a context (backstory) and tools, grouped into Crew with Task executed in sequence or according to a hierarchy. यह एक पूर्ण ऑर्केस्ट्रेशन ढांचा है, लैंगचेन का विस्तार नहीं।
AutoGen, एक Microsoft अनुसंधान परियोजना, एक अलग दृष्टिकोण अपनाती है: एजेंट जो एक दूसरे से बात करते हैं (AssistantAgent, UserProxyAgent, GroupChat), एक अलग वातावरण में कोड निष्पादित करने की क्षमता के साथ। समन्वय एक वार्तालाप की तरह दिखता है, लैंगग्राफ़ की तरह एक स्पष्ट स्थिति ग्राफ़ नहीं।
Neither replaces the data connection layer. A CrewAI or AutoGen agent that needs to read Postgres calls, in practice, an SQL tool built with LangChain or LlamaIndex, or a simple Python function around psycopg2. CrewAI और AutoGen का उत्तर "कौन क्या करता है और किस क्रम में करता है", न कि "डेटाबेस को कैसे पढ़ें"।
पोस्टग्रेज़ डेटाबेस पर मूल रूप से क्या होता है
create_sql_agent और NLSQLTableQueryEngine दिए गए कनेक्शन के विरुद्ध मॉडल द्वारा उत्पन्न क्वेरी को निष्पादित करते हैं। न तो डिफ़ॉल्ट रूप से लौटाई गई पंक्तियों की संख्या को सीमित करता है, न ही लिखने के अनुरोध को रोकता है: वास्तविक रेलिंग कनेक्शन स्ट्रिंग में उपयोग की जाने वाली पोस्टग्रेज भूमिका है, न कि कोई फ्रेमवर्क विकल्प।
यह ऑराबेस के मूल NL2SQL के साथ एक संरचनात्मक अंतर है, जो सर्वर साइड पर SQL में एक प्रश्न का अनुवाद करता है, उत्पन्न क्वेरी (SQL पार्सिंग, स्पूफ्ड सर्वर फ़ील्ड की अस्वीकृति) को मान्य करता है और निष्पादन से पहले LIMIT को सीमित करता है। यह वही ईंट नहीं है: एक NL2SQL समापन बिंदु एक मोड़ में प्रतिक्रिया करता है, जिसमें प्लेटफ़ॉर्म द्वारा रेलिंग स्थापित की जाती है; एक लैंगचेन या लामाइंडेक्स एजेंट स्वयं को इकट्ठा करने के लिए सुरक्षा उपायों के साथ कई चरणों में कारण बनता है।
व्यवहार में, दोनों दृष्टिकोण एक-दूसरे को बाहर करने के बजाय एक-दूसरे के पूरक हैं: अंतिम उपयोगकर्ता के सामने आने वाले एक सरल प्रश्न के लिए एक सीमित एनएल2एसक्यूएल समापन बिंदु, बहु-चरणीय तर्क के लिए एक एजेंट जो एसक्यूएल से परे कई उपकरणों को जोड़ता है।
एक तालिका में लैंगचेन, लामाइंडेक्स, क्रूएआई, ऑटोजेन
| मुख्य उद्देश्य | जनरलिस्ट एलएलएम ऑर्केस्ट्रेशन | डेटा फ्रेमवर्क/आरएजी | भूमिकाओं के अनुसार बहु-एजेंट ऑर्केस्ट्रेशन | संवादी बहु-एजेंट ऑर्केस्ट्रेशन |
|---|---|---|---|---|
| आदिम एजेंट | लैंगग्राफ (राज्य ग्राफ) | वर्कफ़्लोज़ (घटना चरण) | कर्मीदल/कार्य/प्रक्रिया | असिस्टेंटएजेंट/ग्रुपचैट |
| मूल SQL कनेक्शन | SQLडेटाबेस + create_sql_agent | SQLडेटाबेस + NLSQLTableQueryEngine | कोई नहीं (बाहरी उपकरण) | कोई नहीं (बाहरी उपकरण) |
| पीजीवेक्टर समर्थन | लैंगचैन-पोस्टग्रेज (पीजीवेक्टर) | लामा-इंडेक्स-वेक्टर-स्टोर्स-पोस्टग्रेज | कोई मूलनिवासी नहीं | कोई मूलनिवासी नहीं |
| मूल बहु-एजेंट | नहीं (मल्टी-नोड लैंगग्राफ) | नहीं (एकल-एजेंट प्रवाह) | हाँ | हाँ |
| लाइसेंस | एमआईटी | एमआईटी | एमआईटी | एमआईटी (माइक्रोसॉफ्ट रिसर्च प्रोजेक्ट) |
| लैंगचेन | LLAMAINDEX | क्रू | ऑटोजेन |
लैंगचेन या लामाइंडेक्स को मानक पोस्टग्रेज बैकएंड में प्लग करें
चुने गए ढाँचे की परवाह किए बिना, तीन चरण पर्याप्त हैं, और वे किसी प्लेटफ़ॉर्म-विशिष्ट कनेक्टर पर निर्भर नहीं हैं।
तीसरा चरण रूपरेखा के चुनाव से अधिक मायने रखता है। वास्तव में आवश्यक अधिकारों तक सीमित एक पोस्टग्रेज भूमिका उत्पन्न अनुरोध के खिलाफ एकमात्र विश्वसनीय सुरक्षा बनी रहती है जो इसके दायरे से अधिक है, भले ही एजेंट इसे निष्पादित कर रहा हो। एजेंट पक्ष पर उपयोग करने योग्य ऑराबेस के मूल एलएलएम प्रदाताओं (ओपनएआई, एंथ्रोपिक, जेमिनी) के कॉन्फ़िगरेशन के लिए AI दस्तावेज़ देखें।
अपने प्रोजेक्ट के अनुसार किसे चुनें
पोस्टग्रेज से जुड़े किसी एजेंट के लिए कोई भी ढांचा पूरी तरह से बेहतर नहीं है। परियोजना का प्रारंभिक संदर्भ कार्यात्मकताओं की सूची से अधिक निर्णायक है।
- लैंगचेन: यदि एजेंट को लैंगग्राफ के माध्यम से प्रवाह के अच्छे नियंत्रण के साथ कई विषम उपकरण (एसक्यूएल, बाहरी एपीआई, वेब खोज) को संयोजित करना होगा, और यदि टीम बाजार पर व्यापक एकीकरण पारिस्थितिकी तंत्र को महत्व देती है।
- LlamaIndex: यदि प्रोजेक्ट का केंद्र RAG या पहले से अनुक्रमित डेटा की क्वेरी है, तो स्रोत कनेक्टर्स और एक इंडेक्स/क्वेरी मॉडल की सख्त आवश्यकता है जो सीधे उपयोग के मामले में फिट बैठता है।
- CrewAI या AutoGen इसके अलावा: जैसे ही एक एजेंट पर्याप्त नहीं रह जाता है और काम को दो डेटा फ्रेमवर्क में से एक या दूसरे से ऊपर, कई विशेष भूमिकाओं के बीच वितरित किया जाना चाहिए।
दोनों एक ही परियोजना में एक साथ रह सकते हैं: लैंगग्राफ एजेंट में एक उपकरण के रूप में प्रदर्शित एक LlamaIndex क्वेरी इंजन एक सामान्य पैटर्न है। दो ढाँचों को बनाए रखना एक वास्तविक जटिलता लागत है, जिसे डिफ़ॉल्ट रूप से अपनाने से पहले लाभ के विरुद्ध तौला जाना चाहिए।