검색증강생성 (RAG)
기존 대규모 언어 모델(LLM)은 학습된 내용을 바탕으로 답을 하기 때문에 학습되지 않은 최신 데이터에 대한 오류가 발생할 수 있고, 다양한 맥락으로 해석될 여지가 있는 대화에서 오해를 가져올 수 있다. 또한 어느 모델이나 가지고 있는 문제인 할루시네이션이 발생할 가능성이 있다. ChatGPT 서비스 초반 대한민국 대통령이 누구냐는 질문에 이미 대선이 치뤄진 이후였음에도 훈련되었을 때의 정보인 문재인 대통령이라 답한 것이 대표적인 예일 것이다.
이러한 LLM의 단점을 보완하기 위해, 정확히는 출력을 최적화하기 위해 지정된 지식 베이스를 참조하도록 하는 프로세스 기술이 검생증강생성이다. 모델에게 사용자의 질문과 함께 그 질문에 답하기 위한 지식 정보도 같이 주는 것이라 생각하면 편할 듯 하다. 예를 들어서 매일 삼성전자의 주가를 업데이트하는 데이터베이스를 구축해놓고, 모델에게 삼성전자의 주가에 대한 질문이 들어오면, 모델은 이 데이터베이스를 참조하여 대답하는 방식으로 모델의 출력을 최적화할 수 있을 것이다.
덕분에 RAG를 이용하면 지식 베이스를 기반으로 답하기에 할루시네이션도 방지하고, 최신 데이터를 반영하기도 편리하며, 특정 데이터를 참고하기에 맥락을 찾기도 쉽다. 또한 원하는 답변을 얻기 위해 모델을 따로 미세조정(fine-tuning)하는 것보다 품질 유지와 비용 측면에서 유리하다.
그러나 한편으로는 지식 베이스를 기반으로 답하기에 당연히도 지식 베이스의 정보 질에 따라 출력의 질이 영향받을 것이고, 기존 모델보다 더 많은 계산 비용을 지불해야 하며, 외부 데이터베이스를 참조해야 하기 때문에 데이터 프라이버시 문제도 발생할 수 있을 것이다.
구성 요소 및 과정
이름 그대로 구성 요소와 과정을 크게 검색(retrieve), 증강(augment), 생성(generate)로 나눌 수 있다.
먼저 검색 단계에서는 사용자의 입력을 임베딩(embedding)하여 벡터화하고, 이를 지식 베이스인 벡터 데이터베이스로 전송한 후 벡터 데이터베이스에서 이에 맞는 정보를 찾는다. 증강 단계에서는 사용자의 입력과 이를 기반으로 지식 베이스에서 찾은 정보를 결합하여 생성 모델에 전달할 인풋을 생성한다. 생성 단계에서는 이러한 인풋을 생성 모델이 받아 최적화된 답변을 생성하여 사용자에게 전달한다.
여기서 검색기(retriever)는 검색 단계에서 지식 베이스의 정보를 효율적으로 찾는 역할을 하기에 RAG 성능에 큰 영향을 미친다. 특히 임베딩 모델이 사용자의 입력을 적절히 임베딩하여야 데이터베이스에서 그에 알맞은 정보를 찾아낼 수 있다. 생성기(generater)는 말 그대로 생성하는 모델로 ChatGPT 같은 LLM 등 다양한 모델을 사용할 수 있을 것이다. 여기서도 중요한 것은 앞서 증강된 데이터를 인풋으로 받는 것을 감안해야 한다는 것이다. 즉, 검색기는 외부 지식 베이스에서 적절한 정보를 찾아야 하며, 이를 생성기에 최적화된 형태로 전달해야 한다.
'Artificial Intelligence > Natural Language Processing' 카테고리의 다른 글
[NLP] 워드 임베딩(word embedding) 및 벡터 유사도(vector similarity) (0) | 2025.05.20 |
---|---|
[NLP] 기본적인 텍스트 데이터 처리 (0) | 2025.05.20 |