LLM - Rag Architecture

JunMyung Lee·2024년 3월 28일
1

LLM

목록 보기
3/7

Rag(Retrieval Augmented Generation) 검색 증강 생성

우리가 가진 정보를 Vector store에 저장해두고, 사용자의 질의가 들어올 때 관련된 정보를 검색하여 해당 정보가 담긴 문서들을 프롬프트를 통해 LLM에 전달하는 방식

현재 LLM 문제점

비즈니스 도메인 기반으로 대형 언어 모델 (LLM) 애플리케이션을 개발하고자 할 때 문제가 되는 점은 LLM의 정보 부족과 이로 인한 제한된 답변 능력이다.

GPT 3.5는 2021년 9월 이후의 데이터가 없으므로 최신 뉴스에 대한 답변을 제공할 수 없다.

FineTuning

사전 학습 모델(Pre-Trained Model)에 도메인 특화 데이터를 추가 학습시켜 맞춤형 모델로 업데이트 하는것을 의미한다. 제로 베이스에서 LLM을 개발하는 것보다는 진입 장벽이 낮지만, 모델 드리프트 같은 현상이 발생할 수 있다.

모델 드리프트(Model Drift): 모델을 배포한 이후 시간이 지남에 따라 모델 성능이 저하되는 현상

Prompt Design

원하는 정보가 담긴 문서를 직접 프롬프트 컨텍스트(Prompt Context)에 넣어주고 원하는 응답을 생성하는 것을 의미한다. 모든 정보를 동적으로 컨텍스트에 일일이 넣어주는 작업은 매우 어려운 작업

Rag workflow

많은 작업이 필요하고, 복잡해 보이지만, LLM 자체를 훈련 및 파인튜닝하는 것보다는 쉽다

Imgur

Step 1. 데이터 전처리 / 임베딩

Imgur

ContextualDataContextual DataDataPiplineData PiplineEmbdeingModelEmbdeing ModelVectorStoreVector Store
우리가 가진 정보 자연어 문장을 저장하려면, 의미가 유사한 문장들이 유사한 벡터 값을 갖도록 변환해야 한다.
모델을 통해 수집한 문서들을 작은 조각들로 분할하고 (Chunk), 모델의 추론을 통해 벡터 형태(Embedding)로 변환한 후 저장 한다.


데이터 전처리 작업(ETL → Extract, Transfrom, Load)

수집이 필요한 데이터를 추출, 가공(변환, 정제) 하여 저장

추출(Extract):

  • 데이터를 추출
    * 데이터베이스, 텍스트 파일, 웹 서비스, 로그 파일

변환(Transform):

  • 추출된 데이터를 분석이나 모델 학습에 적합한 형태로 변환
    * 데이터 정제, 변환, 집계, 필터링, 정규화

적재(Load):

  • 변환된 데이터를 로드하여 저장
    * 데이터 웨어하우스, 데이터베이스, 분석 도구

지속적으로 사용할 데이터를 저장. 의사 결정을 지원하거나 기계 학습 알고리즘을 훈련시키는 등 여러 방식으로 사용


Embeddings

전처리된 데이터를 벡터로 변환

토큰화(Tokenization)

  • 텍스트를 작은 단위로 분리

단어 임베딩(Word Embedding):

  • 토큰화된 단어들을 실수 벡터로 매핑

시퀀스 임베딩(Sequence Embedding):

  • 문장이나 문서와 같은 텍스트 시퀀스를 처리

Vector store

변환된 벡터 정보를 저장, 비교 및 검색. Vector DB 또는 Elasticsearch

Step 2. 프롬프트 생성 / Vector store 검색

Imgur

문장 벡터 임베딩(Sentence Vector Embedding)

  • 질의를 Embedding 하여 벡터로 변환

벡터 검색(Vector Search):

  • 벡터화 된 질의를 Vector store에 검색

Prompt Engineering Guide:

  • 모델이 훈련되지 않은 Vector store의 외부 컨텍스트를 함께 제공하여 최종 프롬프트를 설계

Prompting Techniques | Prompt Engineering Guide

질의문이 너무 간결하거나 명확하게 이해할 수 없는 질의인 경우, 추가 방식을 통한 질의를 생성하는 방식이 필요하다. 가상의 문서를 임베딩하거나 이전 질의/응답에 대한 내용으로 질의를 보강하는 방식이 있다.

Step 3. 프롬프트 실행

Imgur

Prompt Context에 최종 설계된 프롬프트를 입력하고, LLM에게 답변을 요청한다.


오케스트레이션 프레임워크 (Orchestration Framework)

오케스트레이션은 여러 개의 컴퓨터 시스템, 애플리케이션 및/또는 서비스를 조율하고 관리하는 것으로, 여러 개의 작업을 함께 연결하여 크기가 큰 워크플로나 프로세스를 실행하는 방식을 말한다. 이러한 프로세스는 여러 개의 자동화된 작업으로 구성될 수 있으며 관련되는 시스템도 여러 개일 수 있다.

오케스트레이션의 목표는 빈도가 높고 반복할 수 있는 프로세스의 실행을 간소화 및 최적화하여 데이터 팀이 복잡한 작업과 워크플로를 간편하게 관리하도록 돕는 것.

  • 데이터 수집 / 처리
  • 질의에 대한 임베딩 처리
  • 검색 요청
  • 프롬프트 엔지니어링

오케스트레이션 프레임워크 종류

참고 주소

[GN] LLM 어플리케이션을 위한 새로운 아키텍쳐 - 읽을거리&정보공유 - 파이토치 한국 사용자 모임 (pytorch.kr)
Skelter Labs Blog - RAG vs. 파인튜닝 :: 기업용 맞춤 LLM을 위한 선택 가이드
LLM 애플리케이션 아키텍처란? (Korean). RAG의 이해와 기술 스택 탐색 | by Jonas Kim | Medium

profile
11년차 검색개발자 입니다. 여러 지식과 함께 실제 서비스를 운영 하면서 발생한 이슈에 대해서 정리하고 공유하고자 합니다.

0개의 댓글

관련 채용 정보