LLM Application/LangChain

RAG(Retrieval-Augmented Generation)

carrotweb 2026. 7. 22. 20:32
728x90
반응형

RAG(Retrieval-Augmented Generation)

LLM(대규모(초거대) 언어 모델)의 출력을 최적화하여 답변을 생성하기 전에 학습 데이터 소스를 외부의 신뢰할 수 있는 지식 베이스를 참조하도록 하는 프로세스입니다.

 

 

 

 

RAG 장점

최신 정보 : 최신 정보로 답변할 수 있습니다.

정확한 정보 : 특정 도메인에 대한 정확한 정보로 답변할 수 있습니다. → Hallucination(할루시네이션, 환각) 방지, 신뢰 강화

 

RAG 단점

답변 지연 : In-Context Learning (ICL, 인-컨텍스트 학습)으로 인한 답변 시간이 지연될 수 있습니다.

보안 문제 : In-Context Learning (ICL, 인-컨텍스트 학습)으로 인한 민감한 정보가 외부로 노출될 수 있습니다.

 

 

RAG 프로세스

1. Indexing (인덱싱)

소스에서 데이터를 수집하고 인덱싱하는 파이프라인입니다.

일반적으로 오프라인에서 수행됩니다.

  • Load (로드) :  문서 로더를 사용하여 데이터를 로드합니다.
  • Split (분할) : 큰 문서를 작은 청크로 나눕니다. (이는 데이터 인덱싱과 모델 전달 모두에 유용합니다. 큰 청크는 검색하기 어렵고 모델의 한정된 컨텍스트 길이에 맞지 ​​않기 때문입니다.)
  • Embed (임베드) : 청크를 벡터 값으로 생성합니다. (Embedding Model (임베딩 모델)을 사용)
  • Store (저장) : 유사도 검색을 할 수 있도록 벡터 값(분할 데이터)를 저장합니다. (VectorStore)

 

Embedding(임베딩)이란?

텍스트나 이미지, 오디오 등을 Embedding Model(임베딩 모델)을 사용하여 Vector(벡터, 숫자들로 구성된 배열)로 변환하는 과정을 의미합니다.

Embedding Model(임베딩 모델)은 데이터를 벡터로 변환할 수 있도록 학습된 모델을 의미합니다.

 

잠깐 수학적 데이터 표현 단위를 확인해보겠습니다.

  • Scalar(스칼라)는 크기로만 설명되는 물리량입니다. 즉, 스칼라는 숫자 값만으로 표현되는 양입니다.
  • Vector(벡터)는 숫자의 배열(크기와 방향을 가지고 있는 값)입니다. 숫자는 순서대로 배열되어 있으며 해당 순서의 색인을 통해 각 개별 숫자를 식별할 수 있습니다. 벡터는 공간의 점을 식별하는 것으로 생각할 수 있으며, 각 요소는 서로 다른 축을 따라 좌표를 제공합니다.
  • Matrice(매트릭스, 행렬)는 숫자가 행과 열로 배열(스칼라 값을 2차원 형태로 배열)됩니다.
  • Tensor(텐서)는 n-차원의 배열입니다. n-차원 공간에서 값을 나타내며, 여러 차원으로 구성된다.

 

2. Retrieval and Generation (검색과 생성)

사용자 질문을 받아 저장소에서 관련 데이터를 검색한 다음 질문과 데이터를 모델에 전달합니다.

Retrieve (검색) :  사용자 입력이 주어지면, 검색기를 사용하여 임베딩(벡터 값으로 생성)하고 저장소에서 데이터(청크)를 검색합니다.

Generate (생성) : 질문과 검색된 데이터를 모두 포함하는 프롬프트를 사용하여 LLM을 통한 답변을 생성합니다.

 

 

 

728x90
반응형