OSTEP (Operating Systems: Three Easy Pieces) PDF 문서를 RAG(Retrieval-Augmented Generation) 시스템으로 변환하는 프로젝트입니다.
이 프로젝트는 운영체제 교재인 OSTEP PDF를 분석하여 챕터별로 청킹하고, 임베딩을 생성한 후 벡터 데이터베이스에 저장하여 RAG 시스템을 구축합니다. 각 단계별로 실습 노트북을 제공하여 RAG 시스템의 전체 파이프라인을 학습할 수 있습니다.
OSTEP_RAG/
├── chapter.2/ # Chapter 2: 청킹 및 JSON 변환
│ ├── chunk_methods_examples.ipynb
│ └── ostep_chunk_to_json.ipynb
├── chapter.3/ # Chapter 3: 임베딩 생성
│ ├── sentence_embeddings_examples.ipynb
│ └── ostep_chunk_embeddings.ipynb
├── chapter.4/ # Chapter 4: FAISS 인덱싱
│ ├── hnsw_faiss_param_examples.ipynb
│ └── ostep_faiss_hnsw_index.ipynb
├── chapter.5/ # Chapter 5: LLM 프롬프트 및 생성
│ ├── ollama_generation_examples.ipynb
│ └── ostep_llm_prompt.ipynb
├── chapter.6/ # Chapter 6: RAG 통합
│ └── ostep_rag_integration.ipynb
├── chapter.7/ # Chapter 7: 고급 기법
│ ├── ostep_contextual_chunk_headers.ipynb
│ ├── ostep_hyde.ipynb
│ ├── ostep_reranking.ipynb
│ ├── ostep_self_rag.ipynb
│ └── ostep_final_optimized.ipynb
└── data/ # 생성된 데이터
├── chunk/ # 청킹된 JSON 파일
├── documents/ # 원본 문서
├── index/ # FAISS 인덱스 파일
└── vector/ # 벡터 데이터
- Google 계정 (Colab 접근용)
- OSTEP PDF 파일 (Google Drive에 업로드 필요)
-
Google Colab 접속
- colab.research.google.com 접속
- Google 계정으로 로그인
-
프로젝트 노트북 열기
파일 → 노트북 열기 → GitHub탭에서 이 저장소 URL 입력- 또는 각 챕터 디렉토리의
.ipynb파일을 직접 업로드
-
Google Drive 마운트 각 노트북의 첫 셀에서 다음 코드를 실행하여 Google Drive를 마운트합니다:
from google.colab import drive drive.mount('/content/drive')
-
필요한 패키지 설치 각 노트북의 설정 셀에서 다음 패키지들을 설치합니다:
!pip install PyPDF2 sentence-transformers faiss-cpu numpy torch requests
-
데이터 경로 설정 노트북 내 경로 변수를 Google Drive 경로에 맞게 수정합니다:
# 예시: Google Drive의 프로젝트 경로 BASE_PATH = "/content/drive/MyDrive/OSTEP_RAG"
각 챕터별 노트북을 순서대로 실행하여 RAG 시스템을 구축합니다:
- Chapter 2: 청킹된 데이터를 JSON 형식으로 변환
- Chapter 3: Sentence Transformers를 사용한 임베딩 생성
- Chapter 4: FAISS HNSW 인덱스 구축
- Chapter 5: Ollama를 사용한 LLM 프롬프트 및 생성
- Chapter 6: 전체 RAG 파이프라인 통합
- Chapter 7: 고급 기법 (HyDE, Reranking, Self-RAG 등)
💡 팁: Colab 사용법이 처음이라면 Colab 사용 가이드를 먼저 참고하세요.
-
GPU 사용:
런타임 → 런타임 유형 변경 → 하드웨어 가속기 → GPU선택- 임베딩 생성 및 FAISS 인덱싱 시 GPU를 사용하면 속도가 향상됩니다
- GPU 사용 확인:
!nvidia-smi실행
-
런타임 관리
- 장시간 작업 시 주기적으로 저장:
파일 → 드라이브에 사본 저장 - 세션 만료 방지: 주기적으로 셀 실행
- 메모리 초기화:
런타임 → 런타임 다시 시작
- 장시간 작업 시 주기적으로 저장:
- PDF 분석: PyPDF2를 사용한 PDF 텍스트 추출 및 목차 파싱
- 스마트 청킹: 문장 단위 분할 및 토큰 기반 청킹
- 임베딩 생성: Sentence Transformers (
all-MiniLM-L6-v2) 모델 사용 - 벡터 검색: FAISS HNSW 인덱스를 통한 효율적인 유사도 검색
- RAG 통합: 검색 → 프롬프트 → 생성 파이프라인
- 고급 기법: HyDE, Reranking, Self-RAG 등 최적화 기법
- Colab 사용 가이드: Google Colab에서 노트북 실행하기
- OSTEP 공식 웹사이트: https://pages.cs.wisc.edu/~remzi/OSTEP/
이슈나 개선 사항이 있으면 이슈를 등록하거나 Pull Request를 보내주세요.
이 프로젝트는 교육 목적으로 제작되었습니다. OSTEP 책의 저작권은 원저자에게 있습니다.