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을 통한 답변을 생성합니다.

'LLM Application > LangChain' 카테고리의 다른 글
| LangChain – RAG + Open Source AI (0) | 2026.07.23 |
|---|---|
| RAG App 개발 2 - Retrieval and Generation (검색과 생성) 하기 (0) | 2026.07.23 |
| RAG App 개발 1 - Indexing (인덱싱) 하기 (0) | 2026.07.23 |
| LLM 한계 및 해결방법 (0) | 2026.07.22 |
| 랭체인 - LangChain (0) | 2026.06.08 |