PROD주권 유럽 BaaS 플랫폼대시보드 열기 →

네이티브 AI · 9분 읽음

Postgres 에이전트에 대한 LangChain 및 LlamaIndex

Affane Daylami · Fondateur · 2026년 3월 24일

블로그로 돌아가기

LangChain과 LlamaIndex는 동일한 초기 질문에 답변하지 않습니다. LangChain은 LLM, 도구 및 메모리에 대한 호출을 연결하기 위한 일반 도구 키트로 탄생했습니다. LlamaIndex는 LLM을 구조적 또는 구조화되지 않은 소스에 연결하도록 설계된 데이터 프레임워크로 탄생했습니다. 이후 두 가지가 수렴되었습니다. 에이전트, RAG 및 SQL 연결은 오늘날 양쪽 모두에 존재합니다. 선택은 한쪽에서 부족한 기능이 아니라 에이전트에 가장 적합한 아키텍처에 따라 달라집니다.

이 영어 텍스트는 프랑스어 원본에서 자동으로 생성되었으며 아직 검토되지 않았습니다.
이 페이지는 자동으로 번역되었습니다. 영어 버전은 권위가 있습니다.

이 게시물은 Aurabase의 네이티브 AI 파노라마의 일부입니다. 두 프레임워크 모두 데이터베이스에 대한 독점 커넥터를 제공하지 않습니다. 두 경우 모두 Postgres에 대한 연결은 일반 SQL 드라이버(Python 측의 SQLAlchemy)와 표준 연결 문자열을 통해 이루어집니다. 이는 모든 관리형 Postgres와 마찬가지로 Aurabase에도 해당됩니다.

필수사항
  • LangChain: 일반 LLM 조정 프레임워크(체인, 도구, 메모리). 에이전트는 오늘날 LangGraph를 통해 구축되며 SQL은 다른 툴킷 중에서 하나의 툴킷으로 처리됩니다.
  • LlamaIndex: RAG 및 구조화된 소스 쿼리를 위해 탄생한 데이터 프레임워크입니다. 네이티브 SQL 엔진(NLSQLTableQueryEngine), Workflows엔진을 통한 에이전트.
  • CrewAI 및 AutoGen은 LangChain/LlamaIndex의 대안이 아닙니다. 둘 중 하나(또는 내부 Python 함수) 위에 배치되는 다중 에이전트 오케스트레이션 레이어입니다.
  • LangChain과 LlamaIndex 모두 독점 Postgres 커넥터를 제공하지 않습니다. 둘 다 Aurabase가 포함된 모든 관리형 Postgres와 호환되는 SQLAlchemy를 사용합니다.
  • 현재까지 이러한 프레임워크에 대한 Aurabase 패키지 통합은 존재하지 않습니다. 연결은 각 프로젝트에서 노출된 표준 Postgres 연결 문자열을 통해 이루어집니다.
#
개요

서로 다른 요구를 위해 탄생한 두 가지 프레임워크

LangChain과 LlamaIndex는 2022년 말 ChatGPT 출시를 계기로 같은 시기에 등장했습니다. 둘의 출발점은 확연히 다릅니다. LangChain은 LLM 애플리케이션을 구성 가능한 단계 체인(프롬프트, 모델 호출, 도구, 메모리)으로 모델링하며 모두 LCEL 또는 LangGraph그래프를 통해 조립됩니다.

LlamaIndex는 문서, 노드, 인덱스, 쿼리 엔진 등의 데이터를 먼저 모델링합니다. VectorStoreIndex 또는 SQLDatabase은 일반 에이전트에 추가된 도구가 아닌 일급 시민입니다. 둘 다 오픈 소스(MIT 라이센스)이며 Python 및 TypeScript에서 사용할 수 있으며 현재는 에이전트, RAG, 도구 호출, SQL 연결 등 크게 겹치는 범위를 다루고 있습니다.

이러한 수렴은 기능 목록보다 아키텍처에 대한 비교를 더 유용하게 만듭니다. 둘 다 거의 동일한 작업을 수행할 수 있습니다. 변화하는 방법은 무엇입니까?

#
데이터베이스 연결

패키지 통합 없이 모든 사람이 Postgres에 연결하는 방법

LangChain 측에서 langchain_community.utilities.SQLDatabase 모듈은 SQLAlchemy 엔진을 캡슐화합니다. 그런 다음 create_sql_agent 에이전트는 이를 테이블 나열, 스키마 설명, 쿼리 실행, 실행 전 쿼리 확인 등의 도구 세트로 노출합니다.

langchain_sql_agent.pypython
from langchain_community.utilities import SQLDatabase
from langchain_community.agent_toolkits import create_sql_agent
from langchain_openai import ChatOpenAI

# Studio → 설정 → 연결에서 얻은 채널입니다.
# search_path 프로젝트 스키마에 대한 경로(SQLAlchemy/psycopg 문서 참조)
# 사용된 드라이버에 따라 "options" 매개변수의 정확한 인코딩)
db = SQLDatabase.from_uri(
    "postgresql+psycopg2://aura:***@<host>:5432/aura_db_master?options=-csearch_path%3Dproject_<id>"
)

llm = ChatOpenAI(model="gpt-4o-mini")
agent = create_sql_agent(llm=llm, db=db, agent_type="tool-calling")

agent.invoke({"input": "Combien de commandes la semaine dernière ?"})

LlamaIndex 측에서 동등한 추상화는 SQLAlchemy 엔진을 기반으로 구축된 llama_index.core.SQLDatabase입니다. NLSQLTableQueryEngine 쿼리 엔진은 자연어 질문을 SQL 쿼리로 변환하고 실행한 다음 결과를 응답으로 재구성합니다.

llamaindex_sql_query_engine.pypython
from sqlalchemy import create_engine
from llama_index.core import SQLDatabase
from llama_index.core.query_engine import NLSQLTableQueryEngine
from llama_index.llms.openai import OpenAI

engine = create_engine(
    "postgresql+psycopg2://aura:***@<host>:5432/aura_db_master?options=-csearch_path%3Dproject_<id>"
)
sql_database = SQLDatabase(engine, include_tables=["orders", "customers"])

query_engine = NLSQLTableQueryEngine(
    sql_database=sql_database, llm=OpenAI(model="gpt-4o-mini"),
)
response = query_engine.query("Combien de commandes la semaine dernière ?")

두 추출물 모두 Aurabase에 의존하지 않습니다. Supabase, RDS 또는 자체 호스팅 인스턴스와 마찬가지로 SQLAlchemy 드라이버와 표준 Postgres 연결 문자열이면 충분합니다.

#
에이전트

LangGraph와 Workflows: 에이전트를 조정하는 두 가지 방법

LangChain은 먼저 고전적인 에이전트 루프(AgentExecutor, ReAct 패턴)를 제안했습니다. 이후 프로젝트는 에이전트를 LangGraph로 수렴했습니다. 에이전트는 두 단계 사이에 체크포인트와 가능한 인간 개입이 포함된 노드와 에지의 명시적인 그래프로 표시됩니다.

LlamaIndex는 Workflows(이벤트 중심 오케스트레이션)로 응답합니다. 여기서 각 단계는 입력된 이벤트를 내보내고 사용합니다. SQL 또는 벡터 쿼리 엔진은 추가 적응 계층 없이 단계로 직접 연결됩니다. 이러한 엔진은 이미 프레임워크의 기본 기본 요소이기 때문입니다.

Postgres를 쿼리하는 에이전트의 경우 실질적인 차이점은 다음과 같습니다. LangGraph는 SQL 호출에 대한 분기 및 재시도에 대한 세밀한 제어를 제공합니다. LlamaIndex는 프레임워크에서 이미 인덱싱된 데이터에 대한 질문인 경우 연결 코드가 덜 필요합니다.

더 자세히 알아보기: Postgres 에이전트에 대한 함수 호출 자습서

#
검색 및 RAG

LlamaIndex가 역사적으로 앞서가는 곳

LlamaIndex는 처음부터 콘텐츠 유형에 따른 커넥터 카탈로그(LlamaHub) 및 특수 인덱스를 사용하여 LLM을 데이터 소스에 연결하도록 설계되었습니다. RAG는 ​​이후에 추가된 기능이 아니라 프레임워크의 가장 직접적인 사용 사례로 남아 있습니다.

LangChain은 LangGraph 생태계에 똑같이 성숙한 통합을 통해 retrievers 및 가져오기 체인을 통해 동일한 요구 사항을 충족합니다. 차이점은 비즈니스 논리가 존재하는 위치보다 용량에 관한 것입니다. LlamaIndex 측의 인덱스에 통합되고 LangChain 측의 체인에 명시적으로 조립됩니다.

둘 다 pgVector를 벡터 기반으로 사용하는 방법을 알고 있습니다. LlamaIndex 측의 llama-index-vector-stores-postgres, LangChain 측의 langchain-postgres 패키지의 PGVector 클래스입니다. Aurabase 프로젝트에서 pgVector 0.8.6은 Postgres 테넌트 이미지에 이미 존재합니다. 두 패키지 모두 별도의 활성화 단계 없이 동일한 연결 문자열을 사용하여 여기에 연결됩니다.

더 자세히 알아보기: Postgres/pgVector RAG 파이프라인 구축

#
다중 에이전트

CrewAI 및 AutoGen: 단일 에이전트로는 더 이상 충분하지 않은 경우

CrewAI는 역할당 여러 에이전트를 조정합니다. 각 에이전트는 순서대로 또는 계층 구조에 따라 실행되는 Task와 함께 Crew로 그룹화된 목표, 컨텍스트(backstory) 및 도구를 받습니다. LangChain의 확장이 아닌 본격적인 오케스트레이션 프레임워크입니다.

Microsoft 연구 프로젝트인 AutoGen은 격리된 환경에서 코드를 실행할 수 있는 기능을 사용하여 서로 대화하는 에이전트(AssistantAgent, UserProxyAgent, GroupChat)라는 다른 접근 방식을 취합니다. 조정은 LangGraph와 같은 명시적인 상태 그래프가 아니라 대화처럼 보입니다.

둘 다 데이터 연결 계층을 대체하지 않습니다. Postgres 호출을 읽어야 하는 CrewAI 또는 AutoGen 에이전트, 실제로는 LangChain 또는 LlamaIndex로 구축된 SQL 도구 또는 psycopg2주변의 간단한 Python 함수입니다. CrewAI와 AutoGen은 “데이터베이스를 어떻게 읽는가”가 아니라 “누가 무엇을, 어떤 순서로 하는지”에 대해 답합니다.

#
한도

Postgres 데이터베이스에서 기본적으로 수행되지 않는 작업

create_sql_agent 및 NLSQLTableQueryEngine는 제공된 연결에 대해 모델에서 생성된 쿼리를 실행합니다. 기본적으로 반환되는 행 수를 제한하지도 않고 쓰기 요청을 차단하지도 않습니다. 실제 가드레일은 프레임워크 옵션이 아니라 연결 문자열에 사용되는 Postgres 역할입니다.

이는 서버 측에서 질문을 SQL로 변환하고 생성된 쿼리(SQL 구문 분석, 스푸핑된 서버 필드 거부)를 검증하고 실행 전에 LIMIT를 제한하는 Aurabase의 기본 NL2SQL과의 구조적 차이입니다. 동일한 브릭이 아닙니다. NL2SQL 엔드포인트는 플랫폼에 설치된 가드레일을 사용하여 한 번에 응답합니다. LangChain 또는 LlamaIndex 에이전트는 스스로 조립할 수 있는 안전 장치와 함께 여러 단계로 추론합니다.

실제로 두 접근 방식은 서로를 배제하기보다는 서로를 보완합니다. 최종 사용자에게 노출되는 간단한 질문을 위한 제한된 NL2SQL 엔드포인트, SQL 이외의 여러 도구를 결합하는 다단계 추론을 위한 에이전트입니다.

참조: Aurabase를 사용하는 Postgres에 대한 NL2SQL 튜토리얼

#
비교

LangChain, LlamaIndex, CrewAI, AutoGen이 하나의 테이블에 있습니다.

주요 목적일반 LLM 오케스트레이션데이터 프레임워크/RAG역할별 다중 에이전트 오케스트레이션대화형 다중 에이전트 오케스트레이션
원시 에이전트LangGraph(상태 그래프)워크플로(이벤트 단계)승무원/업무/프로세스AssistantAgent / GroupChat
기본 SQL 연결SQLDatabase + create_sql_agentSQLDatabase + NLSQLTableQueryEngine없음(외부 도구)없음(외부 도구)
pg벡터 지원랭체인-포스트그레스(PGVector)라마-색인-벡터-저장소-포스트그레스네이티브 없음네이티브 없음
기본 다중 에이전트아니요(다중 노드 LangGraph)아니요(단일 에이전트 흐름)예예
라이센스MITMITMITMIT(마이크로소프트 리서치 프로젝트)
랭체인라마인덱스크루와이자동 생성
#
실용적

LangChain 또는 LlamaIndex를 표준 Postgres 백엔드에 연결

선택한 프레임워크에 관계없이 세 단계로 충분하며 플랫폼별 커넥터에 의존하지 않습니다.

terminalbash
# 1. 프로젝트의 Postgres 연결 문자열을 검색합니다.
#    (Studio → 설정 → 연결 또는 관리되는 Postgres)
export AURA_DB_URL="postgresql+psycopg2://aura:***@<host>:5432/aura_db_master?options=-csearch_path%3Dproject_<id>"

# 2. SQL 드라이버와 선택한 프레임워크를 설치합니다.
pip install langchain langchain-community langchain-openai psycopg2-binary
# 또는 LlamaIndex 측에서:
pip install llama-index llama-index-llms-openai psycopg2-binary

# 3. 에이전트가 폴링만 해야 하는 경우 읽기 전용인 전용 Postgres 역할을 만듭니다.
CREATE ROLE agent_readonly LOGIN PASSWORD '***';
GRANT SELECT ON ALL TABLES IN SCHEMA project_<id> TO agent_readonly;

세 번째 단계는 프레임워크 선택보다 더 중요합니다. 실제로 필요한 권한으로 제한된 Postgres 역할은 이를 실행하는 에이전트에 관계없이 해당 범위를 초과하는 생성된 요청에 대해 유일하게 신뢰할 수 있는 보호 장치로 남아 있습니다. 에이전트 측에서 사용할 수 있는 Aurabase의 기본 LLM 공급자(OpenAI, Anthropic, Gemini) 구성은 AI 문서를 참조하세요.

#
결정

프로젝트에 따라 어느 것을 선택해야 할까요?

두 프레임워크 모두 Postgres에 연결된 에이전트에 대해 엄격히 우수하지는 않습니다. 프로젝트의 시작 컨텍스트는 기능 목록보다 더 결정적입니다.

  • LangChain: 에이전트가 여러 이기종 도구(SQL, 외부 API, 웹 검색)를 LangGraph를 통한 흐름의 미세 제어와 결합해야 하며 팀이 시장에서 가장 광범위한 통합 생태계를 중요하게 생각하는 경우.
  • LlamaIndex: 프로젝트의 핵심이 RAG이거나 이미 인덱싱된 데이터의 쿼리인 경우, 소스 커넥터와 사용 사례에 직접적으로 맞는 인덱스/쿼리 모델이 절실히 필요합니다.
  • CrewAI 또는 AutoGen 추가: 단일 에이전트가 더 이상 충분하지 않고 작업이 두 데이터 프레임워크 중 하나 이상인 여러 특수 역할 간에 분산되어야 하는 경우.

두 가지가 동일한 프로젝트에 공존할 수도 있습니다. LangGraph 에이전트의 도구로 노출되는 LlamaIndex 쿼리 엔진이 공통 패턴입니다. 두 개의 프레임워크를 유지 관리하는 데에는 실제로 복잡성 비용이 발생하므로 기본적으로 채택하기 전에 이득을 따져보아야 합니다.

#
자주 묻는 질문

자주 묻는 질문

LangChain과 LlamaIndex는 Postgres 데이터(INSERT, UPDATE, DELETE)를 수정할 수 있습니까?+
예, 기본적으로 연결 문자열에 사용된 데이터베이스 역할에 쓰기 권한이 있는 경우입니다. LangChain 측의 create_sql_agent이나 LlamaIndex 측의 NLSQLTableQueryEngine는 기본적으로 읽기 전용 쿼리를 제한하지 않습니다. 실제 보호 장치는 Postgres 수준에서 발생합니다. GRANT가 SELECT로 제한된 전용 애플리케이션 역할입니다. SQL 주입으로부터 NL2SQL을 보호하는 방법에 대한 가이드도 참조하세요.
LangChain과 LlamaIndex 중 하나를 선택해야 합니까, 아니면 결합할 수 있습니까?+
두 가지가 동일한 프로젝트에 공존할 수 있습니다. LlamaIndex 쿼리 엔진은 LangGraph 에이전트의 도구로 노출될 수 있으며 그 반대도 가능합니다. 이는 기본 권장 사항이 아닌 실제 기술 옵션입니다. 두 개의 프레임워크를 유지하면 정당화할 추가 종속성과 구성 표면이 추가됩니다.
CrewAI 또는 AutoGen이 LangChain 및 LlamaIndex를 대체합니까?+
아니요. CrewAI와 AutoGen은 여러 에이전트(역할 분배, 대화, 작업 위임)를 조정하지만 데이터 연결 계층을 제공하지 않습니다. Postgres를 쿼리하는 프로젝트에서는 LangChain, LlamaIndex 또는 직접 만든 Python 함수로 구축된 SQL 도구를 사용합니다.
LangChain 또는 LlamaIndex에 대한 공식 Aurabase 통합이 있습니까?+
아니요, 지금까지요. 이러한 프레임워크에 대해 Aurabase 측에는 패키지된 커넥터가 없습니다. 연결은 관리되는 Postgres와 마찬가지로 일반 SQL 드라이버(SQLAlchemy)를 사용하여 각 프로젝트에서 노출된 표준 Postgres 연결 문자열을 통해 이루어집니다.

배포할 준비가 되셨나요?

5분 만에 백엔드를 완성하세요.

신용카드 불필요 · 500MB 무료 · 50,000 MAU