새소식

반응형
AI

RAG(Retrieval-Augmented Generation) 란?

  • -
반응형

RAG(Retrieval-Augmented Generation) 이란?

일반 LLM 은 사전에 학습된 데이터만으로 답을 생성하지만, RAG 는 외부 지식(PDF, 문서, DB)을 검색해서 그걸 바탕으로

더 정확하고 구체적인 답을 생성한다.

 

즉, RAG 는 LLM 에 외부 지식 소스를 연계하여 사전 학습된 내용뿐만 아니라 우리가 필요한 내용도 학습시켜 검색할 수 있는

기술이다.

 

📘 예시 상황: PDF 파일을 LLM이 이해하게 하려면?

PDF → 텍스트 추출 → (1) Text Split → (2) Embedding → (3) Vector Store 저장
   → 사용자의 질문 → (4) 유사도 검색 → (5) 관련 문단 가져옴 → (6) LLM에 프롬프트로 전달 → 답변 생성

 

✅ 각 단계 설명

📌 1. Text Split (텍스트 분할)

  • PDF 의 긴 텍스트를 작은 조각들로 나눈다 (예: 문단 단위, N자 단위, 의미 단위)
  • 나누는 이유 : 너무 긴 문장은 LLM 이 이해하기 힘들고 백터화 과정에서 조각 단위가 좋아야 검색 효율이 높아진다.

    🔹 예시: ["1. 개요...", "2. 기술 설명...", "3. 결론..."] 처럼 나누어진다.

 

 

📌 2. Embedding (임베딩: 벡터화)

  • 각 조각들을 임베딩 모델을 통해 고차원 수치 벡터로 바꾼다.
  • 이 벡터는 문장의 의미, 맥락을 수치적으로 표현한 것이다.
  • 예: "Spring Boot는..." → [0.12, -0.98, ..., 0.33] (512차원 등)
  • 자주 쓰이는 임베딩 모델:
    • OpenAI text-embedding-3-small
    • BGE-m3, Instructor-XL, Kohya, E5, 등

 

📌 3. Vector Store 저장

  • 이렇게 변환된 벡터들을 벡터 DB(예: FAISS, Chroma, Wwaviate 등)에 저장해 둡니다.
  • 문맥 유사도 기반 검색이 가능한 형태로 보관한다.
  • 유사도라는건 벡터화 시킨 데이터의 수치값들을 비교하여 가장 높은 유사도를 가진 데이터를 사용자에게 제공

 

📌 4. 검색(Retrieval)

  • 사용자가 질문하면 그 질문도 벡터로 임베딩해서 벡터 DB에 있는 조각들과 유사도(cosine similarity)를 비교한다.
  • 가장 관련있는 문단들을 찾아낸다.

 

📌 5. 관련 문단을 프롬프트로 구성

  • 가장 관련있는 문단을 다시 텍스트로 묶어서 질문과 함께 LLM 에게 전달한다.
📄 [Retrieved Context]
"Spring Boot는 Java 기반 웹 프레임워크입니다..."

❓ [질문]
Spring Boot가 어떤 방식으로 의존성 관리를 하나요?

 

 

📌 6. LLM이 답 생성 (Generation)

  • 이렇게 주어진 "문맥 + 질문"을 바탕으로 LLM이 정확한 답변을 생성한다.
  • 이게 바로 RAG(Retrieval-Augmented Generation) 이다

 

✅ 요약 정리

단계 설명 핵심
1. Text Split 문서를 조각냄 작은 단위로 나누기
2. Embedding 텍스트 → 벡터 수학적 표현
3. Vector Store 벡터 저장 검색 준비 완료
4. Retrieval 질문 → 관련 조각 찾기 유사도 기반 검색
5. Prompting 문맥 + 질문 → LLM 입력 LLM이 읽을 수 있게 구성
6. Generation 답변 생성 실제 응답 나옴

 

 

🧠 덧붙이면: Embedding = 의미 벡터

  • 사람 입장에서 "유사하다" 는 문장을 컴퓨터 입장에서는 벡터 간의 거리(수학적 거리)로 측정하게 된다.
  • 예: "고양이는 귀엽다" 와 "고양이는 사랑스럽다"
    → 벡터 거리 0.12 (가깝다 = 유사하다)

 

 

 

 

 

반응형

'AI' 카테고리의 다른 글

LLM(Large Language Model), 프롬프트(Prompt)  (5) 2025.08.07
Contents