두 번째 자동화 주제로 선택한 것은 RAG(Retrieval-Augmented Generation) 구현이다. 개발자에게는 이제 익숙한 개념일 것이다. 대규모 언어 모델이 모든 것을 기억하고 답하는 시대처럼 보이지만, 실제 현장에서 더 중요한 것은 모델이 무엇을 아느냐보다 내가 가진 자료를 얼마나 정확히 다시 불러올 수 있느냐가 더 사용자들은 필요할 것이다

시작은 늘 비어있는 폴더에서…

준비 과정은 다음과 같다

  1. 가상환경 생성
  2. 패키지 설치
  3. pdf원본 파일을 넣은 폴더 생성

먼저 빈 폴더에 다음과 같이 파이썬 가상환경을 설정한다

> python -m venv .venv

RAG로 여기서는 llama-index를 사용할 것이다. 가상환경으로 설정해 llama-index를 설치한다

> .venv\Scripts\activate 
(.venv) > pip install llama-index

RAG인덱스 파일의 원본이 될 pdf파일들을 넣을 pdfs폴더를 만든다

(.venv) > mkdir pdfs

우선 Codex에게 시킨 일: 문서를 읽고 기억하게 만들기

이제 codex를 해당 폴더에서 프로젝트로 실행하고 다음과 같이 프롬프트를 실행시킨다

이제 dist 폴더에 있는 pdf를 llama index를 가지고 벡터화하여 저장을 할 거야.. 그 코드를 만들어줘. pdf파일은 pdfs폴더에 있어. LLM은 openai의 gpt 4.1 mini를 쓸거야 . API키는 .env파일에서 읽어오도록 해

수 분이 지나면 build_pdf_index.py와 requirements.txt 파일이 만들어진다. requirements.txt파일의 내용은 다음과 비슷할 것이다.

llama-index>=0.14.0
llama-index-llms-openai>=0.3.0
llama-index-embeddings-openai>=0.3.0
python-dotenv>=1.0.0
pypdf>=4.0.0

이제 requirements들을 설치한다

(.venv) > pip install -r requirements.txt

.env파일을 만들어 OPENAI의 API키를 설정한다.

image-20260422102224111

만들어진 python코드를 실행해 pdf문서들을 기억시킨다.

(.venv) > python build_pdf_index.py

그러면 dist폴더가 생성되고 그 아래 인덱스 파일이 생긴다. 인덱스 파일은 AI가 기억하기 쉽도록 AI만의 형태로 저장한 파일을 의미한다

이제 검색 기능을 붙여보자

이제 codex를 다시 실행해 다음과 같이 프롬프트를 실행시킨다.

이제 여기에 검색 기능을 붙일거야. 검색어를 input으로 받으면 RAG검색을 해서 결과를 보여 주는 코드를 만들어줘

여기서는 rag_search.py라는 코드가 만들어 졌다. 이를 실행해 본다

image-20260421161546441

참고 문서 조각이 깨져 있다. 이의 문제 해결을 codex에 요청한다.

참고한 문서 조각 출력이 글자가 깨져 있어…

codex가 출력 코드쪽을 수정했는데… 마찬가지로 깨져 있다

수정을 해도 계속 깨져 보이는데 원문 추출단계에서 문제가 있을 까?

그러자 codex는 OCR인덱싱으로 원문 추출기법을 바꾸겠다고 하고 관련 코드를 만들었다. (build_pdf_index_with_ocr.py)

이 파일로 인덱싱을 다시 하고 (python build_pdf_index_with_ocr.py) 테스트 수행을 해 본다.

image-20260421170858599

결국은 인터페이스로 완성된다

한글 문제는 해결을 했다. 이제 이를 웹 애플리케이션으로 만들어 달라고 해야 겠다.

이제 이를 웹 애플리케이션으로 만들려고 해. 파이썬의 flask를 사용해 헌법 검색 시스템을 만들어줘.. 이 때 페이지 테마는 다크 테마로 했으면 좋겠어

이제 작업이 끝났다. 실행을 하기 전에 flask등을 설치해야 하기 때문에 다시 requirements를 설치후 실행해 본다.

pip install -r requirements.txt
python app.py

이러면 flask서버가 시작된다. 서버가 올라오면 브라우저로 http:/127.0.0.1:5000 에 접속해 본다

image-20260422095514601

잘 뜬다.. 실행도 해 보자.

image-20260422095739228

실행을 쉽게.. 더블클릭으로 가능하도록

이제 할 때 마다 명령을 치기 귀찮으니 웹을 띄우는 과정을 클릭 두번으로 처리하게 하자..

이를 매번 명령어로 치기가 불편해… bat파일 등을 만들어 더블클릭으로 실행 가능하게 만들어 줘

run_web_app.bat파일이 만들어졌다. 이제 이 bat파일만 실행하면 자동으로 flask서버를 구동하고 웹 브라우저까지 구동해 준다.

정리하면

지금까지 자동화 과정은 다음과 같다.

  1. pdf문서를 인덱싱
  2. 검색기능 만들기
  3. 웹 인터페이스 붙이기
  4. 실행과정 단순화

이 단순한 흐름에는 바이브 코딩의 환경이 압축되어 있다.

  • 코드는 AI가 초안을 만들고
  • 인간은 문제를 정의하고
  • 오류는 대화로 수정
  • 결과물은 즉시 도구가 된다

예전의 개발이 한 줄씩 쌓아올리는 축조였다면, 지금은 대화를 통해 형태를 다듬는 조형에 가까워 진것 같다.