hr-faq-rag
FAQ RAG 챗봇 — PeopleForce HR SaaS
RAG(Retrieval-Augmented Generation, 검색 증강 생성) 기반의 지능형 HR SaaS FAQ 지원 챗봇 시스템입니다. HR SaaS 기업의 FAQ 문서를 처리하여 벡터 데이터베이스에 인덱싱하고, 사용자의 질문에 대해 문서에서 가장 관련성 높은 조각을 검색하여 LLM으로 정확한 답변을 생성합니다. 이를 통해 수동 검색의 필요성을 없애고 고객 지원 팀의 업무 부담을 줄여줍니다.
RAG 아키텍처
┌──────────────────────────────────────────────────────────────────┐
│ PIPELINE DE INDEXACIÓN │
│ │
│ faq_document.txt ──► Chunking ──► Embeddings ──► ChromaDB │
│ (300 chars, (text-embedding (persistente │
│ 50 overlap) -3-small) local) │
└──────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────┐
│ PIPELINE DE CONSULTA │
│ │
│ Pregunta ──► Embedding ──► k-NN Search ──► Contexto ──► LLM │
│ del usuario de query (coseno, (top-k (gpt-4o │
│ ChromaDB) chunks) -mini) │
│ │ │
│ ▼ │
│ JSON Response │
│ { user_question, │
│ system_answer, │
│ chunks_related } │
└──────────────────────────────────────────────────────────────────┘Related MCP server: RAG-MCP
설치
1. 저장소 복제
git clone <repo-url>
cd kunz-mcp-project2. 가상 환경 생성 및 의존성 설치
python -m venv .venv
source .venv/bin/activate # macOS/Linux
# .venv\Scripts\activate # Windows
pip install -r requirements.txt3. API Key 설정
cp .env.example .env
# Edita .env y agrega tu clave de OpenAI:
# OPENAI_API_KEY=sk-...사용법
인덱싱 파이프라인 실행
python src/build_index.py이 명령은 data/faq_document.txt를 로드하여 청크로 나누고, 임베딩을 생성한 뒤 ChromaDB(data/chroma_db/)에 저장합니다.
쿼리 실행
python src/query.py "¿Cuántos días de vacaciones me corresponden?"예시 JSON 출력:
{
"user_question": "¿Cuántos días de vacaciones me corresponden?",
"system_answer": "Todos los colaboradores de tiempo completo tienen derecho a 15 días hábiles de vacaciones al año a partir de su primer aniversario. Con más de 3 años de antigüedad, se reciben 20 días hábiles, y con más de 7 años, 25 días hábiles.",
"chunks_related": [
{
"text": "¿Cuántos días de vacaciones me corresponden?...",
"metadata": {
"chunk_index": 1,
"total_chunks": 30,
"source": "faq_document.txt"
}
}
]
}평가 에이전트 실행 (보너스)
python src/evaluator.pyoutputs/sample_queries.json의 응답을 평가하고 근거와 함께 0-10점 사이의 점수를 반환합니다.
MCP(Model Context Protocol) 서버
이 프로젝트에는 src/mcp_server.py가 포함되어 있으며, RAG 파이프라인을 MCP 서버로 노출하여 AI 에이전트(Claude Desktop, Cursor, VS Code Copilot 등)가 도구를 직접 호출할 수 있도록 합니다.
사용 가능한 도구
도구 | 설명 |
| 전체 RAG 파이프라인: ChromaDB를 검색하고 GPT-4o-mini로 답변 생성 |
| RAG 응답 품질 평가 (근거와 함께 0-10점 점수 부여) |
| ChromaDB의 FAQ 문서 재인덱싱 (FAQ 업데이트 후 유용) |
사전 요구 사항
서버를 실행하기 전에 인덱스를 먼저 구축했는지 확인하세요:
python src/build_index.py옵션 A — 직접 실행 (stdio 모드)
python src/mcp_server.py이 명령은 모든 MCP 클라이언트와 호환되는 stdio 모드로 서버를 실행합니다.
옵션 B — MCP CLI로 실행
mcp run src/mcp_server.py옵션 C — Claude Desktop과 통합
Claude Desktop 설정 파일을 편집하세요:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"hr-faq-rag": {
"command": "python",
"args": ["/ruta/absoluta/a/kunz-mcp-project/src/mcp_server.py"],
"env": {
"OPENAI_API_KEY": "sk-..."
}
}
}
}Claude Desktop을 재시작하면 채팅에서 도구로 사용할 수 있습니다.
옵션 D — Cursor 또는 VS Code와 통합
에디터의 MCP 설정(.cursor/mcp.json 또는 settings.json)에 추가하세요:
{
"mcpServers": {
"hr-faq-rag": {
"command": "python",
"args": ["src/mcp_server.py"]
}
}
}참고: 서버는 프로젝트의
.env파일에서OPENAI_API_KEY를 읽습니다. 에디터가 환경 변수를 상속받지 못하는 경우, 옵션 C와 같이"env"블록에 명시적으로 전달하세요.
프로젝트 구조
kunz-mcp-project/
├── README.md # Documentación del proyecto
├── requirements.txt # Dependencias con versiones
├── .env.example # Plantilla de variables de entorno
├── config.yaml # Configuración del modelo, embeddings y RAG
├── data/
│ └── faq_document.txt # Documento FAQ fuente (≥1000 palabras)
├── src/
│ ├── __init__.py
│ ├── build_index.py # Pipeline de indexación (load → chunk → embed → store)
│ ├── query.py # Pipeline de consulta (search → generate → JSON)
│ ├── evaluator.py # Agente evaluador de calidad (bonus)
│ ├── mcp_server.py # Servidor MCP (expone los tools vía FastMCP)
│ └── shared/
│ ├── __init__.py
│ ├── config_loader.py # Carga config.yaml + .env
│ └── logger.py # Logger con Rich (colores y formato)
└── outputs/
└── sample_queries.json # ≥3 ejemplos de consulta-respuesta기술적 결정
청킹(Chunking) 전략
chunk_size=300, chunk_overlap=50으로 설정된 **RecursiveCharacterTextSplitter**를 사용합니다.
왜 재귀적인가? 계층적 구분자(
\n\n→\n→.→)는 텍스트의 자연스러운 의미적 경계(섹션, 문단, 문장)를 보존하여 고정 크기 분할보다 더 일관된 청크를 생성합니다.왜 300자인가? 50-500 토큰 범위 내인 약 75-125 토큰의 청크를 생성합니다. 더 작은 청크는 의미적 노이즈를 줄여 벡터 검색의 정확도를 향상시킵니다.
왜 50의 오버랩인가? 오버랩은 인접한 청크 간의 문맥 연속성을 보장하여 중요한 정보가 경계에서 잘리는 것을 방지합니다.
벡터 검색 방식
ChromaDB의 HNSW 인덱스에서 **코사인 유사도를 사용한 k-NN(k-Nearest Neighbors)**을 사용합니다.
왜 k-NN인가? 유사 벡터 검색을 위한 가장 직관적이고 예측 가능한 방법입니다. ChromaDB는 내부적으로 HNSW(Hierarchical Navigable Small World)를 사용하여 하위 선형 시간 검색을 최적화합니다.
왜 코사인인가? 코사인 유사도는 벡터의 크기가 아닌 의미적 방향을 측정합니다. OpenAI의
text-embedding-3-small과 같이 정규화된 텍스트 임베딩에서 유사한 의미를 가진 벡터들이 같은 방향을 가리키므로 이상적입니다.Top-k = 3은 쿼리당 2-5개의 청크를 반환하며, 노이즈를 추가하지 않고 문맥을 제공하기에 충분합니다.
RAG의 이점
재학습 없는 업데이트: LLM의 비용이 많이 드는 파인튜닝 없이 원본 문서를 업데이트하고 재인덱싱하는 것만으로 충분합니다.
투명성: 모든 답변에는 사용된 청크(
chunks_related)가 포함되어 정보의 출처를 확인할 수 있습니다.출처 표기: 각 청크의 메타데이터(
source,chunk_index)를 통해 답변에 대한 완전한 추적 가능성을 제공합니다.
설정
config.yaml 파일에서 모든 매개변수를 중앙 집중식으로 관리합니다:
매개변수 | 값 | 설명 |
|
| 생성용 LLM 모델 |
|
| 일관된 답변을 위한 낮은 온도 |
|
| 임베딩 모델 (1536 차원) |
|
| 문자 단위의 최대 청크 크기 |
|
| 청크 간 오버랩 |
|
| 쿼리당 검색할 청크 수 |
|
| ChromaDB 내 컬렉션 이름 |
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceAn enterprise-ready MCP server that exposes a RAG tool for retrieving relevant context and metadata from a Qdrant vector database using natural language queries.2
- FlicenseNot gradedqualityDmaintenanceA Retrieval Augmented Generation MCP server that ingests documents into a local vector database and enables semantic search queries.10
- FlicenseNot gradedqualityBmaintenanceMCP server for a modular RAG system that enables natural language question answering over enterprise documents with intent-aware routing, adaptive retrieval, and citation-backed responses.
- FlicenseNot gradedqualityCmaintenanceEnables querying company knowledge base using RAG, providing accurate answers from internal documents via MCP.
Related MCP Connectors
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
Official Microsoft MCP Server to query Microsoft Entra data using natural language
MCP server giving Claude AI access to 22+ NYC public-record databases for real estate due diligence
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/fellgar246/kunz-mcp-project'
If you have feedback or need assistance with the MCP directory API, please join our Discord server