코딩공작소

RAG 기본 아키텍쳐 본문

어플리케이션개발/LLM

RAG 기본 아키텍쳐

안잡아모찌 2025. 8. 26. 16:26

1. 프론트엔드 UI

  • 개념: 사용자가 질문을 입력하고, 답변을 확인하는 인터페이스 (웹/앱).
  • 역할: 사용자 입력을 FastAPI 서버로 전달하고, 응답을 받아 보여줌.
  • 상관관계: 사용자 ↔ 백엔드의 입출구 역할.

2. FastAPI 서버

  • 개념: Python 기반의 경량 웹 프레임워크 (비동기 지원).
  • 역할:
    • 프론트엔드 요청(질문) 수신
    • LLM 파이프라인(LangChain, FAISS, 임베딩 모델 등) 호출
    • 최종 답변을 다시 프론트엔드로 반환
  • 상관관계: 중앙 허브 → 모든 모듈과 프론트엔드를 연결.

3. LangChain / LlamaIndex 처리

  • 개념:
    • LangChain: LLM을 쉽게 조합·연결할 수 있는 오케스트레이션 라이브러리
    • LlamaIndex: 문서 데이터와 LLM을 연결해주는 프레임워크 (문서 → 벡터화 → 검색 → LLM 전달)
  • 역할:
    • 입력된 질문을 전처리
    • 필요한 경우 DB/문서에서 검색을 실행
    • 검색된 결과를 LLM이 이해할 수 있는 프롬프트로 조립
  • 상관관계: "사용자 질문"과 "내부 데이터 검색"을 연결해주는 중간 다리.

4. HuggingFace 임베딩 모델

  • 개념: 텍스트를 **벡터(숫자 형태의 의미 공간 표현)**로 변환하는 모델 (예: sentence-transformers, all-MiniLM-L6-v2).
  • 역할:
    • 질문 문장을 벡터화
    • 문서(데이터베이스에 저장된 문장들)도 벡터화
    • 두 벡터 간의 유사도를 계산해 "관련 문서"를 찾도록 지원
  • 상관관계: 질문 ↔ 문서 데이터를 같은 차원 공간에 놓고 비교할 수 있게 함.

5. FAISS 검색

  • 개념: Facebook AI에서 만든 고속 벡터 검색 라이브러리
  • 역할:
    • 벡터화된 문서들을 인덱스로 저장
    • 질문 벡터와 가장 가까운 문서(Top-K)를 빠르게 찾아냄
  • 상관관계: "임베딩된 질문" → "관련 문서"를 찾는 검색엔진 역할.

6. 로컬 LLM

  • 개념: OpenAI GPT 같은 모델이 아니라, 로컬 서버에서 구동하는 LLM (예: LLaMA, Mistral, KoAlpaca 등).
  • 역할:
    • 질문 + 검색된 문서(Context)를 입력받아 답변 생성
    • RAG 구조에서 핵심 역할
  • 상관관계: 검색된 지식을 활용해 사내 맞춤 답변을 만들어냄.

7. 답변 생성 → FastAPI 응답

  • 개념: LLM이 만든 답변을 FastAPI 서버를 통해 반환
  • 역할:
    • 답변 포맷을 정리
    • 프론트엔드에 JSON 혹은 텍스트 형태로 전달
  • 상관관계: "최종 출력 단계"로 사용자와 다시 연결됨.

🔄 전체 흐름을 한 줄로 정리

사용자 질문 (프론트엔드) → FastAPI → LangChain/LlamaIndex → (임베딩 모델 → FAISS 검색) → 로컬 LLM → 답변 생성 → FastAPI 응답 → 프론트엔드 표시

즉,

  • 임베딩 + FAISS = 지식 검색 담당
  • LangChain/LlamaIndex = 검색과 LLM 연결 담당
  • 로컬 LLM = 답변 생성 담당
  • FastAPI = 전체 시스템의 입출력 허브

'어플리케이션개발 > LLM' 카테고리의 다른 글

LLM 프로세스 모델 기능 정리  (0) 2025.10.29
로컬 LLM  (2) 2025.08.28