RAG(Retrieval-Augmented Generation)

devkwon·2025년 12월 27일

BackEnd

목록 보기
6/7

인공지능 모델을 사용하는 서비스를 개발하기 위해 관련된 지식을 공부하는 중 RAG(Retrieval-Augmented Generation)라는 단어가 생소하여 이를 공부하기 위해 해당 글을 작성하기 시작했다.

RAG(Retrieval-Augmented Generation)?

RAG는 쉽게 말해서 LLM 모델에 input을 넣기 전에 앞에 검색 시스템을 한 번 거치는 기술이라고 보면된다. 이를 통해서 input의 질을 향상시켜 모델을 향상 시키지 않아도 더 정확한 결과값을 도출할 수 있다.

장점

LLM은 다음과 같은 한계가 존재한다.

  • 정보의 정확성 문제: LLM은 훈련된 데이터에만 의존하기 때문에 최신 정보나 특정 도메인의 깊이 있는 정보에 대한 답변을 제공하는 데 한계가 있음.

  • 모델의 크기와 효율성: 대형 언어 모델은 매우 크고 무겁기 때문에 실시간 응답을 제공하는 데 있어 비효율적.

  • 맥락 유지의 어려움: 긴 대화나 복잡한 질문의 경우, 맥락을 유지하면서 정확한 답변을 제공하는 데 어려움.

  • 데이터 편향 문제: LLM은 훈련 데이터의 편향을 그대로 반영할 수 있으며, 이는 부정확하거나 편향된 답변을 초래할 수 있음.

허나 이를 RAG를 통해 다음과 같이 어느정도 완화할 수 있다.

  • 정보의 정확성 향상: RAG는 질문에 답변하기 위해 외부 지식을 검색하는 단계를 추가한다. 이를 통해 최신 정보나 훈련 데이터에 포함되지 않은 정보를 포함한 답변을 제공할 수 있다.

  • 모델의 크기와 효율성 개선: RAG는 필요한 경우에만 외부 문서를 검색하고 이를 기반으로 답변을 생성하기 때문에, 모든 정보를 모델 내부에 포함해야 하는 부담을 줄일 수 있다.

  • 맥락 유지 능력 강화: RAG는 검색된 문서를 바탕으로 답변을 생성하기 때문에, 복잡한 질문이나 긴 대화에서도 관련성 높은 정보를 제공할 수 있다.

  • 데이터 편향 문제 완화: RAG는 다양한 출처에서 정보를 검색하기 때문에, 특정 데이터에 편향되지 않고 더 균형 잡힌 답변을 제공할 가능성이 높다. 또한, 검색된 문서를 통해 답변의 출처를 명확히 할 수 있어 투명성을 높일 수 있다.

즉, RAG는 방대한 양의 데이터에서 필요한 정보를 효율적으로 추출할 수 있어 정보 검색의 정확성을 크게 향상시키고, 검색된 정보를 바탕으로 자연스럽고 유용한 텍스트를 생성할 수 있어 다양한 응용 분야에서 활용될 수 있다.

대표적으로 챗봇, 문서요약 서비스 등

동작 원리

1. 검색 단계 (Retrieval Phase)

  • 정보 검색: 먼저, 질문이 주어지면 RAG는 데이터베이스에서 관련 정보를 검색한다. 이를 위해 RAG는 Dense Passage Retrieval (DPR)과 같은 검색 모델을 사용한다.

  • 문서 인코딩: 질문과 데이터베이스 내 모든 문서를 각각 고차원 벡터로 인코딩한다.

  • 유사도 계산: 질문 벡터와 데이터베이스 내 문서 벡터 간의 유사도를 계산하여, 가장 관련성이 높은 문서들을 선택한다.

Dense Passage Retrieval (DPR)
vector 내적을 기반으로 높은 유사도를 가진 데이터를 검색하는 기술

2. 생성 단계 (Generation Phase)

  • 정보 결합: 검색된 문서들을 바탕으로, RAG는 질문에 대한 답변을 생성한다. 이 단계에서는 생성 모델 (예: BART, T5) 이 사용된다.

  • 문서 입력: 검색 단계에서 선택된 문서들을 입력으로 받아, 질문과 문서의 정보를 결합하여 답변을 생성한다.

단점

  • 높은 비용: 당연하지만, 검색을 하기 위해선 방대한 데이터가 필요하다. 기존에 있는 데이터와 새롭게 발생할 데이터들을 segmetic화하는 등 변환해서 저장하고 유지하는데 높은 비용이 발생한다.

  • 지연 시간: 앞에 검색 기능을 붙여 성능을 향상 시켰다니 좋아보인다. 하지만 그 말은 즉슨, 앞서 소개한 검색 기능이 동작하는데 추가적인 시간이 발생하여 지연 시간이 추가적으로 발생한다는 것이다. 따라서 실시간성이 중요한 서비스에는 적합하지 않다.

  • 데이터에 의존적: 기본적으로 입력이 데이터에 의존적이기 때문에, 검색 데이터가 오래되거나 잘못된 경우 결과도 오래되거나 잘못된 결과를 주게된다. 따라서 데이터를 최신화하고 잘못된 데이터를 바로잡아야한다. 결국 데이터를 관리하기 위한 추가적인 비용도 발생한다.

  • 일관성: Top-K의 순서가 달라지거나, 검색 결과가 달라지는 등과 같은 문제 때문에 같은 입력을 해도 결과가 달라질 수 있다. 따라서 일관성이 중요한 서비스에서는 적합하지 않다.

Top-K: DPR 검색 결과의 상위 K개 문서(Chunk)

레퍼런스:
https://dwin.tistory.com/172
https://introduce-ai.tistory.com/entry/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-DPR-Dense-Passage-Retrieval-for-Open-Domain-Question-Answering

0개의 댓글