AgentPG 소개
AgentPG는 개발자가 PostgreSQL 데이터베이스를 기반으로 강력하고 지속적인(Stateful) AI 에이전트를 쉽고 빠르게 구축할 수 있도록 돕는 오픈소스 프레임워크입니다. 일반적으로 AI 에이전트를 개발할 때 개발자들은 메모리 관리, 지식 검색(RAG), 그리고 도구(Tool) 실행을 위해 복잡한 애플리케이션 계층(예: LangChain 등)을 구성해야 했습니다. 하지만 AgentPG는 이러한 복잡성을 줄이고, 데이터베이스 자체를 에이전트의 '두뇌'이자 '기억 저장소'로 활용하는 데 초점을 맞춥니다.
이 프로젝트는 단순히 데이터를 저장하는 것을 넘어, 에이전트가 수행한 작업, 대화의 문맥(Context), 그리고 필요한 지식을 벡터(Vector) 형태로 PostgreSQL에 저장하고 관리하는 통합 솔루션을 제공합니다. 이를 통해 개발자는 데이터베이스 인프라 위에서 에이전트의 로직을 더욱 직관적으로 설계할 수 있으며, 데이터의 일관성과 지속성을 보장받을 수 있습니다.
특히 복잡한 파이썬 로직 없이도 데이터베이스의 강력한 기능을 활용하여 에이전트의 "기억(Memory)"과 "지식(Knowledge)"을 관리할 수 있다는 점이 큰 장점입니다. 이는 AI 애플리케이션의 구조를 단순화하고, 데이터 중심(Data-Centric)의 AI 개발을 가능하게 합니다.
LangChain/LlamaIndex vs AgentPG
기존의 LangChain이나 LlamaIndex와 같은 프레임워크는 애플리케이션 레벨(Python/JS 코드)에서 에이전트의 상태와 메모리를 관리하는 데 중점을 둡니다. 이 경우, 서버가 재시작되거나 세션이 끊어지면 메모리 관리를 위해 별도의 저장소 설정이 필수적이며, 아키텍처가 복잡해질 수 있습니다.
반면, AgentPG는 PostgreSQL이라는 견고한 RDBMS를 중심에 둔다는 것이 LangChain 및 LlamaIndex와 같은 프레임워크와의 가장 큰 차이점입니다. 즉, PostgreSQL을 사용함으로써 AgentPG은 다음과 같은 이점들을 갖습니다:
-
상태 관리: 에이전트의 모든 상태와 기억이 DB 테이블에 즉시 기록되므로 별도의 직렬화 과정이 필요 없습니다.
-
검색 효율성:
pgvector와 같은 확장 기능을 활용하여 벡터 검색과 일반 SQL 쿼리를 결합한 하이브리드 검색이 용이합니다. -
구조적 단순함: "App-DB" 구조를 유지하면서도 AI 기능을 통합할 수 있어, 마이크로서비스나 서버리스 환경에서도 상태 유지가 쉽습니다.
AgentPG의 주요 기능
┌─────────────────────────────────────────────────────────────────────┐
│ Application Layer │
│ (Your Go Application Code) │
└─────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ AgentPG Core │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌────────────┐ │
│ │ Agent │ │ Session │ │ Streaming │ │ Hooks │ │
│ │ Manager │ │ Manager │ │ Handler │ │ System │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ └────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────────┐
│ Tool System │ │ Compaction │ │ Storage Layer │
│ ┌─────────────┐ │ │ ┌─────────────┐ │ │ ┌───────────────────┐ │
│ │ Registry │ │ │ │ Manager │ │ │ │ Store Interface │ │
│ ├─────────────┤ │ │ ├─────────────┤ │ │ ├───────────────────┤ │
│ │ Executor │ │ │ │ Strategies │ │ │ │ PostgresStore │ │
│ ├─────────────┤ │ │ ├─────────────┤ │ │ │ (+ Transactions) │ │
│ │ Validator │ │ │ │ Partitioner │ │ │ └───────────────────┘ │
│ └─────────────┘ │ │ └─────────────┘ │ └─────────────────────────┘
└─────────────────┘ └─────────────────┘ │
│ │ ▼
▼ ▼ ┌─────────────────────┐
┌─────────────────────────────────────────┐ │ PostgreSQL │
│ Anthropic API │ │ ┌───────────────┐ │
│ (Claude Models via Official SDK) │ │ │ sessions │ │
└─────────────────────────────────────────┘ │ │ messages │ │
│ │ compaction_* │ │
│ │ message_arch* │ │
│ └───────────────┘ │
└─────────────────────┘
AgentPG는 에이전트 구축에 필요한 핵심적인 기능들을 PostgreSQL 위에서 추상화하여 제공합니다. 이 프로젝트의 핵심은 에이전트의 '인지 능력'을 데이터베이스 스키마와 쿼리로 구현할 수 있도록, 다음과 같은 기능들을 제공합니다:
에이전트 메모리 관리 (Memory Management)
AI 에이전트의 가장 중요한 요소 중 하나는 과거의 대화를 기억하는 것입니다. 이를 통해 에이전트는 지속적으로 상태를 기억(Stateful)할 수 있게 됩니다. 이를 위해 AgentPG는 사용자와의 대화 내역을 자동으로 PostgreSQL 테이블에 저장하고 관리합니다.
- 단기 메모리(Short-term Memory): 현재 진행 중인 대화의 컨텍스트를 유지합니다.
- 장기 메모리(Long-term Memory): 중요한 정보를 요약하거나 벡터화하여 장기 보존합니다.
검색 증강 생성 (RAG) 통합
외부 지식이나 문서를 참조해야 할 때, 별도의 벡터 DB(Pinecone, Weaviate 등)를 구축할 필요 없이 PostgreSQL 내부에서 해결합니다. AgentPG 다음과 같은 방식으로 동작하게 됩니다:
- 문서를 조각(Chunk) 단위로 분할하여 저장합니다.
- 임베딩(Embedding) 모델을 통해 벡터 데이터를 생성 및 저장합니다.
- 사용자의 질문과 가장 유사한 문맥을 SQL 쿼리를 통해 검색하여 LLM에 전달합니다.
도구 실행 및 관리 (Tool Execution)
에이전트가 외부 API를 호출하거나 특정 작업을 수행해야 할 때, 해당 도구의 정의와 실행 권한 등을 관리하는 기능을 포함할 수 있습니다. 이를 통해 에이전트는 단순한 챗봇을 넘어 실제 작업을 수행하는 비서 역할을 하게 됩니다.
라이선스
AgentPG 프로젝트는 MPL-2.0(Mozilla Public License 2.0) 라이선스를 따르고 있습니다. 상업적 사용이나 재배포시 따라야하는 규정은 없으나, 사용 전 라이선스 전문을 참고해주세요.
AgentPG 프로젝트 GitHub 저장소
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. ![]()
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ ![]()
