AI/agent

RAG 챗봇 개발 전체 단계별 흐름 + 스택

hmmmmmmmmmmmm 2025. 6. 29. 15:08

 

1. 문서 준비

사내 문서, PDF, 웹페이지, 워드 등 자료 수집

 

사용하는 스택:

PDF → 텍스트: PyPDF2, pdfplumber

이미지 → 텍스트: Tesseract OCR

크롤링: BeautifulSoup, Selenium

 

 

2. 텍스트 전처리 & 청킹

불필요한 기호 제거

긴 문장 → 작은 청크(예: 500단어, 1000자 등)

 

사용하는 스택:

Python 기본 문법 + re (정규식)

LangChain TextSplitter (많이 씀)

직접 구현 (ex: split_text_into_chunks())

 

 

3. 임베딩 생성

청크를 벡터(숫자 배열)로 변환

의미적 유사도를 계산하기 위한 벡터화

 

사용하는 스택:

OpenAI Embeddings API (ex: text-embedding-3-large)

Hugging Face SentenceTransformer (예: all-MiniLM-L6-v2)

Cohere Embeddings

 

 

4. 벡터 DB 저장

변환된 벡터들을 벡터 DB에 넣음

검색용 인덱스 관리

 

사용하는 스택:

Pinecone

Weaviate

Milvus

Qdrant

 

 

 

5. 쿼리(질문) 처리

사용자의 질문을 받아 벡터화

벡터 DB에서 유사한 청크 검색

 

사용하는 스택:

동일한 임베딩 API (OpenAI Embeddings, SentenceTransformer)

벡터 DB 쿼리 메서드 (예: index.query())

 

 

6. LLM을 통한 답변 생성

검색된 청크를 기반으로 문장 재작성

문맥 맞게 자연스럽게 요약 & 통합

 

사용하는 스택:

OpenAI GPT-4 (예: gpt-4o, gpt-4-turbo)

Anthropic Claude

Google Gemini

LangChain LLM Wrapper

 

 

7. 사용자 응답 출력

답변 보여주기

관련 문서, 출처, 하이라이트 링크 등 표시

 

사용하는 스택:

Frontend: React, Next.js, Vue 등

Backend API: FastAPI, Flask, Node.js(Express)

배포/호스팅: Vercel, AWS, GCP

 

 

 

전체 요약 흐름

[문서 수집 및 OCR]
    ↓
[텍스트 전처리 & 청킹]
    ↓
[임베딩 생성 (SentenceTransformer, OpenAI Embeddings)]
    ↓
[벡터 DB 저장 (Pinecone 등)]
    ↓
[사용자 질문 → 임베딩 변환]
    ↓
[벡터 DB에서 유사 청크 검색]
    ↓
[LLM (GPT-4 등)으로 최종 답변 생성]
    ↓
[사용자에게 출력]