우리가 가진 정보를 Vector store
에 저장해두고, 사용자의 질의가 들어올 때 관련된 정보를 검색
하여 해당 정보가 담긴 문서들을 프롬프트를 통해 LLM에 전달하는 방식
비즈니스 도메인 기반으로 대형 언어 모델 (LLM) 애플리케이션을 개발하고자 할 때 문제가 되는 점은 LLM의 정보 부족과 이로 인한 제한된 답변 능력이다.
GPT 3.5는 2021년 9월 이후의 데이터가 없으므로 최신 뉴스에 대한 답변을 제공할 수 없다.
사전 학습 모델(Pre-Trained Model)에 도메인 특화 데이터를 추가 학습시켜 맞춤형 모델로 업데이트 하는것을 의미한다. 제로 베이스에서 LLM을 개발하는 것보다는 진입 장벽이 낮지만, 모델 드리프트
같은 현상이 발생할 수 있다.
모델 드리프트(Model Drift): 모델을 배포한 이후 시간이 지남에 따라 모델 성능이 저하되는 현상
원하는 정보가 담긴 문서를 직접 프롬프트 컨텍스트(Prompt Context)에 넣어주고 원하는 응답을 생성하는 것을 의미한다. 모든 정보를 동적으로 컨텍스트에 일일이 넣어주는 작업은 매우 어려운 작업
많은 작업이 필요하고, 복잡해 보이지만, LLM 자체를 훈련 및 파인튜닝하는 것보다는 쉽다
→ → →
우리가 가진 정보 자연어 문장을 저장하려면, 의미가 유사한 문장들이 유사한 벡터 값을 갖도록 변환해야 한다.
모델을 통해 수집한 문서들을 작은 조각들로 분할하고 (Chunk
), 모델의 추론을 통해 벡터 형태(Embedding
)로 변환한 후 저장 한다.
수집이 필요한 데이터를 추출, 가공(변환, 정제) 하여 저장
추출(Extract):
데이터베이스
, 텍스트 파일
, 웹 서비스
, 로그 파일
등변환(Transform):
데이터 정제
, 변환
, 집계
, 필터링
, 정규화
등적재(Load):
데이터 웨어하우스
, 데이터베이스
, 분석 도구
등지속적으로 사용할 데이터를 저장. 의사 결정을 지원하거나 기계 학습 알고리즘을 훈련시키는 등 여러 방식으로 사용
전처리된 데이터를 벡터로 변환
토큰화(Tokenization)
단어 임베딩(Word Embedding):
시퀀스 임베딩(Sequence Embedding):
변환된 벡터 정보를 저장, 비교 및 검색. Vector DB
또는 Elasticsearch
문장 벡터 임베딩(Sentence Vector Embedding)
Embedding
하여 벡터로 변환벡터 검색(Vector Search):
Vector store
에 검색Prompt Engineering Guide:
Vector store
의 외부 컨텍스트를 함께 제공하여 최종 프롬프트를 설계질의문이 너무 간결하거나 명확하게 이해할 수 없는 질의인 경우, 추가 방식을 통한 질의를 생성하는 방식이 필요하다. 가상의 문서를 임베딩하거나 이전 질의/응답에 대한 내용으로 질의를 보강하는 방식이 있다.
Prompt Context
에 최종 설계된 프롬프트를 입력하고, LLM에게 답변을 요청한다.
오케스트레이션은 여러 개의 컴퓨터 시스템, 애플리케이션 및/또는 서비스를 조율하고 관리하는 것으로, 여러 개의 작업을 함께 연결하여 크기가 큰 워크플로나 프로세스를 실행하는 방식을 말한다. 이러한 프로세스는 여러 개의 자동화된 작업으로 구성될 수 있으며 관련되는 시스템도 여러 개일 수 있다.
오케스트레이션의 목표는 빈도가 높고 반복할 수 있는 프로세스의 실행을 간소화 및 최적화하여 데이터 팀이 복잡한 작업과 워크플로를 간편하게 관리하도록 돕는 것.
[GN] LLM 어플리케이션을 위한 새로운 아키텍쳐 - 읽을거리&정보공유 - 파이토치 한국 사용자 모임 (pytorch.kr)
Skelter Labs Blog - RAG vs. 파인튜닝 :: 기업용 맞춤 LLM을 위한 선택 가이드
LLM 애플리케이션 아키텍처란? (Korean). RAG의 이해와 기술 스택 탐색 | by Jonas Kim | Medium