요즘 RAG(Retrieval-Augmented Generation) 기반의 시스템을 계속 만지다가, 문득 이런 생각이 들었습니다.
"꼭 GPT-4 같은 대형 모델을 써야만 쓸 만한 RAG가 만들어질까?"
비용이나 응답 속도, 모델의 자율성까지 고려해보면 GPT 계열에 의존하지 않고도 꽤 괜찮은 결과를 낼 수 있겠다는 생각이 들어, 이번엔 직접 LangChain + LlamaIndex + LLaMA 조합으로 경량형 RAG 시스템을 구성해봤습니다.
✅ 목표
이번 프로젝트에서 세운 목표는 다음과 같습니다:
로컬 환경에서 완전히 작동할 것
경량화된 모델로도 충분히 답변이 가능할 것
파이프라인은 최대한 단순하게 구성할 것
벡터 검색 성능도 일정 수준 확보할 것
역할 도구
LLM LLaMA2 / LLaMA3 (gguf or HF format)
파이프라인 구성 LangChain
문서 검색 / 인덱싱 LlamaIndex
벡터 DB FAISS (또는 Chroma, 선택 가능)
임베딩 모델 Instructor, MiniLM 등 경량 모델 사용
✅ 문서 분할 전략
문서를 일정한 크기로 나누는 작업부터 신중히 설계하였습니다.
한 번에 너무 많은 텍스트를 넣으면 검색 정확도가 떨어지고, 너무 작게 분할하면 문맥이 끊어져 답변이 부정확해졌습니다.
실험 결과, 512~1024토큰 단위로 나누는 것이 성능과 효율성의 균형이 좋았습니다.
또한 슬라이딩 윈도우 방식으로 중첩 분할을 적용해 문맥의 연속성을 유지하였습니다.
✅ 임베딩 모델 선택
문서와 질의를 벡터로 변환하는 임베딩 모델은 시스템의 핵심이었습니다.
all-MiniLM-L6-v2 모델을 주로 사용하였으며, CPU에서도 빠르게 작동하고 검색 정확도가 안정적이었습니다.
또한 BAAI의 bge-small-en 모델도 성능 측면에서 뛰어나 활용해보았습니다.
문서 임베딩과 질의 임베딩을 따로 최적화할 수 있는 e5-small 모델 계열도 테스트하였으나, 구현 복잡도를 고려해 기본 모델로 유지하였습니다.
✅ 벡터 검색 시스템
검색 성능은 전적으로 벡터 DB에 달려 있었기 때문에, FAISS를 선택하여 로컬에서 빠르고 안정적으로 검색이 가능하도록 구성하였습니다.
소규모 문서(수천 단위)에는 적합했고, 불필요한 외부 서비스 없이도 자체 호스팅이 가능하다는 점에서 장점이 있었습니다.
문서 임베딩 결과는 로컬에 저장하여, 시스템 시작 시 재사용할 수 있도록 처리하였습니다.
✅ 프롬프트 구성
문서 검색 후 LLM에 전달할 프롬프트는 명확하고 간결하게 구성하였습니다.
“다음 문서를 참고하여 질문에 답하십시오” 형태의 시스템 메시지를 고정 프롬프트로 사용하였고, 검색된 문서 2~4개를 컨텍스트로 붙였습니다.
문서 수가 많아지면 오히려 모델이 집중하지 못했기 때문에, 적절한 문서 수 제한이 성능 향상에 도움이 되었습니다.
✅ 경량 LLM 구성
LLM은 LLaMA-2 7B Chat 모델의 quantized 버전(q4_K_M)을 사용하였습니다.
llama-cpp-python을 통해 로컬에서 구동하였고, n_threads 및 context window 등의 파라미터를 조정하여 최적화를 진행하였습니다.
GPU 없이도 동작이 가능해야 했기 때문에 quantized 모델은 필수였습니다.
LLaMA 외에도 Mistral, Phi-2 등도 테스트하였으며, 모델마다 응답 스타일과 속도에 차이가 존재하였습니다.
✅ 파이프라인 설계
LangChain과 LlamaIndex를 조합하여 전체 RAG 파이프라인을 구성하였습니다.
다만 LangChain의 복잡한 체인 구조는 지양하고, 가능한 한 단순한 형태로 구성하였습니다.
질의 → 검색 → 컨텍스트 구성 → LLM 호출 → 응답 출력의 최소 흐름으로 유지하여 성능 저하를 방지하였습니다.
📌 결론
이번 RAG 시스템을 통해 확인한 바는 다음과 같습니다.
경량 모델로도 충분히 유의미한 질의응답 시스템을 구현할 수 있었습니다.
성능을 좌우하는 것은 모델보다도 문서 분할, 검색 정확도, 프롬프트 구성이었습니다.
전체 파이프라인은 단순할수록 유지 보수가 쉬웠으며, 모델 특성을 고려한 조율이 매우 중요했습니다.
향후에는 웹 인터페이스 연동 및 실시간 문서 반영 기능을 추가해, 내부 문서 기반의 실용 챗봇 형태로 확장할 계획입니다.