Ten post jest częścią panoramy Native AI firmy Aurabase. Żaden framework nie oferuje własnego łącznika z bazą danych: połączenie z Postgres odbywa się w obu przypadkach poprzez ogólny sterownik SQL (SQLAlchemy po stronie Pythona) i standardowy ciąg połączenia. Dotyczy to Aurabase, jak każdego zarządzanego Postgres.
- LangChain: ogólna struktura orkiestracji LLM (łańcuchy, narzędzia, pamięć). Agencje są obecnie budowane za pośrednictwem
LangGraph, a język SQL jest traktowany między innymi jako jeden z zestawów narzędzi. - LlamaIndex: struktura danych stworzona dla RAG i odpytująca źródła strukturalne. Natywny silnik SQL (
NLSQLTableQueryEngine), agenci za pośrednictwem silnikaWorkflows. - CrewAI i AutoGen nie są alternatywami dla LangChain/LlamaIndex: są to wieloagentowe warstwy orkiestracji, umieszczone na jednej z dwóch (lub wewnętrznej funkcji Pythona).
- Ani LangChain, ani LlamaIndex nie oferują własnego konektora Postgres: oba korzystają z SQLAlchemy, kompatybilnego z każdym zarządzanym Postgresem, łącznie z Aurabase.
- Jak dotąd nie istnieje żaden pakiet integracyjny Aurabase dla tych frameworków. Połączenie odbywa się za pośrednictwem standardowego ciągu połączenia Postgres udostępnianego przez każdy projekt.
Dwa frameworki stworzone dla różnych potrzeb
LangChain i LlamaIndex pojawiły się w tym samym okresie, po wydaniu ChatGPT pod koniec 2022 roku. Ich punkt wyjścia znacznie się różni. LangChain modeluje aplikację LLM jako łańcuch dających się złożyć kroków: podpowiedź, wywołanie modelu, narzędzie, pamięć, a wszystko to składa się za pomocą wykresu LCEL lub LangGraph.
LlamaIndex pierwsze modele danych: dokumenty, węzły, indeksy, silnik zapytań. VectorStoreIndex lub SQLDatabase to obywatele pierwszej klasy, a nie narzędzia dodane do ogólnego agenta. Obydwa są open source (licencja MIT), dostępne w Pythonie i TypeScript, a dziś obejmują w dużej mierze pokrywający się zakres: agenci, RAG, wywoływanie narzędzi, połączenie SQL.
Ta zbieżność sprawia, że porównanie jest bardziej przydatne w przypadku architektury niż na liście funkcji: oba mogą prawie zrobić to samo. Co się zmienia, to jak.
Jak wszyscy podłączają się do Postgres, bez integracji pakietowej
Po stronie LangChain moduł langchain_community.utilities.SQLDatabase zawiera silnik SQLAlchemy. Następnie agent create_sql_agent udostępnia go jako zestaw narzędzi: wyświetla listę tabel, opisuje schemat, wykonuje zapytanie, sprawdza zapytanie przed wykonaniem.
Po stronie LlamaIndex równoważną abstrakcją jest llama_index.core.SQLDatabase, również zbudowana na silniku SQLAlchemy. Mechanizm zapytań NLSQLTableQueryEngine tłumaczy pytanie w języku naturalnym na zapytanie SQL, wykonuje je, a następnie ponownie formułuje wynik jako odpowiedź.
Żaden z ekstraktów nie zależy od Aurabase. Wystarczający jest sterownik SQLAlchemy i standardowy ciąg połączenia Postgres, podobnie jak w przypadku Supabase, RDS lub instancji hostowanej samodzielnie.
LangGraph a przepływy pracy: dwa sposoby koordynowania agenta
LangChain jako pierwszy zaproponował klasyczną pętlę agenta (AgentExecutor, wzorzec ReAct). Od tego czasu projekt skupił swoich agentów w kierunku LangGraph: agent jest tam reprezentowany jako wyraźny wykres węzłów i krawędzi, z punktami kontrolnymi i możliwą interwencją człowieka pomiędzy dwoma etapami.
LlamaIndex odpowiada swoim Workflows: orkiestracją sterowaną zdarzeniami, w której każdy krok emituje i zużywa wpisane zdarzenia. Silnik zapytań SQL lub wektorowych podłącza się bezpośrednio jako krok, bez dodatkowej warstwy adaptacyjnej, ponieważ te silniki są już natywnymi prymitywami frameworka.
W przypadku agenta wysyłającego zapytania do Postgres praktyczna różnica jest następująca: LangGraph zapewnia precyzyjną kontrolę nad gałęziami i ponownymi próbami wywołania SQL. LlamaIndex wymaga mniej kodu łączącego, gdy pytanie dotyczy najpierw danych już zaindeksowanych przez platformę.
Wejdź głębiej: poradnik wywoływania funkcji dla agenta Postgres
Gdzie LlamaIndex pozostaje historycznym krokiem do przodu
LlamaIndex został od początku zaprojektowany, aby połączyć LLM ze źródłami danych, z katalogiem łączników (LlamaHub) i specjalistycznymi indeksami w zależności od rodzaju treści. RAG pozostaje najbardziej bezpośrednim przypadkiem użycia frameworka, a nie funkcją dodaną po fakcie.
LangChain zaspokaja tę samą potrzebę poprzez swoje retrievers i łańcuchy pobierania, z równie dojrzałą integracją z ekosystemem LangGraph. Różnica polega mniej na pojemności, niż na tym, gdzie leży logika biznesowa: zintegrowana z indeksem po stronie LlamaIndex, jawnie połączona w łańcuch po stronie LangChain.
Obaj wiedzą, jak używać pgvector jako bazy wektora: llama-index-vector-stores-postgres po stronie LlamaIndex, klasa PGVector pakietu langchain-postgres po stronie LangChain. W projekcie Aurabase pgvector 0.8.6 jest już obecny w obrazie dzierżawy Postgres: oba pakiety łączą się z nim za pomocą tych samych parametrów połączenia, bez osobnego etapu aktywacji.
CrewAI i AutoGen: gdy pojedynczy agent już nie wystarcza
CrewAI organizuje kilku agentów na rolę: każdy agent otrzymuje cel, kontekst (backstory) i narzędzia pogrupowane w Crew z Task wykonywanym sekwencyjnie lub według hierarchii. Jest to pełnoprawna platforma orkiestracji, a nie rozszerzenie LangChain.
AutoGen, projekt badawczy firmy Microsoft, przyjmuje inne podejście: agenci, którzy komunikują się ze sobą (AssistantAgent, UserProxyAgent, GroupChat), z możliwością wykonywania kodu w izolowanym środowisku. Koordynacja wygląda jak rozmowa, a nie wyraźny wykres stanu, taki jak LangGraph.
Żadna z nich nie zastępuje warstwy połączenia danych. Agent CrewAI lub AutoGen, który musi czytać wywołania Postgres, w praktyce narzędzie SQL zbudowane z LangChain lub LlamaIndex lub prosta funkcja Pythona wokół psycopg2. CrewAI i AutoGen odpowiadają na pytanie „kto co i w jakiej kolejności robi”, a nie „jak czytać bazę danych”.
Czego żadne z nich nie robi natywnie w bazie danych Postgres
create_sql_agent i NLSQLTableQueryEngine wykonują zapytanie wygenerowane przez model na podstawie dostarczonego połączenia. Ani nie ogranicza domyślnie liczby zwracanych wierszy, ani nie blokuje żądania zapisu: rzeczywistą poręczą jest rola Postgres używana w ciągu połączenia, a nie opcja struktury.
Jest to strukturalna różnica w stosunku do natywnego języka NL2SQL Aurabase, który tłumaczy pytanie na SQL po stronie serwera, sprawdza wygenerowane zapytanie (parsowanie SQL, odrzucanie sfałszowanych pól serwera) i ogranicza LIMIT przed wykonaniem. To nie ta sama cegła: punkt końcowy NL2SQL odpowiada w jednej turze, z barierkami zainstalowanymi na platformie; a agent LangChain lub LlamaIndex uzasadnia w kilku etapach, z zabezpieczeniem samodzielnego montażu.
W praktyce te dwa podejścia raczej się uzupełniają niż wykluczają: ograniczony punkt końcowy NL2SQL dla prostego pytania kierowanego do użytkownika końcowego, agent do wieloetapowego wnioskowania, który łączy w sobie kilka narzędzi wykraczających poza SQL.
LangChain, LlamaIndex, CrewAI, AutoGen w jednej tabeli
| Główny cel | Ogólna orkiestracja LLM | Ramy danych / RAG | Orkiestracja wieloagentowa według ról | Konwersacyjna orkiestracja wieloagentowa |
|---|---|---|---|---|
| Prymitywny agent | LangGraph (wykres stanu) | Przepływy pracy (kroki zdarzenia) | Załoga / Zadanie / Proces | AsystentAgent / Czat grupowy |
| Natywne połączenie SQL | Baza danych SQL + utwórz_sql_agent | Baza danych SQL + NLSQLTableQueryEngine | Brak (narzędzie zewnętrzne) | Brak (narzędzie zewnętrzne) |
| obsługa pgvectora | langchain-postgres (PGVector) | sklepy z lamą-index-vector-postgres | Żaden rodzimy | Żaden rodzimy |
| Natywny multiagent | Nie (wielowęzłowy LangGraph) | Nie (przepływ jednego agenta) | Tak | Tak |
| Licencja | MIT | MIT | MIT | MIT (projekt badawczy Microsoftu) |
| ŁAŃCUCH JĘZYKA | LLAMAINDEX | CREWAI | AUTOGEN |
Podłącz LangChain lub LlamaIndex do standardowego backendu Postgres
Wystarczą trzy kroki, niezależnie od wybranego frameworka i nie są one zależne od żadnego konektora specyficznego dla platformy.
Trzeci krok ma większe znaczenie niż wybór ram. Rola Postgres ograniczona do naprawdę niezbędnych praw pozostaje jedynym niezawodnym zabezpieczeniem przed wygenerowanym żądaniem przekraczającym jego zakres, niezależnie od agenta go wykonującego. Zobacz dokumentację AI, aby zapoznać się z konfiguracją natywnych dostawców LLM Aurabase (OpenAI, Anthropic, Gemini), których można używać po stronie agenta.
Który wybrać według swojego projektu
Żadna struktura nie jest ściśle lepsza dla agenta połączonego z Postgres. Kontekst początkowy projektu jest bardziej decydujący niż lista funkcjonalności.
- LangChain: jeśli agent musi połączyć kilka heterogenicznych narzędzi (SQL, zewnętrzne API, wyszukiwarka internetowa) z precyzyjną kontrolą przepływu za pośrednictwem LangGraph i jeśli zespół ceni najszerszy ekosystem integracyjny na rynku.
- LlamaIndex: jeśli sercem projektu jest RAG lub wykonywanie zapytań dotyczących już zindeksowanych danych, przy silnym zapotrzebowaniu na łączniki źródłowe i model indeksu/zapytania, który pasuje bezpośrednio do przypadku użycia.
- CrewAI lub AutoGen dodatkowo: gdy pojedynczy agent już nie wystarczy i praca musi zostać rozdzielona pomiędzy kilka wyspecjalizowanych ról, powyżej jednego lub drugiego z dwóch frameworków danych.
Obydwa mogą również współistnieć w tym samym projekcie: silnik zapytań LlamaIndex udostępniony jako narzędzie w agencie LangGraph jest powszechnym wzorcem. Utrzymanie dwóch frameworków wiąże się z prawdziwym kosztem złożoności, który należy porównać z korzyściami przed domyślnym przyjęciem.