5. RAG (Retrieval Augmented Generation) 적용 설계 - 100-hours-a-week/20-real-wiki GitHub Wiki

📕 1. 전체 데이터 흐름도

📌 Rag 를 사용한 전체 데이터 흐름도

  • 파란색사전 준비 (preparation) 과정입니다.
  • 검은색사용자 질문 → 응답 생성 과정입니다.

image

📌 Rag 의 각 단계와 작동 방식

단계 작동 방식
1. 질문 입력 사용자의 자연어 질문
2. 질문 벡터화 임베딩 모델이 질문을 벡터로 변환
3. 문서 검색 Retriever (검색엔진) 가 VDB에서 유사 문서 검색
4. 프롬프트 구성 LLM 입력용 템플릿 생성
5. LLM 응답 프롬프트와 검색된 유사 문서를 참고하여 질문에 대해 자연어로 응답
6. 응답 반환 답변을 반환




📘 2. 외부 지식 소스에 대한 설명

본 서비스 기능 중에서 챗봇은 단순한 모델 응답이 아닌, 외부 문서 기반의 정보 검색과 결합된 RAG 구조를 필요로 합니다. 모델이 사전 학습해야 하는 범위는 아래와 같습니다.

📄 문서 데이터베이스: markdown

사용 이유

  1. 비정형 정보 구조에 최적
    • 공지사항, 위키 문서, Q&A와 같은 실무 문서는 표, 목록, 제목 등 다양한 텍스트 구조로 구성
    • markdown은 이러한 문서 구조를 간결하고 계층적으로 표현할 수 있는 형식
  2. LLM이 이해하기 좋은 포맷
    • markdown은 문서의 제목, 섹션, 강조 등을 구조화하여, LLM이 문맥을 더 정확하게 이해할 수 있도록 돕습니다
  3. 파일 단위 저장 및 관리가 용이
    • Git, Notion, Dropbox 등 다양한 플랫폼에서 바로 export 가능
    • 향후 문서 추가/수정이 쉽고, 버전 관리에도 유리

📦 벡터 데이터베이스: FAISS

사용 이유

  1. 임베딩 기반 검색 최적화
    • LLM은 단순 키워드 검색보다 **의미 기반 검색(semantic search)**에 더 강함
    • FAISS는 문서/질문을 임베딩한 뒤, 벡터 간 거리 계산을 통해 가장 의미적으로 유사한 문서를 빠르게 검색
  2. 빠르고 가벼운 오픈소스
    • FAISS는 Facebook AI에서 개발한 벡터 검색 라이브러리로, 로컬에서도 실행 가능하고 속도가 빠름
    • 초기 테스트, 실험, MVP 단계에서 가장 널리 사용됨
  3. 확장성과 통합성
    • LangChain, LlamaIndex 등 주요 RAG 프레임워크와 자연스럽게 통합
    • 나중에 필요시 Pinecone, Weaviate, Qdrant 등 클라우드 기반 DB로 확장도 용이




📗 3. 검색 구현 및 모델 통합 방법

📌 검색 쿼리 및 프롬프트 통합 예시

question = "카카오테크 과정의 오리엔테이션은 언제인가요?"

prompt_template = PromptTemplate.from_template("""
You are an assistant for question-answering tasks.
Use the context below to answer the question.
Answer in Korean.

[질문]
{question}

[문서 내용]
{context}

[답변]
""")

→ LangChain의 RetrievalChain 구성으로 연결:

chain = (
  {"context": retriever, "question": RunnablePassthrough()}
  | prompt_template
  | llm
  | StrOutputParser()
)




📒 4. RAG 적용 전후의 예상 효과 및 검증 계획

📌 예상 효과

항목 RAG 미적용 (LLM 단독) RAG 적용 후
정답률 사용자가 질문한 문서 내용을 잘 인식하지 못하고 추측성 응답 실제 문서 근거에 기반한 정확한 응답
신뢰성 "잘 모르겠어요" 혹은 틀린 사실 포함 가능 문서 기반 응답이므로 신뢰도 상승
일관성 문맥에 따라 말 바꾸는 현상 발생 가능 정형화된 문서 기반 응답으로 안정적

✅ 검증 계획

단계 설명
🔍 사전 평가 LLM 단독 → 동일 질문에 대한 생성 응답 수집
🔄 RAG 적용 후 비교 동일 질문을 RetrievalChain 기반으로 실행
🧪 정확도 평가 생성된 응답을 기준 문서와 비교하여 human label 평가
📊 정량 지표 EM(정확 일치), BLEU, ROUGE, F1-score 측정




📕 5. RAG 미적용 기능에 대한 구조 및 판단 근거

본 서비스는 다양한 AI 기능(챗봇, 뉴스 생성, 요약 생성, 퀴즈 생성 등)을 포함하고 있으며, 각 기능의 특성과 목적에 따라 RAG 적용 여부를 차별화하였습니다.

기능명 목적 RAG 사용 여부
📣 챗봇 사용자 질문에 문서를 근거로 응답 ✅ 사용
뉴스 헤드라인 문서에서 자극적이고 요약된 제목 생성 ❌ 미사용
위키 뉴스 생성 위키 기반 설명형 뉴스 문장 생성 ❌ 미사용
뉴스 요약 뉴스나 공지 문서를 3~5줄 요약 ❌ 미사용
퀴즈 생성 위키 or 문서 기반 객관식 문제 생성 ❌ 미사용

📌 RAG 미적용 결정의 기술적 근거

1️⃣ 단순 생성 작업에는 검색 기반이 불필요

  • RAG는 “질문 ↔ 문서” 간 의미 기반 유사도를 전제로 하지만,
  • 헤드라인, 요약, 뉴스, 퀴즈 생성 기능은 질문 없이 문서를 그대로 입력하여 응답 생성이 가능함
  • 따라서 LLM 단독으로도 충분히 정확하고 일관된 결과를 도출할 수 있음

2️⃣ 실시간 응답을 요구하지 않음

  • 문서 생성 작업은 실시간 검색 및 검색 정확도를 고려하지 않아도 됨
  • 따라서 벡터DB 또는 임베딩 모델을 경유할 필요가 없음
⚠️ **GitHub.com Fallback** ⚠️