본문 바로가기
IT

Hallucination을 최소화하는 법, RAG(Retrieval Augmented Generation)

by 황금반달곰 2024. 10. 26.

 Chat GPT로 인해 '23년부터 올해까지 다양한 AI챗봇 솔루션이 출시됐었다. 매우 많이 만나본 것은 아니지만, 어느 정도 이름이 알려진 기업부터 신생 스타트업까지 한 5~6개 기업을 만나봤었다. 기업은 다른데 그들의 솔루션을 도입하면 '쉽게/빠르게/비용 최소화를 하면서도 임직원/고객에게 최상의 경험을 줄 수 있다'는 주장은 동일했다.
 
 몇 군데 기업의 솔루션으로 Quick-PoC를 해본 결과, 기대에 못 미치는 결과가 나왔다. 익히 알려진 Hallucination(환각)을 최소화해야 하는데, 생각보다 그 정도가 심했다. 그들이 말하는 원인에 대해서 마냥 틀렸다고 말하고 싶지는 않다. 이미 알고 있었거나 이해할 수 있는 내용들이 많았기 때문에. 다만 그렇다면 초도 미팅 때부터 그렇게 과대한 기대효과 제시를 약팔이처럼 하지 말았어야 하지 않나?라는 생각은 늘 들었다. 가능한 선 대비 고객이 불가능한 영역에 기대를 표한다면 초반부터 정리하고 대안을 제시/보완하는 task를 보이는 게 불필요한 시간을 줄일 수 있다. 영업 대표이건 기술 영업이건 솔루션 아키텍트건 간에 진짜 전문성 있는 사람들보다 아닌 사람들이 더 많아서 이 AI 챗봇에 회의감이 들 정도였다. (옛날 1세대 챗봇도 마찬가지였긴 했다.)
 
 그러던 와중에 내부 직원 중 의지 있고 똘똘한 인력들이 유튜브/AWS/Azure 등에서 RAG 기반 챗봇을 학습/시도하면서, 자체적으로 AI 챗봇을 진행 중에 있다. 결론적으로 RAG라고 해서 Hallucination이 100% 없지는 않다. 다만 기업이 가진 경험/지식을 문서화한 pdf를 기반으로, 근거를 링크 걸며 설명 가능하게 정확한 답변을 하는 확률이 더 높았다. 무엇보다 외부 업체에게 돈 주고 휘둘리지 않고, 내부 자체 역량으로 진행하는 점이 유의미하다. 대부분의 업체는 원천 데이터의 클린징/전처리 등에 대해서 말만 하고, 깊이 있게 조치하면서 개입하지 않기 때문이다. 전문가로서의 자존감 없이 무책임하게 일하는 외주 협력사들을 한 두번 본 게 아니지. 그 와중에 기업은 돈을 주고서도 아쉬운 수준의 서비스를 쓰고, 해당 레퍼런스와 경험치는 업체만 가져가는 경우도 많이 봤고. (나는 더 좋은 성능/정확도를 보장하는 솔루션이 있다면 그것을 돈 주고 사용하는 게 더 낫다는 주의이기는 하다.)

RAG란 무엇인가?

RAG는 'Retrieval-Augmented Generation'의 약자로, 검색 증강(기반) 생성을 의미하는 AI 기술. 쉽게 말해, RAG는 질문에 답을 할 때 외부 데이터베이스에서 관련 정보를 먼저 검색한 후, 그 정보를 바탕으로 답을 생성하는 방식임. 일반적인 AI 챗봇이 미리 학습된 정보로만 답을 생성하는 것과 달리, RAG는 검색과 생성 두 가지 기능을 결합하여 보다 정확하고 최신의 답변을 제공할 수 있음.
기업의 KMS나 게시판 등에 분산된 데이터들을 문서화(PDF가 제일 좋음)해 벡터화한 후 활용하는 RAG 챗봇은, 사용자의 질문에 대해 학습한 기업의 도메인 지식/문서를 검색한 후, 그 내용을 바탕으로 답변을 생성함.

DALL-E 생성 : 기업 업무 효율화에 자리잡은 RAG Assistant

RAG가 왜 Hallucination(환각)을 줄이는 데 도움이 되는가?

Hallucination은 AI가 존재하지 않는 정보를 만들어내는 현상임. 특히 LLM(대형 언어 모델)이 학습한 데이터 범위에서 벗어난/잘 모르는 질문에 대해 답할 때, 확실한 근거가 없음에도 불구하고 소설을 쓰는 경우를 의미함.
RAG는 하기 사유로 인해 Hallucination 문제를 줄이는 데 도움이 됨.

  1. 실존 정보 검색
  2. RAG 챗봇은 답을 생성할 때 실존하는 문서를 기반으로 한 DB에서 정보를 검색함. 검색 데이터를 바탕으로 답을 생성하기 때문에, 잘못된 정보를 즉흥적으로 만들어낼 가능성이 상대적으로 줄어듦.
  3. 사실 기반의 답변 생성
  4. RAG는 답변을 할 때 실제 문서를 활용하기 때문에, 만들어낸 답변이 근거 있는 정보에 기반함. 이는 AI 모델이 잘 모르는 질문에 대해 답을 할 때도, 존재하는 데이터를 바탕으로 정확한 답을 제시할 수 있게 해 줌.
  5. 실시간 정보 업데이트
    RAG는 실시간으로 정보를 검색해 답하는 구조로, 원천 데이터의 빠른 업데이트를 기반으로 최신화된 정보를 반영할 수 있음.

RAG를 잘 구성하려면 원천 데이터를 어떻게 전처리해야 하는가?

RAG 모델을 효과적으로 구성하려면 원천 데이터를 잘 준비하고 처리해야 함. 

  1. 원천 데이터의 신뢰성 확보
  2. RAG가 검색하는 원천 데이터는 신뢰할 수 있는 정보여야 함. 즉 기업 내에서도 중구난방의 자료를 갖고 오는 것이 아니라, 정확하고 신뢰성 높은 데이터를 가져와야 함. 오래 되거나 잘못된 정보, 작성자가 불분명한 자료를 포함시키지 않아야 함. Garbage In > Garbage Out을 잊지 말 것,
  3. 데이터 정제 (Cleaning)
  4. 원천 자료에는 종종 오타/중복/통일성 없는 업무 용어 등이 포함될 수 있음. 이런 정보들은 RAG가 정확한 답을 찾는 것을 방해할 수 있기에, 원천 데이터를 정리하고 의미 없는 정보/오류를 제거하는 작업이 필요.
  5. 데이터 구조화 (Structuring)
  6. RAG가 데이터를 쉽게 검색하고 활용할 수 있도록 데이터를 구조화된 형태로 준비하는 것이 중요함. 특히 기업의 내부 자료는 보통 정형화되어 있지가 않아 어려움을 야기함. 이미지와 글자가 혼재되어 있거나 중구난방의 표 형태가 많음. 이를 구조화(마크다운 등을 통해)할수록 RAG가 정보를 더 정확하고 빠르게 검색할 수 있음.
  7. 메타 데이터 추가
  8. 각 문서나 데이터에는 메타 데이터(부가 속성 정보)를 추가하는 것이 유용함. 문서의 주제/작성일/출처/작성자 등을 포함시키면 RAG가 검색할 때 더욱 정확한 정보를 찾을 수 있게 함.
  9. 문서 요약 (Summarization)
  10. 큰 문서나 많은 양의 데이터를 처리할 때, 문서를 요약하는 것도 좋은 전처리 방법. RAG가 긴 문서 전체를 검색하는 대신, 요약된 정보를 통해 핵심만 빠르게 찾아낼 수 있음.