목차
오늘은 RAG(검색 증강 생성: Retrieval-Augmented Generation) 기술에 대해 이야기해 보겠습니다. 저희 블로그에서는 Meta의 라마(llama) 모델을 주제로 여러 이야기를 해왔는데요, 항상 아쉬운 것은 라마 모델은 학습된 데이터만을 사용하기 때문에 최근 정보와 다른 답변을 하는 상황이 종종 있었습니다. 라마(llama) 뿐만 아니라 여러 생성형 인공지능이 갖고 있던 문제였습니다.

RAG(검색 증강 생성: Retrieval-Augmented Generation)
RAG(검색 증강 생성: Retrieval-Augmented Generation)는 말 그대로 검색(Search)과 생성(Generation)을 결합한 방식입니다. 일반적으로 생성형 인공지능은 이미 학습된 데이터를 토대로 문장을 만들어내지만, 학습 시점 이후에 발생한 최신 정보나 전혀 다른 분야의 데이터를 다룰 때는 제약이 있습니다.
반면에 RAG는 필요할 때마다 외부 데이터베이스나 문서 저장소를 검색하고, 그 결과를 실시간으로 반영해 답변을 생성합니다. 예를 들어, 오늘 새벽에 발생한 속보 뉴스를 인공지능이 제대로 설명해야 한다면, 단순히 오래된 학습 데이터만으로는 부족합니다. 하지만 RAG라면 관련 뉴스를 찾아보고 그 내용을 기반으로 답변을 구성할 수 있습니다. 이런 점에서 RAG는 기존의 생성형 기술과 확연히 구별되는 혁신적 접근 방법이라고 할 수 있습니다.
사실 처음 챗GPT 같은 생성형 인공지능을 접했을 때 개인적으로는 자동화 주식거래 프로그램을 더 정확하게 만들 수 있지 않을까 생각했습니다. 하지만, 이미 학습된 데이터만 활용하던 챗GPT는 실시간 주식 정보를 획득할 수는 없더라고요. 지금은 RAG 기술이 많이 접목되어 있기는 하지만 실시간 정보 학습과 분석은 아직까지 활용할 수 있는 수준은 아닌 것 같습니다.
RAG의 작동 원리
RAG가 답변을 만들기까지 거치는 과정은 크게 검색 단계와 생성 단계로 나누어 볼 수 있습니다.
검색단계
기존의 검색 엔진은 주로 키워드 매칭을 통해 결과를 보여줍니다. 예를 들면 “기후 변화”를 검색하면 텍스트에 “기후 변화”이라는 단어가 들어간 문서를 우선적으로 보여줍니다. 그러나 이 방법은 단순 텍스트 일치에 의존하기 때문에, 의미가 비슷하지만 표현이 다른 내용을 놓치기 쉽습니다.
반면, RAG에서 주로 활용되는 벡터 검색은, 단어와 문장을 벡터 검색(Vector Search) 기술을 이용하여 문서 간 의미적 유사도를 분석하는 방식입니다. 앞서 예시로 본 “기후 변화”를 검색해도 “이상 기온”처럼 표현이 조금 달라도, 의미나 문장이 담고 있는 개념이 유사하다면 이를 검색 결과로 나타냅니다.
이 검색 단계에서 문서나 데이터가 선택되어야만, 다음 단계인 생성이 제대로 이루어질 수 있습니다. 즉, 검색의 품질이 곧 Retrieval-Augmented Generation 전반의 성능을 좌우한다고 해도 과언이 아닙니다.
생성 단계
검색된 문서는 일반적으로 상당히 방대할 수 있습니다. RAG는 그 문서를 전체적으로 읽고 핵심을 요약해 낸 뒤, 사용자에게 가장 필요한 형태로 재구성하여 답변을 만듭니다. 이 과정을 통해, 지엽적이거나 불필요한 정보는 걸러내고 정말 유의미한 부분만 보여줄 수 있습니다.
예를 들어, 질의가 “최근 발행된 기후 변화 연구의 주요 결론”이라면, RAG는 해당 연구 논문들을 검색한 후 핵심 부분만 잘 정리해 짧은 문단으로 제시합니다. 따라서 사용자는 번거롭게 긴 논문 전체를 읽지 않아도, 연구 결과의 요지를 빠르게 파악할 수 있습니다.
RAG의 장점과 한계
앞서 언급한 작동 원리를 생각해 보면 Retrieval-Augmented Generation의 장점이나 한계는 분명하게 생각됩니다. 실시간 정보를 얻을 수 있다는 점. 검색을 통한 정보이므로 사실에 기반한 정보일 수 있으므로 기존 생성형 인공지능의 문제점으로 지적되었던 환각현상(Hallucination) 문제 등은 해결이 될 겁니다. 뿐만 아니라 여러 산업분야에서 적용될 수 있는 부분도 상당히 많아질 것이고, 서비스 역시 더 고도화할 수 있을 거예요.
하지만, 검색 및 검토 후 답변을 생성하므로 검색량에 따라 반응 속도가 다르게 될 거예요. 반응이 느려질 수 있다는 거죠. 또 인공지능이 여러 일을 수행하므로 토큰량이 증가할 거예요. OpenAI API를 직접 사용해 본 개발자라면 토큰이 곧 비용이라는 것을 잘 아실 거고, 이 문제에 대해 즉시 직감할 거예요.
벡터 검색(Vector Search) 기술
앞서 언급한 벡터 검색(Vector Search) 기술은 기존에 없던 새로운 기술은 아닙니다. 생성형 인공지능이 지금처럼 일반화되기 전에도 이미 상용화된 기술인데요, 우리가 잘 알고 있는 검색엔진 중 구글 검색에서는 이 기술이 이미 적용되어 있습니다. 또, 마이크로소프트의 검색 엔진은 Bing이나 전자상거래 플랫폼인 eBay 등도 이미 이 기술을 활용하고 있죠.
하지만, 생성형 인공지능에서 가장 중요한 LLM(대형 언어 모델) 기술이 벡터 검색(Vector Search) 기술을 만나면서 시너지를 내며 더욱 급속도로 발전하게 된 거예요.
결국, LLM(대형 언어 모델) 기술이 좋아질수록 벡터 검색(Vector Search) 기술의 품질을 향상하고, 벡터 검색의 활용 폭과 성능이 함께 발전하게 되는 거죠.
- 챗지피티 프롬프트로 지브리 스타일, 픽사 스타일 이미지 생성 방법
- 생성형 AI 소유권, 챗지피티 지브리 스타일 이미지 사례 #1
- OpenAI API로 구현하는 AI Agent #2, “프로그래밍 AI 에이전트”
- OpenAI API로 구현하는 AI Agent, GPT-4o와 Function Tool 활용
- AI Detector로 AI content 판별이 가능할까? 기준과 현실 #1