RAG란
RAG(Retreival-Augumented Generation)는 검색 기반 증강 생성으로, LLM 모델에서 출력을 최적화하여 응답을 생성하기 전, 학습 데이터 외부의 지식 베이스를 참조하도록 하는 프로세스다.
단순히 외부 데이터를 참조하는 것이 아닌, 벡터 DB 등의 검색 시스템을 이용하여 LLM의 프롬프트에 추가하는 방식이다.
RAG 가 왜 나왔을까?
우리는 ChatGPT 의 초기 버전을 기억한다.
이때 생겨난 문제점은 LLM 이 그렇게 완벽하지 않다는 것이다.
LLM 의 대표적인 문제점은 다음과 같다.
- 답변이 없을 때 허위 정보를 제공한다.
- 사용자가 구체적이고 최신의 응답을 기대할 때, 오래거나 일반적인 정보를 제공한다.
- 신뢰할 수 없는 출처로부터 응답을 생성한다.
- 용어 혼동으로 인해 응답이 정확하지 않다. 다양한 훈련 소스가 동일한 용어를 사용하여 서로 다른 내용을 설명한다.
RAG 는 이러한 문제를 해결하기 위해 만들어진 접근 방식이다.
LLM 을 리다이렉션하여 신뢰할 수 있는 사전 결정된 지식 출처에서 관련 정보를 검색한다.
RAG 는 어떻게 작동할까?
RAG 가 없는 경우 LLM 은 사용자의 입력을 받아 이미 알고 있는 정보를 토대로 응답을 생성했다.
RAG 는 사용자 입력을 활용하여 먼저 새 데이터 소스에서 정보를 가져오는 정보 검색 구성 요소가 도입됐다.
외부 데이터 생성
LLM의 기존 학습 데이터 외의 정보는 외부 데이터라고 칭한다. API, DB, Docs Repository 등 여러 데이터 소스에서 가져올 수있다.
데이터는 파일, DB 레코드 또는 긴 형식의 텍스트 등 다양한 형식으로 존재할 수 있다.
임베딩 모델이라고 하는 또 다른 AI 기법은 데이터를 수치로 변환하고 벡터 DB에 저장한다. 이 프로세스는 생성형 AI 모델이 이해할 수 있는 지식 라이브러리를 생성할 수 있다.
관련 정보 검색
관련성 검색을 수행하는 단계는 다음과 같다. 사용자 쿼리는 벡터 표현으로 변환되고, 벡터 DB 와 매칭된다. 예를 들어 조직의 인사 관련 질문에 답변할 수 있는 챗봇을 생각할 수 있다. 직원이 "연차 휴가는 얼마나 남았나요?" 라고 물어보면 시스템은 개별 직원의 과거 휴가 기록과 함께 연차 휴가 정책 문서를 검색한다. 이러한 특정 문서는 해당 직원과 연관성이 높기 때문에 답변으로 채택된다. 관련성은 수학적 벡터 계산 및 표현을 사용하여 계산되고 설정된다.
LLM 프롬프트 확장
다음으로 RAG 모델은 검색된 관련 데이터를 컨텍스트에 추가하여 사용자 입력을 보강한다. 이 단계에서 신속한 엔지니어링 기술을 사용하여 LLM 과 효과적으로 통신한다. 확장된 프롬프트를 사용하면 대규모 언어 모델이 사용자 쿼리에 대한 정확한 답변을 제공할 수 있다.
외부 데이터 업데이트
RAG 모델은 검색을 통해 최신 정보를 유지하기 위해 문서를 비동기적으로 업데이트하고, 문서의 임베딩 표현을 업데이트한다. 자동화된 프로세스가 주기적으로 벡터 임베딩을 갱신하여 최신 정보를 반영한다.
'CS' 카테고리의 다른 글
Service 끼리 의존 하는 것에 대하여 (0) | 2025.01.14 |
---|---|
@Transactional 은 어떻게 작동할까요? (0) | 2024.12.24 |