코딩공작소
RAG 기본 아키텍쳐 본문
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 |