AIRAGLLM

쉽게푼_RAG

·7 min read
RAG란?

"모델 학습 안 시키고 최신 데이터 적용하는 거 아님?"

이라고 한다면 정답에 가깝다.

이름부터 따보면

검색(Retrieval): 관련 정보를 검색해서(검색보다는 가져온다는 뜻에 가깝긴 함)

증강(Augmented): AI에게 **더하고(증강)**하고

생성(Generation): 더 정확한 답변을 생성

이게 RAG다.

RAG Before, after

모델에게 데이터를 학습 시킨다는 것은 매우 복잡하고 시간이 걸리는 일이다.

즉 최신 데이터를 즉각적으로 반영하는 게 어렵다는 뜻이다.

만약 Local LLM을 내 PC에 설치하고

"오늘 엔비디아 주가는 어떻게 ?"라고 물어보면

학습한적이 없으니깐 대답을 못한다.

만약 대답한다면 그건 할루시네이션이다.

RAG에 장점은 단지 최신 데이터뿐만이 아닌데, 데이터를 학습시킬 수 있다는 것은 내가 원하는 도메인에 한정된 지식을 주입 가능하다는 것이다.

추가로 데이터에 대한 출처나 근거를 제시할 수 있다.

즉 "부먹vs찍먹"에 선택지에서 찍먹의 역사와 장점과 관련된 논문을 학습시킨 뒤,

찍먹의 장점을 이야기하라고 하면 실제 논문 출처를 근거로 수십 가지의 장점을 이야기하지만

부먹의 장점을 이야기하라고 하면 그런 자료는 없으며 부먹은 단점뿐이라고 하는 AI를 만들 수 있다.

즉 나만의 작고 소중한 지식 정원을 구축하고 내가 듣기 좋은 소리만 해주는 AI와 함께 행복하게 살 수 있다는 거다.

RAG Before(일반 LLM)
  • 훈련 데이터 이후의 최신 정보를 모름

  • 도메인 특화 정보 부족(우리 회사 내부 자료, 전문 분야 등)

  • 할루시네이션(없는 정보를 그럴듯하게 지어내기)

  • 출처나 근거를 제시하지 못함

RAG After
  • 실시간 최신 정보 활용 가능

  • 우리만의 도메인 지식 활용

  • 검색된 문서를 기반으로 답변

  • 문서나 정보의 출처 제공 가능

RAG는 어떻게 만듬?

당연한 말이지만 텍스트 그냥 던진다고 AI가 기억하는 건 아니다.

기억할 수 있는 형식으로 변환하는 Index 과정을 거쳐야 한다.

처리과정은 다음과 같은 순서로 진행된다.

  1. 데이터 추출: PDF, HTML, Markdown 등에서 데이터를 표준화된 plain text로 변환

  2. 텍스트 청킹(Chunking): LLM의 토큰 제한을 고려해 텍스트를 작고 관리 가능한 단위로 분할

  3. 벡터 임베딩: 분할된 청크들을 벡터로 표현

  4. 벡터 저장: 벡터화 된 청크를 Vector DB에 키-값 쌍으로 저장

누군가에겐 청크, 임베딩, 벡터가 생소한 단어들일 것이다.

청크

청크는 그냥 데이터 조각을 뜻하는데, 나누는 이유를 알아야 한다. AI는 한번에 처리 가능한 메모리에 제한이 있다.

우리가 게시물 데이터 1000만 건을 한번에 안 보내고 페이지네이션으로 따로 나눠서 보내는 걸 생각해보면 된다.

임베딩

텍스트 같은 비정형 데이터를 컴퓨터가 이해할 수 있는 숫자들의 배열(벡터)로 변환하는 과정이다.

단순히 단어를 코드로 바꾸는 게 아니라, 그 단어가 가진 의미를 숫자에 담는다고 생각하면 된다.

벡터

숫자들의 배열 그 자체인데, 이 배열은 다차원 공간에서의 하나의 좌표다.

아까 임베딩이 단어의 의미를 기준으로 숫자에 담는다고 했듯이

"댕댕이"와 "강아쥐"라는 단어가 벡터화 되면 가까운 좌표에 위치할 것이다.

그럼 사용자가 질문할 때 "멍멍이"를 질문하면 해당 단어를 백터화 하고 가까운 의미를 찾아보니 "댕댕이"나 "강아쥐"가 나올 것이다.

좋은 RAG란?

결국 최신데이터를 정확하게 잘 원하는 대로 제공하면 장땡이다.

하지만 미용실에서 "알아서 해주세요"가 진상 리스트에 괜히 올라온 게 아니듯이

RAG란 기술보다는 오히려 처음 데이터가 중요하다.

가비지 인 가비지 아웃 이라는 말이 있듯이

결국에는 비정형 파일이나 문서 구조에서 데이터 손실 없이 정확한 데이터를 추출해 내야하고

청킹으로 데이터 나눌 때 데이터의 특성을 고려하지 않으면 중요 부분에서 반으로 갈라버려 데이터의 품질 자체가 망가진다.

"댕댕이" "강아쥐"등 비 표준적인 의미에 대해 제대로 파악하지 못하는 경우 정보의 관련성이 낮아진다.

데이터가 망가지면 결국 검색 구조가 망가지고 생성 품질이 망가지는 것이다.

← Previous
쉽게푼_Transformer(자연어 처리 모델)
Next →
언어 AI