rnd-manual-rag-mcp
by niiryoo
README.md
# rnd-manual-rag-mcp
정부과제 매뉴얼(국가연구개발혁신법 관련 5개 문서) 기반 RAG 검색 도구를 만들어, Claude가 조항을 정확히 인용하며 답하도록 grounding 지원. MCP 서버로 노출.
## 폴더 구조
```
rnd-manual-rag-mcp/
├── pyproject.toml # 프로젝트 정의 · 의존성 · 실행 진입점
├── src/
│ └── rnd_rag/ # 라이브러리 (import되는 쪽)
│ ├── paths.py # 데이터 폴더 위치
│ ├── parsing/ # PDF → 조항 단위 청크
│ ├── store/ # SQLite · 벡터/FTS 인덱스
│ ├── search/ # 하이브리드 검색
│ ├── agents/ # LangGraph 오케스트레이션
│ ├── mcp/ # MCP 서버 (검색 도구를 Claude에 노출)
│ └── cli/ # 실행 진입점
├── eval/ # 검증 스크립트, 벤치마크 질문/정답, 평가 결과
├── data/
│ ├── raw/ # 원본 PDF 5개 (git 추적 제외 — 용량)
│ └── processed/ # 청킹 산출물 JSONL (git 추적 제외 — 재생성 가능)
├── db/ # SQLite DB, 인덱스 (git 추적 제외)
├── demo/ # 데모 스크린샷 · GIF
└── docs/ # README, 아키텍처 노트
```
`src/rnd_rag/`는 import되는 라이브러리, `eval/`은 그것을 실행하는 소비자다.
`src` 레이아웃이라 `pip install -e .` 없이는 import되지 않으므로, 설치된 패키지와
작업 디렉터리가 섞이는 혼동이 생기지 않는다.
## 파이프라인 개요
```
data/raw (PDF)
└─ parsing/ 파싱 → 조항 단위 청킹 → data/processed
└─ store/ 색인 → db/ (SQLite + 인덱스)
└─ search/ 하이브리드 검색
└─ agents/ 복잡도 분기 · 검증 루프
└─ mcp/ 검색 도구 제공 → Claude가 조항 인용하며 응답
└─ eval/ 정확도 · 토큰 정량 비교
```
## 시작하기
```powershell
# 1) 가상환경 활성화
.\.venv\Scripts\Activate.ps1
# 2) 프로젝트 설치 (editable — 코드 수정이 바로 반영됨)
pip install -e .
# 3) 원본 PDF 5개를 data/raw/ 에 넣기 (git에는 커밋되지 않음)
# 4) .env 만들고 OPENAI_API_KEY 채우기
copy .env.example .env
```
## 사용
```powershell
rag-build # 5개 문서 청킹 → data/processed/*.jsonl
rag-index # 청킹 산출물 → db/manual.db (임베딩 포함)
python eval\validate.py # 파싱 검증
python eval\check_ground_truth.py # 정답셋이 말뭉치와 맞는지
python eval\check_mcp.py # MCP 서버를 띄워 도구 응답 확인
```
검증 스크립트는 기준을 충족하지 못하면 종료 코드 1을 반환한다.
## Claude Desktop 연결
`claude_desktop_config.json` 에 아래를 추가하고 Claude Desktop 을 재시작한다.
```json
{
"mcpServers": {
"rnd-manual": {
"command": "C:\\경로\\rnd-manual-rag-mcp\\.venv\\Scripts\\python.exe",
"args": ["-m", "rnd_rag.mcp.server"]
}
}
}
```
노출되는 도구는 넷이다. 사용자가 도구 이름을 부를 필요는 없고 Claude 가 질문을
보고 스스로 호출한다.
| 도구 | 용도 |
|---|---|
| `search_manual` | 규정 검색. 출처 쪽번호와 함께 섹션을 돌려준다 |
| `get_section` | 섹션 전문. 긴 섹션은 `offset` 으로 이어서 본다 |
| `find_form` | 서식 수록 위치 |
| `find_citation` | 조항 번호를 인용한 대목 |
## 향후 개선
- 배포 시 의존성 버전 고정(lock) 추가 — 다른 컴퓨터에서 동일 환경 재현
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues