빠른 시작¶
이 페이지는 RAG4U를 로컬에서 실행해 샘플 문서를 색인하고 질문하는 최소 절차입니다.
1. 환경 준비¶
cd RAG_system
python -m venv .venv
source .venv/bin/activate
pip install -r requirements-dev.txt
cp .env.example .env
권장 런타임은 Python 3.12 계열입니다. 현재 개발 환경에서 Python 3.12 설치가 막힌 경우에도, wheel이 제공되는 환경에서는 Python 3.14로 동작 확인이 가능합니다.
2. 실제 로컬 검색 설정¶
.env에서 기본 검색 설정을 확인합니다.
APP_VECTOR_BACKEND=chroma
APP_EMBEDDING_PROVIDER=sentence-transformers
APP_EMBEDDING_MODEL=intfloat/multilingual-e5-small
APP_CHROMA_PATH=data/indexes/chroma
이 설정은 문서 청크를 로컬 임베딩 모델로 벡터화하고 Chroma에 저장합니다.
3. API 서버 실행¶
source .venv/bin/activate
uvicorn app.api.main:app --host 127.0.0.1 --port 8010
API 문서는 다음 주소에서 확인합니다.
http://127.0.0.1:8010/docs
4. Streamlit UI 실행¶
다른 터미널에서 실행합니다.
source .venv/bin/activate
APP_API_BASE_URL=http://127.0.0.1:8010 streamlit run app/ui/streamlit_app.py --server.port 8502
브라우저에서 엽니다.
http://localhost:8502
5. 샘플 문서 색인¶
UI의 Documents 탭에서 다음 값을 넣고 Index folder를 누릅니다.
Folder path: data/samples/manual
Domain profile: manual
Recursive: checked
Force reindex: checked
정책 문서도 테스트하려면 다음 폴더를 추가로 색인합니다.
Folder path: data/samples/policy
Domain profile: internal-policy
터미널에서는 다음 명령으로 샘플 전체를 색인할 수 있습니다.
python scripts/ingest_sample.py
6. 질문하기¶
UI의 Question 탭에서 시작합니다.
Provider: mock 또는 codex
Profile: manual
Top K: 3 또는 5
Question: E37 오류는 무엇을 의미하나요?
codex 또는 openai provider를 쓰는 경우 검색된 문서 청크가 외부 provider로 전송되므로 동의 체크박스를 켜야 합니다.
7. Agentic DB Tools 데모¶
알람 이력, 센서 트렌드, 정비 이력을 LLM이 tool로 선택 호출하는 데모를 실행하려면 PostgreSQL을 띄우고 샘플 데이터를 넣습니다.
docker compose up -d rag4u-postgres
python scripts/seed_demo_tool_db.py
Docker CLI에 Compose 플러그인이 없다면 같은 DB를 직접 띄웁니다.
docker run -d --name rag4u-postgres \
-e POSTGRES_USER=rag4u \
-e POSTGRES_PASSWORD=rag4u \
-e POSTGRES_DB=rag4u_tools \
-p 5433:5432 \
postgres:16-alpine
python scripts/seed_demo_tool_db.py
상태 확인:
curl http://127.0.0.1:8010/tools/db/status
UI의 Question 탭에서 다음처럼 질문합니다.
Provider: codex 또는 openai
Use DB tools: checked
Allow sending retrieved document chunks and DB tool results: checked
Question: P-101 최근 알람과 정비 이력을 같이 요약해줘.
8. 평가 실행¶
python scripts/run_eval.py
평가는 샘플 질문이 기대한 파일을 top-k 안에서 찾는지 확인합니다.