탄소중립

[탄소중립 아카데미 6기] RAG란 무엇인가?

codie0226 2026. 4. 6. 17:45
반응형

RAG란 무엇인가?

RAG는 Retrieval Augmented Generation의 약자이다. 기본적인 개념은 LLM 모델에서 답변을 생성하기 위해 외부 자료와 문서를 참고하는 것이다. 현실에서의 이야기로 말하자면 클로즈드 북 시험과 오픈 북 시험의 차이라고 할 수 있겠다.

LLM 모델은 학습이 완료된 상태에서 더 이상 발전하지 않는다. 추가적으로 학습을 진행하지 않는다면 마지막 학습한 상태로 유지되고, 당연히 변화하는 현실 세계에서 큰 문제가 된다. 데이터가 쌓이고 기술이 바뀌는 만큼 LLM 모델도 적응을 해야 항상 정확한 답변을 신속하게 내놓을 수 있을 것이다. 그러나 매번 LLM 모델을 새롭게 학습시켜서 사용할 수도 없는 노릇이다. 비용적으로 효율적이지 않고 시간도 오래 걸리기 때문이다.

이에 대한 해결책으로 RAG가 등장하였다. RAG는 문서를 벡터 데이터로 변환하여 저장하여 LLM이 벡터로 저장된 데이터를 답변에 활용하는 것이다. 사실 이 개념을 이해하기 위해서는 벡터 임베딩과 벡터 데이터에 대한 개념을 먼저 이해해야 한다.

 

Vector와 임베딩

LLM이 문맥을 이해하기 위해서는 문자 그대로가 아니라 LLM이 이해할 수 있는 형태로 데이터를 변환해야 한다. 이러한 텍스트, 이미지, 오디오 등의 비정형 데이터를 변환하는 과정을 임베딩이라고 한다. 벡터 임베딩은 데이터를 '벡터'라는 숫자 좌표로 표현하게 된다. 변환된 벡터 정보는 벡터 공간 내에서 비슷한 정보끼리 가까운 위치에 저장된다. 예를 들어 '사과'와 '배' 같이 '과일'이라는 카테고리에 저장될 수 있는 단어는 가까운 공간에 위치하게 되고, '사과'와 '컴퓨터'처럼 서로 연관되지 않는 정보는 먼 위치에 저장된다.

 

출처) 에스코어 ❘ 벡터 임베딩 모델의 이해와 활용 : 최적의 임베딩 모델 찾기

 

이처럼 벡터는 데이터를 숫자로 변환한 값이다. 그렇다면 왜 하필 벡터로 정보를 처리하는 것일까? 벡터는 크게 다음과 같은 역할을 수행한다.

 

1. 의미적 유사도 표현: 벡터는 단순한 문자 하나를 저장하는 것이 아니라, 문장에 있는 문맥(context)을 토대로 정보를 저장한다. 따라서 비슷한 정보를 검색하고, 문맥을 기반으로 검색하는 semantic searching에 사용된다.

2. 벡터 차원: 벡터는 결국 숫자의 배열이다. 벡터를 구성하는 숫자의 개수를 '차원(dimension)'이라고 표현하고, 통상 작은 벡터 모델은 수십개의 숫자로 이루어지고, 대형 모델은 수백~수천개의 숫자로 벡터를 표현한다. 따라서 복잡한 문서에 담긴 자세한 정보도 문맥에 따라 구별할 수 있는 것이다.

 

또한 벡터는 단순 문장 구조뿐만이 아니라 이미지, 사용자 행동과 습관 등의 데이터들을 모두 표현할 수 있다. 따라서 앞서 말한 semantic search에도 사용되고, 사용자 기반 추천 시스템(recommendation system)에도 사용되는 폭넓은 기술이다.

반응형