52 lines
1.8 KiB
Markdown
52 lines
1.8 KiB
Markdown
# FAQ‑Bot – ChromaDB + MCP Tool
|
||
|
||
## Overview
|
||
This project implements an FAQ‑bot that answers questions about local course notes stored in Markdown files using **ChromaDB** for retrieval and a single **MCP‑style tool** for metadata queries.
|
||
|
||
- **Local knowledge** – 2–3 `.md` files in `data/`.
|
||
- **Vector store** – ChromaDB with Ollama embeddings.
|
||
- **Tool** – `fetch_course_meta` that performs a GET request to a local JSON file (mock MCP server).
|
||
- **Agent** – LangGraph agent that routes the query to the appropriate source and labels the answer with `source: chroma | mcp_meta`.
|
||
- **CLI** – 3 example questions (2 for Chroma, 1 for meta) and an interactive mode.
|
||
|
||
## Setup
|
||
```bash
|
||
# Pull Ollama model
|
||
ollama pull nomic-embed-text
|
||
|
||
# Install dependencies
|
||
pip install -r requirements.txt
|
||
|
||
# Start local mock MCP server (JSON file)
|
||
python -m http.server 8000 --directory mock
|
||
```
|
||
|
||
## Running the Bot
|
||
```bash
|
||
python main.py --question "What is the course schedule?"
|
||
```
|
||
|
||
## Example Questions
|
||
1. **Chroma** – *"What topics are covered in week 3?"*
|
||
2. **Chroma** – *"How many hours per week are required?"*
|
||
3. **Meta** – *"What is the course schedule?"*
|
||
|
||
## Project Structure
|
||
```
|
||
├── data/ # Markdown FAQ files
|
||
├── mock/ # JSON mock MCP server
|
||
├── src/
|
||
│ ├── agent.py # LangGraph agent definition
|
||
│ ├── chunker.py # Chroma loader
|
||
│ ├── cli.py # CLI interface
|
||
│ ├── config.py # Config & constants
|
||
│ ├── init_loader.py # Bulk loader
|
||
│ ├── qdrant_store.py # Vector store helper
|
||
│ ├── rag_tools.py # Search & meta tools
|
||
│ ├── tools.py # MCP wrapper
|
||
│ └── vector_store.py # Chroma store
|
||
└── requirements.txt
|
||
```
|
||
|
||
## License
|
||
MIT |