VectorInstitute/kg-rag
요약
본 저장소는 지식 그래프 기반 RAG(Retrieval Augmented Generation)와 기존의 기준선 RAG 방법론들을 비교하고 구현한 모듈형 Python 패키지입니다. Standard RAG, CoT RAG 같은 전통적 방식과 Entity/Cypher/GraphRAG 등 고급 KG-RAG 방식을 모두 제공합니다. 사용자는 uv를 이용해 환경을 설정하고, 스크립트를 통해 벡터 DB 및 지식 그래프 구축 후 질의 테스트와 성능 평가까지 진행할 수 있습니다.
핵심 포인트
- 지식 그래프 기반 RAG(KG-RAG)와 기준선 RAG 비교 구현
- Standard/CoT RAG 등 다양한 검색 접근 방식 제공
- Cypher 쿼리, 개체 매칭 등 고급 KG-RAG 방법론 포함
- uv를 사용한 종속성 관리 및 체계적인 개발 환경 구축 가이드
이 저장소는 지식 그래프 기반 RAG (Retrieval Augmented Generation) 접근 방식과 비교를 위한 기준선(baseline) 방법론들의 구현 모음을 담고 있습니다. 코드는 모듈형 컴포넌트로 구성된 Python 패키지 형태로 구조화되어 있습니다.
이 저장소는 여러 RAG 접근 방식을 구현합니다:
-
기준선 접근 방식 (Baseline approaches):
- Standard RAG: 벡터 유사성을 사용하는 전통적인 검색 기반 접근 방식
- Chain-of-Thought RAG: 명시적 추론 단계를 포함하여 향상된 검색
-
KG-RAG 접근 방식 (KG-RAG approaches):
- Entity-based approach: 임베딩 기반 개체 매칭과 빔 서치(beam search)를 사용하여 지식 그래프에서 관련 정보를 찾는 방식
- Cypher-based approach: Cypher 쿼리를 사용하여 Neo4j 그래프 데이터베이스에서 정보를 검색하는 방식
- GraphRAG-based approach: 커뮤니티 탐지 및 계층적 검색 전략을 구현한 방식
이 프로젝트는 종속성 관리를 위해 uv를 사용합니다.
# 저장소 복제
git clone https://github.com/yourusername/kg-rag.git
cd kg-rag
...
개발을 위해서는 다음 명령어로 개발 종속성을 설치할 수 있습니다:
uv sync --dev
source .venv/bin/activate
다음 환경 변수들을 내보내십시오:
OPENAI_API_KEY=your_openai_api_key
Cypher 기반 접근 방식의 경우, 다음도 추가하십시오:
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=your_password
먼저, 기준선 RAG 방법들을 위한 벡터 스토어를 구축합니다:
python -m scripts.build_baseline_vectordb \
--docs-dir data/sec-10-q/docs \
--collection-name sec_10q \
...
KG-RAG 방법들을 위한 지식 그래프를 구축합니다:
python -m scripts.build_entity_graph \
--docs-dir data/sec-10-q/docs \
--output-dir data/graphs \
...
기준선 방법들을 사용하여 대화형으로 질의하는 방법:
python -m scripts.run_baseline_rag \
--collection-name sec_10q \
--persist-dir chroma_db \
...
KG-RAG 방법들을 사용하여 대화형으로 질의하는 방법:
python -m scripts.run_entity_rag \
--graph-path data/graphs/sec10q_entity_graph.pkl \
--beam-width 10 \
...
다양한 RAG 방법의 테스트 데이터셋 성능을 평가하려면:
python -m kg_rag.evaluation.run_evaluation \
--data-path data/test_questions.csv \
--graph-path data/graphs/sec10q_entity_graph.pkl \
...
방법에 대한 최적의 하이퍼파라미터를 찾으려면:
python -m kg_rag.evaluation.hyperparameter_search \
--data-path data/test_questions.csv \
--graph-path data/graphs/sec10q_entity_graph.pkl \
...
이 프로젝트는 코드 품질을 보장하기 위해 pre-commit hooks를 사용합니다:
# 모든 파일에 대해 pre-commit hooks 실행
pre-commit run --all-files
# 테스트 실행
pytest
# 커버리지를 포함하여 테스트 실행
...
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기