AI VIDEO BRIEFING

에이전트형 RAG 직접 구현 — 순수 파이썬과 도구 3개로 사내 데이터 검색하기

프레임워크 없이 파이썬만으로 에이전트형 RAG를 만드는 방법을 단계별로 설명한다. 파일 목록·검색·읽기 세 도구와 반복 루프, 그리고 운영 환경 적용 팁까지 정리했다.

순수 파이썬으로 처음부터 만드는 에이전트형 RAG: 검색 도구 3개로 시작하기 영상 대표 이미지

핵심 메시지

  • 에이전트형 RAG는 검색·읽기 도구를 반복 호출하는 피드백 루프 덕분에 한 번만 LLM을 호출하는 시맨틱 RAG보다 정확도가 높지만, 지연 시간과 비용은 더 든다.
  • 핵심은 단 세 가지 도구다: 파일 목록 보기(list), 패턴 검색(grep), 파일 읽기(read). 코딩 에이전트들이 쓰는 도구와 동일한 구조다.
  • 마크다운 파일을 파일 시스템에 두고 시작하면 별도 벡터 DB 없이도 에이전트형 검색을 구현할 수 있다.
  • 도구 정의와 독스트링 자체가 LLM이 읽는 정보이므로, 설명을 잘 쓰면 모델이 무엇을·어떻게 검색할지 더 잘 판단한다.
  • 운영 환경에서는 요청 횟수 제한, 읽기 최대 줄 수, Rust 기반 ripgrep, 오류를 raise 대신 return 하는 방식 등 안전장치가 필요하다.

쉽게 이해하기

AI 엔지니어 데이브 에벌라르는 코딩 에이전트가 아니라 사내·비공개 데이터를 LLM에 연결하기 위한 '에이전트형 RAG'를 순수 파이썬으로 구현하는 과정을 보여준다. 그는 시맨틱 RAG가 죽지 않았다고 말한다. 낮은 지연 시간과 비용 최적화가 중요하면 시맨틱 RAG가 여전히 좋은 출발점이지만, 시간과 예산이 있다면 에이전트형 RAG가 대체로 더 나은 결과를 낸다는 것이다.

두 방식의 차이는 구조에 있다. 시맨틱 RAG는 정보를 모두 모은 뒤 LLM을 단 한 번 호출하는 선형 과정이다. 반면 에이전트형 RAG는 검색·읽기 도구가 결과를 모델에 돌려주고, 모델이 그 지능을 루프 안에서 여러 번 사용한다. 그래서 처음에 원하는 정보를 찾지 못해도 스스로 교정하며 답에 접근할 수 있다.

구현은 파일 시스템의 마크다운 파일과 세 가지 도구로 시작한다. 파이썬의 pathlib로 노트 폴더 경로를 잡고, glob으로 마크다운 파일 목록을 찾으며, relative_to로 전체 경로 대신 짧은 파일명만 넘겨 토큰을 아낀다. grep 도구는 정규표현식으로 패턴(예: 'connection pool')을 대소문자 구분 없이 찾아 파일명·줄 번호·해당 줄을 반환한다. read 도구는 대상 파일이 노트 폴더 안에 있는지 is_relative_to로 검증한 뒤 내용을 읽는다.

이 세 도구를 Pydantic AI 같은 프레임워크에 등록하면 에이전트가 질문에 답하며 루프를 돈다. 예시에서 '야간 배포 작업이 왜 특정 시각에 실행되나'라는 질문에 에이전트는 다섯 번의 도구 호출 끝에 유럽 배치 ETL과의 중복 때문이라는 답을 출처와 함께 내놓는다. agent.iter로 도구 호출 과정을 들여다보면 모델이 어떤 검색어를 넣는지 확인할 수 있어 디버깅에 유용하다.

운영 적용을 위해 그는 별도의 production 파일을 제시한다. 요청 횟수 제한과 읽기 최대 줄 수로 무한 루프와 컨텍스트 폭발을 막고, 표준 grep 대신 Rust로 만든 ripgrep을 파이썬 서브프로세스로 호출한다. ripgrep은 빠르고 숨김 파일·gitignore 대상을 건너뛴다. 또한 오류를 raise로 멈추지 않고 사람이 읽을 수 있는 메시지로 return 해 모델이 스스로 교정하도록 한다. 마크다운 대신 PostgreSQL에 넣거나 VPS·컨테이너·서버리스에 올려도 개념은 같고 함수만 조금 손보면 된다고 그는 정리한다.

주요 인사이트

  • 에이전트형 RAG의 강력함은 모델이 도구 호출에 직접 검색어와 매개변수를 채워 넣고, 결과에 따라 다음 행동을 결정하는 자율적 루프에서 나온다.
  • list·grep·read는 클로드 코드나 커서 같은 코딩 에이전트가 코드베이스를 탐색하는 방식 그대로이며, 같은 원리를 일반 지식 문서에 적용한 것이다.
  • 도구의 독스트링은 단순 주석이 아니라 모델에게 전달되는 사용 설명서다. 여기에 도메인 지식을 넣어 검색 방향을 유도할 수 있다.
  • 운영에서 오류를 return 하는 설계는 에이전트가 존재하지 않는 파일 등 예외 상황에서 멈추지 않고 경로를 바꿔 계속 진행하게 만든다.
  • 구조화 출력(답변+인용)을 정의하면 답과 출처를 분리해 프런트엔드에서 클릭 가능한 인용으로 보여주는 등 다운스트림 처리가 쉬워진다.

자주 묻는 질문

에이전트형 RAG와 시맨틱 RAG 중 무엇을 써야 하나?

낮은 지연 시간과 비용이 중요하면 시맨틱 RAG가 좋은 출발점이다. 시간과 예산이 있고 정확도가 우선이면 피드백 루프로 자기 교정이 가능한 에이전트형 RAG가 대체로 더 낫다.

에이전트형 RAG를 만드는 데 꼭 필요한 도구는 무엇인가?

파일 목록을 보는 list, 패턴을 찾는 grep(검색), 파일 내용을 가져오는 read 세 가지다. 이는 대표적인 코딩 에이전트들이 쓰는 도구와 동일한 구조다.

운영 환경에서 표준 grep 대신 ripgrep을 쓰는 이유는?

ripgrep은 Rust로 만들어 매우 빠르고, 숨김 파일이나 gitignore에 포함된 파일을 자동으로 건너뛰는 등 기본 동작이 에이전트 검색에 적합하기 때문이다.

원문과 출처

이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.

YouTube 원본 영상 보기 ↗

관련 AI 소식