News Feed

LLM 한계 극복을 위한 RAG의 역할과 최신 동향

컨텐츠 정보

  • 조회 707

본문

검색 증강 생성(Retrieval-Augmented Generation, RAG)는 LLM(Large Language Model)을 특정 데이터 소스로 그라운딩(grounding, 모델을 새 데이터에 연결하는 것)하는 기법으로, 일반적으로 모델 초기의 학습 데이터에 포함되지 않은 정보를 활용한다. RAG는 세 단계로 구성된다. 먼저 지정된 소스에서 관련 정보를 검색한 후, 검색된 데이터를 활용해 프롬프트를 보강(augmentation)한다. 마지막으로 보강된 프롬프트를 사용해 모델이 응답을 생성한다.

한때 RAG는 LLM의 모든 문제점을 해결할 수 있는 만능 해법처럼 보였다. 물론 RAG는 도움이 되지만, 마법 같은 해결책은 아니다. 오히려 RAG가 새로운 문제를 초래할 수도 있다. 게다가 LLM이 점점 더 나은 기능과 더 넓은 컨텍스트 창을 제공하고 검색 통합 기능을 개선함에 따라 여러 활용례에서 RAG의 필요성이 줄어들고 있다.

한편으로는 새롭게 개선된 RAG 아키텍처도 등장하고 있다. 그중 하나는 RAG와 그래프 데이터베이스를 결합한 방식으로, 특히 관계성과 의미론적 콘텐츠가 중요한 경우 더 정확하고 관련성 높은 결과를 제공할 수 있다. 또 다른 예는 에이전틱 RAG(Agentic RAG)로, LLM이 텍스트 데이터베이스와 같은 외부 지식 소스뿐만 아니라 다양한 도구와 기능을 활용할 수 있도록 확장한 방식이다.

LLM의 문제 : 환각, 제한적인 컨텍스트

LLM은 훈련에 막대한 자원과 시간이 소요된다. 엔비디아 H200과 같은 최첨단 서버 GPU 수백 대를 사용해 몇 달 동안 훈련해야 하는 경우도 있다. 이런 이유로 LLM을 완전히 최신 상태로 유지하기 위해 처음부터 다시 훈련하는 것은 사실상 불가능하다. 대신 더 적은 비용이 드는 방법으로 기존 모델을 최신 데이터로 미세 조정(fine-tuning)하는 방식이 활용된다.

그러나 미세 조정에도 단점이 있다. 기존 모델이 잘 수행하던 기능이 약화될 수 있다는 점이다. 예를 들어, 범용 쿼리 처리에 강한 라마(Llama) 모델을 코드 생성 기능이 강화된 코드 라마(Code Llama)로 미세 조정할 경우, 기존의 범용 쿼리 처리 성능이 저하될 수 있다.

2024년까지의 데이터로 학습된 LLM에 2025년 발생한 사건을 묻는다면 어떻게 될까? 2가지 가능성이 있다. 첫 번째는 모델이 모른다는 사실을 인식하는 경우다. 이런 경우에는 일반적으로 “2024년 1월 기준으로, 제가 학습한 정보에 따르면….”과 같은 답변을 제공한다. 두 번째는 자신이 모른다는 사실을 인식하지 못하는 경우다. 이때 모델은 유사하지만 쿼리와 무관한 과거의 데이터를 기반으로 답을 생성하거나 전혀 근거 없는 정보를 만들어낼 수 있다. 후자의 경우가 바로 LLM의 환각(hallucination) 현상이다.

검열 문제도 점점 더 부각되고 있다. 예를 들어, 중국 정부는 사람들이 천안문 항쟁, 4인방과 문화대혁명, 독립된 공화국으로서의 대만 등 자국에 불리한 역사적 사건이 언급되는 것을 원하지 않는다. 이로 인해 중국에서 개발된 LLM은 정부의 보복을 피하기 위해 자체 검열을 거치는 경우가 많다. 다른 국가에서 개발된 LLM도 중국에서 판매되기 전에 검열하는 경우도 있다. 중국은 가장 눈에 띄는 사례일 뿐 다른 국가에서도 검열된 LLM이 존재한다.

LLM의 환각을 방지하려면 프롬프트에 해당 사건의 날짜나 관련 웹사이트 URL을 포함하는 것이 도움 될 수 있다. 관련 문서를 직접 제공하는 방법도 있지만, 텍스트를 입력하든 URL을 입력하든 모델의 컨텍스트 한계를 초과하면 이후 내용은 처리되지 않는다.

참고로 컨텍스트 한계를 모델마다 다른다. 가령 라마 1의 컨텍스트 한계는 2,048토큰이었고 라마 2는 이를 2배 늘렸다. 제미나이 2(Gemini 2)는 플래시(Flash) 또는 프로(Pro) 모델에 따라 100만~200만 토큰의 컨텍스트 창을 제공한다.

모델의 컨텍스트 창이 모든 참고 문서를 수용할 수 있다면, 추가적인 기능 강화가 필요할까? 때로는 필요하다. ‘건초 더미에서 바늘 찾기’ 문제는 컨텍스트 내에 필요한 정보가 포함되어 있더라도, 모델이 방대한 데이터 속에서 특정 사실을 찾지 못하는 일반적인 현상을 설명하는 표현이다. 정보가 지나치게 많으면 모델이 핵심 내용을 정확히 인식하지 못할 수 있다. 일부 모델은 이런 문제를 최소화하도록 조정됐다.

해결책 : LLM과 사실의 그라운딩

이런 문제를 해결하는 한 가지 방법이 RAG다. RAG는 사용자가 인터넷이나 문서를 검색한 후, 검색 결과를 바탕으로 언어 모델에 답변을 요청하는 두 단계를 결합한다. 검색 결과가 언어 모델의 컨텍스트 한계를 초과하는 문제를 우회할 수 있는 방법이다.

RAG의 첫 번째 단계는 쿼리할 소스 정보를 고밀도, 고차원 형태로 벡터화하는 것이다. 일반적으로 임베딩 벡터를 생성한 후 이를 벡터 데이터베이스에 저장해 고차원 공간에서 밀집된 형태로 변환한다.

그런 다음 쿼리 자체를 벡터화하고, FAISS, 큐드런트(Qdrant) 또는 기타 유사성 검색 도구를 활용해 벡터 데이터베이스에서 관련 정보를 검색할 수 있다. 일반적으로 코사인 유사도(cosine similarity)를 기준으로 가장 관련성 높은 정보(상위 K개 항목)를 추출하고 이를 LLM에 제공해 쿼리 텍스트를 보강하는 방식이다.

마지막으로, LLM은 페이스북 AI 논문에서 seq2seq 모델(순서 정보를 가지고 있는 문장을 다른 문장으로 변환하는 자연어 처리 알고리즘)이라고 언급된 구조를 활용해 답변을 생성한다. 전체적으로 보면 RAG는 환각을 완화하는 데 효과적이지만, 이를 완전히 방지하는 것은 아니다.

RAG 개선하기

RAG 성능을 더욱 향상시키려면 임베딩 모델을 미세 조정해 검색된 정보의 관련성을 높일 수 있다. 예를 들어, 회사 고객 지원 질의 데이터를 활용할 때 검색된 정보의 품질이 최대 41% 향상될 수 있다. 참고로 구글은 평균 12% 개선된다고 보고했다.

혹은 다양한 변형 RAG 아키텍처를 적용해 LLM 기반 애플리케이션의 성능을 개선하는 방법도 있다. 현재 수십 가지의 변형 방식이 존재하지만, 대표적인 몇 가지는 다음과 같다.

  • 검색 및 재순위(Retrieve and Re-rank) : 검색된 정보를 더욱 정교하게 선별하기 위해 재순위 모델(re-ranking model)이 필요함
  • 멀티모달 RAG(Multi-modal RAG) : 텍스트뿐만 아니라 이미지, 음성 등 다양한 입력을 처리하기 위해 멀티모달 LLM이 요구됨
  • 그래프 RAG(Graph RAG) : 관계성과 의미를 더욱 정확하게 반영하기 위해 그래프 데이터베이스를 벡터 데이터베이스와 함께 활용함
  • 에이전틱 RAG(Agentic RAG) : AI 모델이 외부 지식 소스뿐만 아니라 AI 에이전트와 도구를 활용할 수 있도록 확장한 방식

RAG 애플리케이션 개발 과정에서 다양한 문제가 발생할 수 있다. 검색 속도가 지나치게 느리거나, 벡터 저장소 업데이트가 원활하지 않을 수 있다. 앱이 민감한 데이터를 검색하거나 관련 없거나 적절하지 않은 결과를 반환할 수도 있다. 출력물의 품질이 낮은 경우도 있다. 이런 문제가 발생하는 근본적인 원인은 각기 다를 수 있지만, 대부분은 약간의 노력만 기울이면 해결할 수 있다.

RAG는 LLM을 실제 데이터로 보강해 환각을 줄이고 응답 정확도를 향상시키는 강력한 접근 방식이다. RAG에도 문제가 없는 것은 아니지만, 대부분은 적절한 조정을 통해 보완할 수 있다. AI 기술이 발전함에 따라 RAG의 역할도 변화할 가능성이 크며, 새로운 아키텍처가 기존의 약점을 보완하고 효율성을 더욱 강화할 수 있을 것이다.
dl-itworldkorea@foundryco.com

관련자료

댓글 0
등록된 댓글이 없습니다.