A 19th Century Author Taught Me RAG.
개요
Retrieval Augmented Generation (RAG) 기법은 LLM의 정확도를 향상시키기 위해 별도의 데이터베이스에서 관련 정보를 검색하여 프롬프트에 추가하는 방식으로 작동합니다. 본 콘텐츠는 Nathaniel Hawthorne의 단편 소설 "Rappaccini's Daughter"를 사용하여 로컬 환경에서 RAG의 구현 및 효과를 실험한 사례 연구를 제공합니다.
주요 내용
* RAG의 필요성 확인: 140억 개의 파라미터를 가진 LLM(phi4)은 Nathaniel Hawthorne의 "Rappaccini's Daughter"에 대한 사실적 기억 및 특정 구절 암송에서 오류를 보였습니다. 특히, 작가를 잘못 식별하거나 19세기 텍스트에 존재하지 않는 개념(예: "유전적으로 변형된")을 언급하는 등 환각 현상이 관찰되었습니다.
* 로컬 RAG 환경 구축: 실험은 Python, ChromaDB 1.5.2(벡터 데이터베이스), nomic-embed-text(임베딩 모델), Ollama를 통한 phi4(LLM)를 사용하여 전적으로 로컬 환경에서 진행되었습니다.
* 문서 준비 및 청킹 전략: Project Gutenberg에서 확보한 "Rappaccini's Daughter" 텍스트는 서식 제거 등 전처리 후, RAG 처리를 위해 고정 크기(500자) 및 단락 경계(2개의 개행 문자 기준) 청킹 전략이 사용되었습니다.
* 고정 크기 청킹은 148개의 청크를 생성했으며, 일부 문장이 잘리는 단점이 있었습니다.
* 단락 경계 청킹은 117개의 청크를 생성했으며, 작가의 문체에 따라 효과가 달라질 수 있습니다.
* 임베딩 및 벡터 검색: nomic-embed-text 모델을 사용하여 텍스트 청크를 768차원 벡터로 변환했으며, ChromaDB에 저장하고 코사인 유사도(cosine similarity)를 사용하여 벡터 검색을 수행했습니다.
* 검색 품질 평가: "Professor Baglioni가 Rappaccini의 과학자로서의 명성에 대해 Giovanni에게 무엇이라고 말하는가?"라는 질문에 대해 두 청킹 방법 모두 관련 정보를 상위 3개 결과 내에 포함했으나, 고정 크기 청킹이 더 정확한 컨텍스트를 제공하는 경향을 보였습니다.
* 생성 결과 분석: RAG를 적용한 후에도 "첫 4문장 암송"과 같은 위치 기반 질문에서는 LLM이 여전히 정보를 제공하지 않거나 관련 없는 답변을 하는 경우가 발생했습니다. 이는 검색 실패 또는 모델의 의도적인 회피(divertion training)일 수 있습니다.
* 질의 유형별 전략 비교:
* 사실 기반 질문 (집중된 세부 정보): 고정 크기 청킹이 더 나은 성능을 보였습니다.
* 추론 기반 질문 (광범위한 내용): 단락 경계 청킹이 더 나은 성능을 보였습니다.
* 위치 기반 질문: RAG의 구조적 약점을 보여주며, 직접적인 검색이 필요함을 시사합니다.
* 회귀 테스트: 단락 경계 청킹은 더 나은 거리 점수를 보이며 전체 맥락을 보존하는 경향이 있었으나, 여러 장면이 혼합된 경우 LLM이 혼란을 겪을 수 있었습니다.
시사점
RAG는 LLM의 성능을 향상시키는 효과적인 방법이지만, 청킹 전략, 데이터의 청결성, 질의 유형 등 다양한 요인이 결과에 영향을 미칩니다. 특히, 데이터의 품질이 RAG 시스템의 성능을 좌우하며, 단순히 거리 점수만으로 검색 품질을 판단해서는 안 됩니다.
댓글
GitHub Discussions