상위: Agno
요약
Agno의 Knowledge, Memory, Storage는 에이전트에 정보 검색, 장기 기억, 세션 영속화 기능을 부여하는 세 가지 독립 시스템이다. Knowledge는 RAG 기반 도메인 지식을, Memory는 사용자별 장기 기억을, Storage는 세션 상태를 관리한다.
Knowledge — 도메인 지식 (RAG)
에이전트에 훈련 데이터 너머의 정보를 제공한다. 문서를 청킹 → 임베딩 → 벡터 DB에 저장하고, 에이전트가 필요할 때 시맨틱 검색으로 가져온다.
아키텍처
Content Ingestion → Chunking → Embedding → Vector DB
↓
Agent ← 시맨틱 검색 ← Query ← 사용자 질문
검색 방식
| 방식 | 설명 |
|---|---|
| Agentic RAG (기본) | 에이전트가 검색 필요 여부를 자율적으로 판단 |
| Traditional RAG | 모든 상호작용에 자동으로 컨텍스트 주입 |
Agentic RAG가 기본값이다. 에이전트가 "지금 검색이 필요한가?"를 스스로 결정한다.
지원 문서 형식
PDF, DOCX, CSV, JSON, Markdown, 텍스트, 웹페이지, S3 등
지원 벡터 DB (20+)
| 로컬 | 클라우드/엔터프라이즈 |
|---|---|
| ChromaDB | Pinecone |
| LanceDB | Weaviate |
| SQLite | Qdrant |
| Milvus | |
| PgVector |
검색 유형
- 벡터 검색: 시맨틱 유사도
- 키워드 검색: 전통적 텍스트 매칭
- 하이브리드 검색: 벡터 + 키워드 결합
- 메타데이터 필터링: 추가 조건 필터
코드 예시
from agno.agent import Agent
from agno.knowledge.knowledge import Knowledge
from agno.vectordb.chroma import ChromaDb
knowledge = Knowledge(
vector_db=ChromaDb(collection="docs", path="tmp/chromadb")
)
knowledge.insert(url="https://docs.agno.com/introduction.md")
agent = Agent(
knowledge=knowledge,
search_knowledge=True, # Agentic RAG 활성화
)
agent.print_response("What is Agno?")
학습 통합
에이전트가 대화 중 발견한 인사이트를 Knowledge에 다시 저장할 수 있다. 정적이지 않고 진화하는 지식 베이스가 된다.
Memory — 장기 기억 (User Facts)
대화에서 사용자 정보를 자동 추출하여 DB에 영속화한다. "Sarah는 이메일을 선호한다" 같은 사실을 기억하고, 이후 대화에서 활용한다.
두 가지 모드
| 모드 | 설정 | 동작 |
|---|---|---|
| Automatic Memory | update_memory_on_run=True | 매 실행 후 자동으로 메모리 생성/업데이트 |
| Agentic Memory | enable_agentic_memory=True | 에이전트가 직접 메모리 CRUD를 결정 |
Automatic은 고객 지원, 개인 비서에 적합. Agentic은 복잡한 멀티턴 워크플로우에 적합.
데이터 모델
| 필드 | 설명 |
|---|---|
memory_id | 고유 ID |
memory | 기억 내용 |
topics | 관련 주제 |
user_id | 사용자 ID |
agent_id | 에이전트 ID |
updated_at | 갱신 시간 |
기본 테이블명은 agno_memories. 커스터마이즈 가능.
코드 예시
from agno.agent import Agent
from agno.db.sqlite import SqliteDb
db = SqliteDb(db_file="agno.db")
agent = Agent(
db=db,
update_memory_on_run=True, # 자동 메모리
)
# 첫 대화
agent.print_response("I'm allergic to nuts", user_id="user_123")
# 이후 대화 — 에이전트가 알레르기를 기억
agent.print_response("Suggest a snack for me", user_id="user_123")
Storage — 세션 영속화
세션 상태를 DB에 저장한다. 에이전트 재시작 후에도 대화 히스토리와 상태가 유지된다.
지원 백엔드
SQLite, PostgreSQL, MongoDB
Chat History vs Memory
| Chat History | Memory | |
|---|---|---|
| 범위 | 단일 세션 내 대화 | 세션 간 사용자 정보 |
| 생명주기 | 세션 종료 시 정리 가능 | 영구 보존 |
| 용도 | 대화 흐름 유지 | 사용자 선호도/사실 기억 |
| 설정 | add_history_to_context=True | update_memory_on_run=True |
관련 개념
- Agno: Agno 프레임워크 MOC
- Agno Agent: 단일 에이전트 구성
- Agno Reasoning Tools: KnowledgeTools, MemoryTools