Agno 지식 베이스(Knowledge)로 RAG 구현하기

Agno 지식 베이스(Knowledge)로 RAG 구현하기

모델은 훈련 데이터 밖의 정보(회사 문서, 최신 자료)를 모르기 때문에, 그때그때 필요한 지식을 주입해 주는 게 중요해요. Agno에서 Knowledge는 에이전트가 훈련 데이터를 넘어 정보에 접근하게 해 줘요. 파일·URL·원본 텍스트를 로드하면, 에이전트가 검색한 콘텐츠에 응답을 근거(ground)시킬 수 있어요.

출처: Agno 지식 공식 문서

기본 예시

from agno.agent import Agent
from agno.knowledge.knowledge import Knowledge
from agno.vectordb.chroma import ChromaDb

# Create a knowledge base
knowledge = Knowledge(
    vector_db=ChromaDb(
        collection="docs",
        path="tmp/chromadb",
        persistent_client=True,
    ),
)

# Load content
knowledge.insert(url="https://docs.agno.com/introduction.md")

# Create an agent that searches the knowledge base
agent = Agent(knowledge=knowledge, search_knowledge=True)
agent.print_response("What is Agno?")

Knowledge에 벡터 DB(ChromaDb)를 연결하고, knowledge.insert(url=...)로 콘텐츠를 넣어요. 에이전트에 knowledge=knowledge, search_knowledge=True를 주면 에이전트가 지식 베이스를 검색하고 그 내용에 응답을 근거지워요.

어떻게 동작하나

Knowledge는 세 가지 구성 요소가 합쳐진 것이에요.

  1. 콘텐츠 수집(Content ingestion) — 파일, URL, 클라우드 저장소, 원본 텍스트에서 문서를 읽어요. Agno는 PDF, DOCX, CSV, Markdown 등을 위한 리더를 기본 제공해요.
  2. 청킹·임베딩(Chunking and embedding) — 문서를 검색 가능한 청크로 나누고, 의미를 담은 벡터 임베딩으로 변환해요.
  3. 검색·검색 결과 활용(Search and retrieval) — 에이전트가 정보가 필요할 때 벡터 DB에서 관련 청크를 검색해 컨텍스트에 포함해요.

RAG 방식은 두 가지예요. 에이전틱 RAG(에이전트가 언제 검색할지 결정)와 전통적 RAG(항상 컨텍스트 주입)가 있는데, 에이전틱 RAG가 기본값이며 대부분의 사용 사례에 잘 맞아요.

왜 지식이 중요한가

언어 모델은 폭넓은 일반 지식을 갖고 있지만 우리 도메인의 맥락은 모르죠. 자체 콘텐츠로 시작하는 게 핵심이에요. 회사 문서, DB 스키마, 제품 스펙, 지원 FAQ, 연구 논문을 로드하면 에이전트가 관련 구절을 검색해 응답의 컨텍스트로 써요.

그리고 에이전트가 학습하게 두세요. 에이전트는 지식을 검색할 뿐 아니라 쓸 수도 있어요. 발견한 통찰을 저장하고 나중에 다시 꺼내 쓰는 식으로 대화를 넘어 전문성을 쌓아요.

def save_learning(title: str, insight: str) -> str:
    """Save a reusable insight to the knowledge base."""
    knowledge.insert(name=title, text_content=insight)
    return f"Saved: {title}"

agent = Agent(
    knowledge=knowledge,
    search_knowledge=True,
    tools=[save_learning],  # Agent can write to knowledge
)

tools에 지식 베이스에 쓰는 함수를 넣어, 에이전트가 배운 내용을 직접 저장하게 만들 수 있어요. 지속되는 컬렉션 덕분에 저장된 통찰은 이후 실행에서도 사용할 수 있어요.

벡터 스토어

Agno는 19개의 벡터 데이터베이스를 지원해요. LanceDB·ChromaDB 같은 로컬 옵션부터 Pinecone·Weaviate 같은 관리형 서비스까지 다양해요. 사용 환경에 맞는 걸 고르면 돼요.

더 알아보기