직접 구축해 본 Agentic RAG 시스템 — 배운 점들 (LLM Zoomcamp 2026, Module 1)
요약
LLM Zoomcamp 2026의 Module 1 과정을 통해 Agentic RAG 시스템을 직접 구축한 경험을 공유합니다. RAG 파이프라인 구축부터 minsearch를 활용한 인덱싱, 효율적인 문서 청킹, 그리고 함수 호출을 통한 에이전트화 과정을 다룹니다.
핵심 포인트
- RAG 파이프라인의 기초: 검색 후 컨텍스트를 LLM에 전달하여 환각 방지
- minsearch 활용: 별도 인프라 없이 Python 환경에서 경량 키워드 검색 구현
- 문서 청킹의 중요성: 입력 토큰을 약 3배 감소시켜 비용 절감 및 정확도 향상
- Agentic RAG: 함수 호출을 통해 스스로 검색 여부를 결정하는 자율형 에이전트 구축
저는 @DataTalksClub에서 제공하는 LLM Zoomcamp 2026의 Module 1을 막 마쳤습니다. 솔직히 말씀드리면, 제가 수강한 AI 과정 중 가장 실습 중심적인 강의였습니다.
불필요한 내용은 없습니다. 일일이 떠먹여 주는 방식도 아닙니다. 그저 실제 코드, 실제 개념, 그리고 마지막에는 작동하는 시스템이 있을 뿐입니다.
제가 배운 모든 것과, LLM 애플리케이션 분야로 진입하려는 데이터 엔지니어 또는 소프트웨어 개발자에게 이것이 왜 중요한지에 대해 공유하겠습니다.
LLM Zoomcamp란 무엇인가?
LLM Zoomcamp는 Alexey Grigorev와 DataTalks.Club이 제공하는 무료 오픈 소스 과정으로, 처음부터 프로덕션 수준의 LLM 애플리케이션을 구축하는 방법을 가르칩니다. GPU는 필요하지 않습니다. 비싼 API 비용도 들지 않습니다. 오직 Python, 호기심, 그리고 무언가를 만들고자 하는 의지만 있으면 됩니다.
Module 1의 주제는 Agentic RAG입니다. LLM이 무엇인지부터 시작하여, 언제 무엇을 검색할지 스스로 결정하는 완전 자율형 AI 에이전트를 구축하는 것까지 모든 내용을 다룹니다.
Module 1에서 구축한 것들
✅ 1. 처음부터 구축한 RAG 파이프라인
RAG는 Retrieval-Augmented Generation(검색 증강 생성)의 약자입니다. 아이디어는 간단합니다. LLM에게 질문을 던지고 답을 알기를 바라는 대신, 먼저 지식 베이스에서 관련 문서를 _검색(search)_한 다음, 그 문서들을 컨텍스트(context)로 LLM에 전달하는 것입니다.
그 결과는 무엇일까요? 환각(hallucination) 대신 근거가 있고 정확한 답변을 얻을 수 있습니다.
저는 약 30줄의 Python 코드로 전체 파이프라인을 구축했습니다:
def rag(question):
search_results = search(question) # 1. 관련 문서 찾기
prompt = build_prompt(question, search_results) # 2. 컨텍스트 프롬프트 구축
...
단순하지만 강력합니다. 모든 프로덕션 RAG 시스템의 기초입니다.
✅ 2. minsearch를 이용한 문서 인덱싱
저는 Alexey가 직접 만든 경량 키워드 검색 라이브러리인 minsearch를 사용하여 DataTalks.Club Zoomcamp 강의의 FAQ 문서 1,242개를 인덱싱했습니다. 이 라이브러리는 Elasticsearch와 동일한 개념(텍스트 필드, 키워드 필드, 부스팅, 필터링)을 사용하지만, 별도의 인프라 없이 순수 Python 환경에서 실행됩니다.
✅ 3. 더 나은 검색을 위한 문서 청킹 (Document Chunking)
긴 문서는 검색 정밀도 (retrieval precision)를 저하시킵니다. 10,000자 페이지의 깊숙한 곳에 있는 매칭 결과라 할지라도, LLM 컨텍스트 (context)에는 페이지 전체가 불러와지며, 이는 낭비적이고 노이즈가 많습니다.
해결책은 **청킹 (chunking)**입니다. 각 문서를 작고 중첩되는 조각들로 나누고, 대신 이 조각들을 인덱싱 (indexing)하는 것입니다.
from gitsource import chunk_documents
chunks = chunk_documents(documents, size=2000, step=1000)
결과는 어떨까요? LLM으로 전송되는 입력 토큰 (input tokens)이 약 3배 감소했습니다. 더 작고, 빠르고, 저렴하며, 더 정확해졌습니다.
✅ 4. 함수 호출 (Function Calling)을 통한 RAG의 에이전트화
여기서부터 흥미진진해집니다.
표준적인 RAG 파이프라인 (pipeline)은 **고정적 (fixed)**입니다: 질문 → 한 번의 검색 → 답변. 개발자가 흐름을 제어합니다.
에이전틱 RAG (agentic RAG) 시스템은 LLM에게 주도권을 부여합니다:
질문 → LLM의 사고 → 검색할까? → LLM의 사고 → 다시 검색할까? → LLM의 사고 → 답변
LLM은 다음을 스스로 결정합니다:
- 검색을 수행할지 여부
- 무엇을 검색할지
- 몇 번 검색할지
- 답변하기에 충분한 컨텍스트를 확보했는지 여부
저는 이를 **함수 호출 (function calling)**을 사용하여 구현했습니다. 즉, LLM이 스스로 호출할 수 있는 search 도구를 부여한 것입니다. 한 테스트에서, 에이전트는 최종 답변을 생성하기 전까지 점진적으로 정교해지는 쿼리 (query)를 사용하여 3번의 서로 다른 검색을 자율적으로 수행했습니다. 하드코딩도, 고정된 흐름도 없었습니다.
기술 스택 (Tech Stack)
- LLM: Groq API (llama-3.1-8b-instant) — 무료 티어, 매우 빠른 속도
- Search: minsearch — 가벼운 키워드 검색
- Chunking: gitsource chunk_documents
- Environment: uv + Python 3.12
- Knowledge base: DataTalks.Club Zoomcamp 강의 페이지 (72개의 마크다운 파일, 295개의 청크)
핵심 요약 (Key Takeaways)
1. RAG는 단 3개의 함수일 뿐입니다. search() + build_prompt() + llm(). 그 외의 모든 것은 최적화 (optimization)입니다.
2. 청킹은 생각보다 훨씬 중요합니다. 전체 문서를 2,000자 단위의 청크로 나눈 결과, 입력 토큰이 3배 감소했으며 답변의 품질이 크게 향상되었습니다.
3. 에이전트(Agents)는 그저 루프(loops)일 뿐입니다. 에이전트형 AI (agentic AI)의 "마법"은 말 그대로 finish_reason == "stop"이 될 때까지 LLM을 계속해서 호출하는 while 루프입니다. 이 점을 이해하면 LangChain이나 LlamaIndex와 같은 에이전트 프레임워크 (agent frameworks)의 90%는 신비감이 사라집니다.
4. OpenAI가 반드시 필요한 것은 아닙니다. 저는 Llama 3.1을 사용하여 Groq의 무료 티어 (free tier)에서 모든 것을 실행했습니다. OpenAI 호환 API (OpenAI-compatible API)를 사용하기 때문에 코드 변경이 전혀 필요하지 않았습니다.
나의 과제 솔루션 (My Homework Solution)
Module 1에 대한 모든 코드는 GitHub에 오픈 소스로 공개되어 있습니다:
👉 github.com/Derrick-Ryan-Giggs/llm-zoomcamp-2026
포함된 내용은 다음과 같습니다:
rag-intro.ipynb— 전체 RAG 파이프라인 (RAG pipeline)agents.ipynb— 함수 호출 (function calling) 및 에이전트 루프 (agentic loop)homework.ipynb— Module 1 과제 솔루션
여러분도 배우고 싶으신가요?
LLM Zoomcamp은 완전 무료입니다. 유료 결제 장벽도, 수료증 비용도 없으며, 오직 오픈 소스 학습만을 지향합니다.
👉 여기서 신청하세요: github.com/DataTalksClub/llm-zoomcamp
다음은 Module 2인 **벡터 검색 (Vector Search)**입니다. 이에 대해서도 글을 작성할 예정입니다.
단순히 ChatGPT를 호출하는 수준을 넘어, 실제 LLM 애플리케이션을 구축하고 싶은 데이터 엔지니어 (data engineer), ML 실무자 (ML practitioner), 또는 소프트웨어 개발자 (software developer)라면 이 코스가 여러분을 위한 것입니다.
LLM Zoomcamp 2026을 수강 중이신가요? 댓글을 남겨주세요. 여러분과 소통하며 서로의 노트를 공유하고 싶습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기