////
Search

AI - RAG(Retrieval Augmented Generation)

Date
2025/03/06 13:15
Tags
AI
LLM

1. RAG(Retrieval Augmented Generation)의 정의

대규모 언어 모델의 출력을 최적화하여 응답을 생성하기 전에 학습 데이터 소스 외부의 신뢰할 수 있는 지식 베이스를 참조하도록 하는 프로세스입니다.
LLM의 한계 극복을 위한 저비용의 효율적 방법

2. RAG를 사용하는 이유

2.1. LLM의 한계

LLM은 사용자의 질문에 창조적인 대답은 진행합니다.
때문에 모르는 질문에 대해서도 답변하기 위한 생성을 진행하며 이를 hallucination(환각)현상이라 합니다.
또한 악의적인 사용자에 의해 LLM이 프롬프트를 벗어난 행동을 할 수 있습니다.
학습 데이터로 인한 잡음현상

2.2. RAG? 파인튜닝?

RAG의 경우 프롬프트와 함께 데이터를 전달하여 모르는 정보를 함께 전달하여 신뢰할 수 있는 지식 베이스를 참조하도록 하는 프로세스
파인튜닝은 새로운 데이터를 학습시켜 원하는 방향으로 LLM을 커스텀하는걸 의미함
때문에 상대적으로 학습에 비용을 투자하지 않은 RAG가 저비용 고효율의 효과를 냄

3. RAG의 순서도

외부 데이터 생성
API, 데이터베이스, 문서 등의 다양한 데이터 소스에서 원하는 데이터를 가져온다. 데이터는 파일, 데이터베이스 레코드, 텍스트 등 여러 형식이 가능하다. LLM이 이해할 수 있도록 복잡한 데이터를 임베딩 언어 모델을 사용하여 벡터 형태로 변환한다. 변환된 벡터 데이터를 벡터 데이터베이스에 저장하여 LLM이 이해할 수 있는 지식 라이브러리를 생성한다.
관련 정보 검색
사용자가 프롬프트(질문 또는 쿼리)를 입력하면, 질의 인코더(Query Encoder)가 사용자 프롬프트를 벡터 형태로 인코딩한다. 인코딩된 프롬프트와 관련된 정보를 벡터 데이터베이스에서 검색하여 가져온다. 관련 정보를 검색하기 위해 다음과 같은 방법을 사용할 수 있다. 검색 키워드가 많이 포함된 문서를 찾는 키워드 검색, 의미를 분석하여 벡터 간의 유사도를 계산하는 시맨틱 검색, 이 두 방법을 결합한 하이브리드 검색 방법이다.
LLM 프롬프트 확장
검색된 데이터를 컨텍스트(Context)에 추가하여 사용자 프롬프트를 보강한다. 이렇게 확장된 프롬프트를 LLM에 전달하면, LLM이 검색된 데이터를 활용하여 답변을 생성한다.
외부 데이터 업데이트
최신 데이터를 유지하기 위해 문서를 비동기적으로 업데이트한다.