전체 그래프
Agno

Agno Knowledge & Memory

aiagent-frameworkagnoragmemory

상위: 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+)

로컬클라우드/엔터프라이즈
ChromaDBPinecone
LanceDBWeaviate
SQLiteQdrant
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 Memoryupdate_memory_on_run=True매 실행 후 자동으로 메모리 생성/업데이트
Agentic Memoryenable_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 HistoryMemory
범위단일 세션 내 대화세션 간 사용자 정보
생명주기세션 종료 시 정리 가능영구 보존
용도대화 흐름 유지사용자 선호도/사실 기억
설정add_history_to_context=Trueupdate_memory_on_run=True

관련 개념