GalaxyXieyu/RAG-LEARN: 실무 기초부터 엔터프라이즈급 검색 시스템까지 다루는 구조화된 RAG 학습 저장소
요약
기초부터 엔터프라이즈급 RAG 시스템 구축까지 다루는 체계적인 학습 저장소입니다. 데이터 정제, 검색, 생성, GraphRAG 및 멀티모달 기술을 포함하며 실무적인 문제 해결과 실행 가능한 코드를 제공합니다.
핵심 포인트
- 기초 개념부터 프로덕션 지향적 주제까지 단계적 학습 제공
- 실제 프로젝트에서 발생하는 7가지 주요 함정과 해결책 제시
- Jupyter Notebook을 통한 실행 가능한 코드 예제 포함
- GraphRAG, 하이브리드 검색, 멀티모달 등 고급 기술 커버
실무 기초부터 엔터프라이즈(Enterprise) 규모의 검색 시스템까지 다루는 검색 증강 생성 (Retrieval-Augmented Generation, RAG)을 위한 구조화된 학습 저장소입니다.
이 저장소는 단순한 데모가 아닌 학습 지도(Learning Map)로 설계되었습니다. 체계적인 RAG 경로를 원하는 사람들을 위해 데이터 정제(Data Cleaning), 검색(Retrieval), 답변 생성(Answer Generation), GraphRAG, 벡터 데이터베이스(Vector Database) 아키텍처, 그리고 멀티모달(Multimodal) 방향을 다룹니다.
- RAG 개념, 주의사항(Pitfalls), 실행 가능한 예제를 한곳에 수집
- 학습자에게 기초부터 프로덕션(Production) 지향적 주제까지의 단계적 학습 제공
- 엔터프라이즈 검색 관련 고려 사항을 실습용 노트북(Notebook) 및 노트와 밀접하게 연결
제로 베이스에서 검색 증강 생성 (Retrieval-Augmented Generation, RAG) 기술을 학습하고, 엔터프라이즈급 지식 베이스 구축을 위한 완전한 방법론을 마스터하세요.
AI 대규모 언어 모델 (Large Language Model, LLM) 시대에 우리는 종종 AI가 기업 내부 문서, 전용 데이터 등 비공개 정보를 처리하도록 해야 합니다. 하지만 이러한 콘텐츠는 모델의 학습 범위에 포함되지 않기 때문에 지식 공백이 발생할 수 있습니다. RAG 기술은 이 문제를 효과적으로 해결합니다. RAG는 AI 모델이 우리가 제공하는 전용 지식을 실시간으로 가져오고 이해할 수 있게 하여, 특정 도메인이나 시나리오에 대해 더욱 정확하고 관련성 높은 답변을 제공할 수 있게 합니다.
본 프로젝트는 기초 개념부터 고급 응용까지 완전한 지식 체계를 포괄하며, 특히 실제 프로젝트에서 마주치는 다양한 문제와 그 해결책에 집중하는 체계적인 RAG 실전 튜토리얼입니다.
- 🎓 대규모 언어 모델 (LLM) 애플리케이션 개발을 공부하는 학생
- 💼 기업용 지식 베이스를 구축해야 하는 엔지니어
- 🔧 RAG 실무 문제를 해결하고 싶은 개발자
- 🧪 AI 기술에 관심이 있는 연구원
문제 중심: 단순히 기술을 소개하는 것에 그치지 않고, 실제 프로젝트에서의 "7가지 함정"과 그 해결책에 집중합니다. 코드 실행 가능: 모든 개념에는 실행 가능한 Jupyter Notebook 코드 예제가 포함되어 있습니다. 명확한 아키텍처: "입력 최적화 - 정확한 검색 - 양호한 표현"의 최적화 사고방식에 따라 내용을 구성했습니다. 지속적인 업데이트: 최신 기술 트렌드를 추적하며 새로운 내용을 지속적으로 보충합니다.
RAG/
├── README.md # 프로젝트 개요 (본 파일)
├── requirements.txt # Python 의존성 패키지
...
목표: RAG의 기본 원리와 응용 시나리오 마스터
- 📖 기초 지식 문서 읽기
- RAG란 무엇인가? 왜 RAG가 필요한가?
- RAG의 핵심 단계
- RAG의 7가지 흔한 문제점
학습 시간: 30분
목표: 이미지, 표 등 복잡한 형식의 데이터 처리 문제 해결
해결하는 문제:
- ✅ 이미지 콘텐츠를 가져올 수 없음
- ✅ 표(Table) 콘텐츠의 검색 성능 저하
학습 시간: 2-3시간
목표: 시나리오에 적합한 검색 기술 선택
🔍 검색 기술 비교 실습
-
벡터 검색 (Embedding + Rerank)
-
키워드 검색 (BM25)
-
그래프 검색 (GraphRAG)
-
하이브리드 검색 전략
📚 고급 Embedding 모델 선택
-
OpenAI vs BGE vs JinaAI
-
중국어 모델 추천
-
비용과 성능의 균형
-
모델 선택 의사결정 트리
🕸️ 특화 주제: GraphRAG 그래프 검색
- 지식 그래프 (Knowledge Graph) 구축
- Neo4j + LangChain
- GraphRAG vs 벡터 검색
- 적용 시나리오 판단
해결하는 문제:
- ✅ 질문에 대응하는 텍스트 블록을 항상 검색하지 못함
- ✅ 긴 텍스트에 대한 요약형 질문에 답변이 불완전함
- ✅ 복잡한 관계 쿼리의 효과가 떨어짐
학습 시간: 6-8시간
목표: AI의 답변을 더 정확하고 요구사항에 부합하도록 만들기
- 🎯 LLM 답변 생성 실습
- 프롬프트 (Prompt) 엔지니어링 기초
- 검색된 콘텐츠를 기반으로 답변 생성
- 답변 구조화
- 인용 출처 표기
해결하는 문제:
- ✅ 검색된 지식은 맞지만, 답변의 어조, 말투 및 정밀도가 떨어짐
학습 시간: 2-3시간
목표: 더 지능적인 RAG 시스템 구현
🤖 기초 RAG 에이전트 (Agent) 실습
-
답변 스타일 및 어조 조정
-
대화 메모리 (Memory) 관리
-
허위 정보 생성 및 환각 (Hallucination) 방지
🚀 고급 적응형 RAG (Adaptive RAG)
- 지능형 라우팅 (Routing): 지식 베이스 쿼리 vs 웹 검색
- 지식 보완: 누락된 지식에 대한 웹 검색 보완
- 정확도 제어: 지식 베이스를 기반으로 답변하도록 강제
해결하는 문제:
- ✅ 지식 베이스가 매우 커서 정확도를 보장하기 위해 완전히 테스트하기 어려움
학습 시간: 3-4시간
목표: 프로덕션급 벡터 데이터베이스 (Vector Database) 배포 및 최적화 숙달
-
🗄️ Milvus 아키텍처 원리 심층 탐구
- 7계층 데이터 조직 구조
- Growing/Sealed Segment 메커니즘
- Flush 및 Compaction 전략
- 3계층 스토리지 아키텍처 설계
-
💼 면접: 벡터 데이터베이스 면접 가이드
- 빈출 면접 질문
- 표준 답변 템플릿
- 실전 시나리오 설계
해결하는 문제:
- ✅ FAISS가 대규모 프로덕션 요구사항을 충족하지 못함
- ✅ 벡터 데이터베이스의 저수준 (Low-level) 원리를 이해하지 못함
- ✅ 면접에서 기술적 세부 사항을 깊이 있게 설명하지 못함
학습 시간: 4-6시간
목표: 멀티모달 임베딩 (Multimodal Embedding) 기술을 학습하여 이미지, 텍스트, 오디오, 비디오 결합 검색 구현
- 🎨 멀티모달 임베딩 탐색
- CLIP 이미지-텍스트 결합 임베딩
- 이미지로 이미지 검색, 텍스트로 이미지 검색
- 비디오 콘텐츠 검색
- 멀티모달 RAG 시스템
해결하는 문제:
- ✅ 순수 텍스트 RAG가 이미지 콘텐츠를 처리할 수 없음
- ✅ 이미지로 이미지 검색 기능을 구현해야 함
- ✅ 비디오, 오디오 검색 요구사항
- ✅ 더 풍부한 멀티모달 애플리케이션 구축
학습 시간: 3-5시간 (이론) + 필요에 따른 실습
- Python 3.10+
- 8GB+ RAM
- OpenAI API 또는 Azure OpenAI 서비스
# 1. 프로젝트 클론
git clone <repository-url>
cd RAG
...
02_data_retriever/data_retriever.ipynb를 열고,
코드 셀을 순서대로 실행하여 벡터 검색의 전체 프로세스를 경험해 보세요.
# FastAPI 서비스 시작
python main.py
# http://localhost:8005 접속
...
내용 요약: 질문될 가능성이 있는 자료만 임포트
내용 정확성: 모호하거나 모순된 설명 방지
형식 표준화: 이미지, 표를 검색 가능한 텍스트로 변환
추천 도구: OmniParse
| 검색 방식 | 추천 시나리오 | 장점 | 단점 |
|---|---|---|---|
| 벡터 검색 (Vector Search) | 규정, 조항 등 문맥 연관성이 높지 않은 내용 | 속도가 빠르고 의미론적 (Semantic) 검색 가능 | 숫자 키워드에 민감하지 않아 정보를 누락할 수 있음 |
| 그래프 검색 (Graph Search) | 소설, 인물 관계 등 복잡한 문맥 내용 | 전체 관련 내용을 포함하며 길이에 제한을 받지 않음 | 지식 그래프 (Knowledge Graph) 구축 비용이 높음 |
| 키워드 검색 (Keyword Search) | 구체적인 숫자나 수치가 포함된 내용 | 정확한 매칭 가능 | 키워드를 기억해야 함 |
프롬프트 엔지니어링 (Prompt Engineering): 적절한 시스템 프롬프트 설계
스타일 제어: 답변의 격식 및 상세 정도 조절
메모리 관리: 문맥의 일관성 유지
환각 제어 (Hallucination Control): AI가 존재하지 않는 정보를 지어내는 것을 방지
LLM 프레임워크: LangChain
대규모 언어 모델 (LLM): OpenAI GPT-4 / Azure OpenAI
벡터 데이터베이스: FAISS, ChromaDB
임베딩 (Embedding) 모델: OpenAI text-embedding-3-small
문서 처리: Unstructured, pdf2image
웹 프레임워크: FastAPI
개발 환경: Jupyter Notebook
저희와 함께 RAG 기술 탐구에 참여해 주시길 환영합니다!
- 🐛 Issue 제출: 버그 발견 또는 개선 제안
- 💡 아이디어 제안:
future_practice에 탐구하고 싶은 기술 추가 - 📝 문서 개선: 튜토리얼 내용 보완 또는 오류 수정
- 💻 코드 기여: Pull Request 제출
완료됨 ✅:
- 임베딩 (Embedding) 모델 선택 가이드 (완료)
- GraphRAG 원리 및 응용 (완료)
- Milvus 엔터프라이즈급 아키텍처 (완료)
- 벡터 데이터베이스 면접 가이드 (완료)
개발 예정 📋:
개발 예정 📋:
- 임베딩 모델 비교 실험 (02_data_retriever/embedding_compare.ipynb)
- 임베딩 모델 미세 조정 방법 (02_data_retriever/embedding_finetune.ipynb)
- Neo4j 그래프 검색 실전 (04_graph_rag/graph_rag_basic.ipynb)
- Microsoft GraphRAG 구현 (04_graph_rag/graphrag_microsoft.ipynb)
- Milvus 기본 배포 튜토리얼 (07_vector_database_enterprise/milvus_basic_setup.ipynb)
- Segment 관리 실전 (07_vector_database_enterprise/milvus_segment_management.ipynb)
- 기업 뉴스 검색 시스템 (07_vector_database_enterprise/milvus_news_system.ipynb)
- CLIP 이미지-텍스트 검색 입문 (08_multimodal_embedding/clip_basics.ipynb)
- 이커머스 제품 검색 시스템 (08_multimodal_embedding/ecommerce_image_search.ipynb)
- 스마트 앨범 관리 (08_multimodal_embedding/photo_album_search.ipynb)
- 비디오 콘텐츠 검색 (08_multimodal_embedding/video_search.ipynb)
- 다중 모드 RAG 시스템 (08_multimodal_embedding/multimodal_rag_system.ipynb)
- RAG 자동 평가 프레임워크
- LightRAG 구현 및 비교
- 더 많은 기여를 기대합니다...
문의사항이나 제안 사항이 있으시면 다음 방법을 통해 연락 주십시오:
- 📮 이슈 제출 (Submit Issue)
- 💬 토론 참여 (Participate Discussions)
- 📧 이메일 전송 (Send Email)
본 프로젝트는 MIT 라이선스를 채택하고 있습니다 - 자세한 내용은 LICENSE 파일을 참조하십시오.
⭐ 본 프로젝트가 도움이 되었다면 Star를 눌러 지지해 주세요!
즐거운 학습 되세요! 🎉
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기