LangChain RAG 에이전트 — 툴로 검색 실행

LangChain RAG 에이전트

LangChain에서 RAG를 에이전트로 구현하는 방법은, 리트리버를 감싼 검색 툴을 에이전트에 제공하고 LLM이 스스로 툴을 호출하게 하는 거예요. 기본적이면서도 일반적인 구현 방식이에요.

기본 구조

  1. 문서를 로드·색인해 벡터 스토어에 저장.
  2. 벡터 스토어를 감싸는 @tool로 리트리버 툴 생성.
  3. 이 툴을 가진 에이전트가 질문에 검색이 필요하면 호출해 컨텍스트를 얻고, 아니면 바로 응답.
from langchain.tools import tool
from langchain.agents import create_agent

@tool
def search(query: str) -> str:
    # 주어진 쿼리로 관련 문서를 벡터 검색해 반환합니다.
    ...

단계별

  • 색인: RecursiveCharacterTextSplitter로 청크 분할, 임베딩 후 벡터 스토어에 저장.
  • 에이전트: LLM이 툴 호출 여부를 판단.
  • 두 경로: 검색하는 에이전트 / 단일 LLM 호출로 빠른 2-스텝 RAG 체인.

Trade-off

LLM이 툴 호출 재량을 갖는 게 유연하지만, 단순 쿼리에는 오버헤드가 생길 수 있어요. 더 고급 패턴은 LangGraph의 Agentic RAG 튜토리얼을 참고하세요.

더 알아보기