LangChain RAG 에이전트 — 툴로 검색 실행
LangChain RAG 에이전트
LangChain에서 RAG를 에이전트로 구현하는 방법은, 리트리버를 감싼 검색 툴을 에이전트에 제공하고 LLM이 스스로 툴을 호출하게 하는 거예요. 기본적이면서도 일반적인 구현 방식이에요.
기본 구조
- 문서를 로드·색인해 벡터 스토어에 저장.
- 벡터 스토어를 감싸는
@tool로 리트리버 툴 생성. - 이 툴을 가진 에이전트가 질문에 검색이 필요하면 호출해 컨텍스트를 얻고, 아니면 바로 응답.
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 튜토리얼을 참고하세요.