선호하는 언어로 읽기:
Deutsch | Español | Français | 日本語 | 한국어 | Português | Русский | 中文
이 저장소는 **검색 증강 생성(Retrieval-Augmented Generation, RAG)**에 대한 명확하고 실습 중심의 접근 방식을 취하며, 고급 기법들을 직관적이고 이해하기 쉬운 구현으로 분해합니다. LangChain
이나 FAISS
같은 프레임워크에 의존하는 대신, 여기서는 친숙한 Python 라이브러리인 openai
, numpy
, matplotlib
및 몇 가지 다른 라이브러리를 사용하여 모든 것을 구축했습니다.
목표는 간단합니다: 읽기 쉽고 수정 가능하며 교육적인 코드를 제공하는 것입니다. 기본 원칙에 집중함으로써 이 프로젝트는 RAG의 신비를 풀고 실제로 어떻게 작동하는지 더 쉽게 이해할 수 있도록 돕습니다.
이 저장소에는 각각 특정 RAG 기법에 초점을 맞춘 Jupyter Notebook 컬렉션이 포함되어 있습니다. 각 노트북은 다음을 제공합니다:
다음은 다루는 기법들의 일부입니다:
노트북 | 설명 |
---|---|
1. Simple RAG | 기본적인 RAG 구현. 시작하기에 좋은 포인트! |
2. Semantic Chunking | 의미적 유사성을 기반으로 텍스트를 분할하여 더 의미 있는 청크 생성. |
3. Chunk Size Selector | 다양한 청크 크기가 검색 성능에 미치는 영향 탐구. |
4. Context Enriched RAG | 인접한 청크를 검색하여 더 많은 컨텍스트 제공. |
5. Contextual Chunk Headers | 각 청크에 설명적인 헤더를 추가하여 임베딩 전에 적용. |
6. Document Augmentation RAG | 텍스트 청크에서 질문을 생성하여 검색 프로세스 보강. |
7. Query Transform | 쿼리를 재작성, 확장 또는 분해하여 검색 성능 향상. Step-back Prompting 및 Sub-query Decomposition 포함. |
8. Reranker | LLM을 사용하여 초기 검색 결과를 재정렬하여 관련성 향상. |
9. RSE | Relevant Segment Extraction: 텍스트의 연속적인 세그먼트를 식별하고 재구성하여 컨텍스트 보존. |
10. Contextual Compression | 검색된 청크를 필터링하고 압축하여 관련 정보를 최대화. |
11. Feedback Loop RAG | 사용자 피드백을 통합하여 RAG 시스템을 지속적으로 개선. |
12. Adaptive RAG | 쿼리 유형에 따라 최적의 검색 전략을 동적으로 선택. |
13. Self RAG | Self-RAG 구현: 검색 시기와 방법을 동적으로 결정, 관련성 평가, 지원 및 유용성 평가. |
14. Proposition Chunking | 문서를 원자적이고 사실적인 진술로 분해하여 정밀한 검색 가능. |
15. Multimodel RAG | 텍스트와 이미지를 결합한 검색, LLaVA를 사용하여 이미지 캡션 생성. |
16. Fusion RAG | 벡터 검색과 키워드 기반(BM25) 검색을 결합하여 결과 개선. |
17. Graph RAG | 지식을 그래프로 구성하여 관련 개념 탐색 가능. |
18. Hierarchy RAG | 계층적 인덱스(요약 + 상세 청크) 구축으로 효율적인 검색 가능. |
19. HyDE RAG | Hypothetical Document Embeddings를 사용하여 의미적 매칭 개선. |
20. CRAG | Corrective RAG: 검색 품질을 동적으로 평가하고 웹 검색을 대체 수단으로 사용. |
21. Rag with RL | 강화 학습을 사용하여 RAG 모델의 보상 최대화. |
Best RAG Finder | Simple RAG + Reranker + Query Rewrite를 사용하여 주어진 쿼리에 대한 최적의 RAG 기법 찾기. |
22. Big Data with Knowledge Graphs | 지식 그래프를 사용하여 대용량 데이터 처리. |
fareedkhan-dev-all-rag-techniques/
├── README.md <- You are here!
├── 01_simple_rag.ipynb
├── 02_semantic_chunking.ipynb
├── 03_chunk_size_selector.ipynb
├── 04_context_enriched_rag.ipynb
├── 05_contextual_chunk_headers_rag.ipynb
├── 06_doc_augmentation_rag.ipynb
├── 07_query_transform.ipynb
├── 08_reranker.ipynb
├── 09_rse.ipynb
├── 10_contextual_compression.ipynb
├── 11_feedback_loop_rag.ipynb
├── 12_adaptive_rag.ipynb
├── 13_self_rag.ipynb
├── 14_proposition_chunking.ipynb
├── 15_multimodel_rag.ipynb
├── 16_fusion_rag.ipynb
├── 17_graph_rag.ipynb
├── 18_hierarchy_rag.ipynb
├── 19_HyDE_rag.ipynb
├── 20_crag.ipynb
├── 21_rag_with_rl.ipynb
├── 22_big_data_with_KG.ipynb
├── best_rag_finder.ipynb
├── requirements.txt <- Python dependencies
└── data/
└── val.json <- Sample validation data (queries and answers)
└── AI_Information.pdf <- A sample PDF document for testing.
└── attention_is_all_you_need.pdf <- A sample PDF document for testing (for Multi-Modal RAG).
저장소 복제:
git clone https://github.com/FareedKhan-dev/all-rag-techniques.git
cd all-rag-techniques
의존성 설치:
pip install -r requirements.txt
OpenAI API 키 설정:
Nebius AI에서 API 키 획득.
환경 변수로 API 키 설정:
export OPENAI_API_KEY='YOUR_NEBIUS_AI_API_KEY'
또는
setx OPENAI_API_KEY "YOUR_NEBIUS_AI_API_KEY" # Windows에서
또는 Python 스크립트/노트북 내에서:
import os
os.environ["OPENAI_API_KEY"] = "YOUR_NEBIUS_AI_API_KEY"
노트북 실행:
Jupyter Notebook 또는 JupyterLab을 사용하여 Jupyter Notebook (.ipynb
파일) 열기. 각 노트북은 독립적으로 실행 가능하도록 설계되었습니다. 노트북은 각 파일 내에서 순차적으로 실행되도록 구성되었습니다.
참고: data/AI_Information.pdf
파일은 테스트용 샘플 문서를 제공합니다. 자신의 PDF로 교체할 수 있습니다. data/val.json
파일은 평가를 위한 샘플 쿼리와 이상적인 답변을 포함합니다.
'attention_is_all_you_need.pdf'는 Multi-Modal RAG 노트북 테스트용입니다.
임베딩: 텍스트의 의미를 포착하는 수치적 표현. Nebius AI의 임베딩 API와 많은 노트북에서 BAAI/bge-en-icl
임베딩 모델 사용.
벡터 저장소: 임베딩을 저장하고 검색하기 위한 간단한 데이터베이스. NumPy를 사용하여 효율적인 유사도 계산을 위한 SimpleVectorStore
클래스 생성.
코사인 유사도: 두 벡터 간의 유사도 측정. 값이 높을수록 유사도가 높음.
청킹: 텍스트를 더 작고 관리하기 쉬운 조각으로 분할. 다양한 청킹 전략 탐구.
검색: 주어진 쿼리에 대한 가장 관련성 높은 텍스트 청크를 찾는 과정.
생성: 대형 언어 모델(LLM)을 사용하여 검색된 컨텍스트와 사용자 쿼리를 기반으로 응답 생성. Nebius AI의 API를 통해 meta-llama/Llama-3.2-3B-Instruct
모델 사용.
평가: RAG 시스템의 응답 품질 평가, 종종 참조 답변과 비교하거나 LLM을 사용하여 관련성 점수화.
기여를 환영합니다!