RAG란?

realBro·2024년 7월 23일

RAG란?

  • Retrieval(검색) Augmented(증강) Generation(생성)
  • LLM 어플리케이션 개발에서 중요한 개념
  • LLM 등장 전 NLP에서 부터 사용되던 개념
  • 대규모 언어 모델의 출력을 최적화하여 응답을 생성하기 전에 학습 데이터 소스 외부의 신뢰할 수 있는 지식 베이스를 참조하도록 하는 프로세스(From AWS)

LLM 단점

  • 답변이 없을 때 허위 정보를 제공
  • 사용자가 구체적이고 최신의 응답을 기대할 때 오래되었거나 일반적인 정보를 제공
  • 신뢰할 수 없는 출처로부터 응답을 생성
  • 용어 혼동으로 인해 응답이 정확하지 않음, 다양한 훈련 소스가 동일한 용어를 사용, 서로 다른 내용을 설명하는 상황 발생

RAG 장점

  • RAG를 통해 특정 도메인이나 조직 내부 지식 기반 확장이 가능 하므로 모델을 다시 교육 할 필요가 없어짐
    • Fine Tuning에 비해 시간과 비용이 적게 소요
  • 모델의 일반성 유지 가능
  • 답변의 근거 제시(답변과 출처를 같이 제공)
  • 할루시네이션 가능성을 줄일 수 있음
  • 최신 정보 사용
  • 개발자 제어 강화

RAG 작동 방식

  1. 사용자 질문 입력
  2. 외부 데이터베이스에서 질문과 관련된 정보를 검색
  3. 검색된 정보를 기반으로 LLM 답변 생성

Retrieval; 검색

  • 데이터를 가져오는 것
  • 구체적으로는 “컴퓨터 시스템에 저장된 자료를 취득하는 것” 이라는 뜻도 있음
  • 언어모델이 가지고있지 않은 정보를 가져오는 것
    • 언어 모델이 아웃풋을 만드는데 필요한 정보를 제공
    • "답변 생성"에 능숙하지만, 답변 생성을 위한 모든 정보를 가지고 있지 않음(GPT4는 23년 12월까지 정보를 가지고 있음)
      ex) 보안이 걸려있는 사내자료

Augmented; 증강

  • AR/VR에 사용되는 것과 같은 단어(마치 사실인 것 처럼)
  • Retrieval된 데이터를 LLM에게 주면서, “마치 이 정보를 아는 것 처럼”

Generation; 생성

  • Augmented된 Context(문맥)를 기반으로 LLM에게 답변을 생성하게 하는 것

RAG를 사용하는 LLM에서 개발자의 역할

  • 답변 생성은 LLM이 한다
  • 데이터를 잘 가져와서 LLM에게 잘 전달하는 것이 개발자의 역할
  • 데이터를 잘 가져오려면 저장을 잘해야하지만 쉽지 않음
  • 저장 이후 잘 전달 하려면 프롬프트를 적절히 활용 해야하고 문맥을 제공 하는 방식에 대해도 고려 해야함

Vecctor Database

  • Embedding을 통해 생성된 Vector를 저장하는 데이터베이스
    • metadata도 같이 저장(답변의 신뢰도를 위해)
  • 사용자가 원하는 정보 -> 질문과 관련이 있는 데이터
    • 관련성 파악을 위해 vector 활용
    • 단어 또는 문장의 유사도를 파악해서 관련성을 측정함
    • 문서와 같은 것을 저장할때 적절한 chunk로 저장해야 함
  • Vector 생성 방법

참고

0개의 댓글