# FAQ‑бот (ChromaDB + MCP‑tool) ## Что делает проект * Загружает локальные `.md` файлы с материалами курса в **Chroma**. * Создаёт инструмент `search_course_docs(query, k=3)` для поиска по этим материалам. * Реализует один MCP‑подобный HTTP‑инструмент `fetch_course_meta(query)` – возвращает метаданные расписания из статического JSON. * Агент на базе **LangChain** маршрутизирует запросы: если вопрос относится к содержимому курса, он использует Chroma; если к расписанию/метаданным – MCP‑tool. ## Структура репозитория ``` ├── data/ # исходные .md файлы │ ├── faq1.md │ └── faq2.md ├── meta.json # статический JSON с расписанием ├── main.py # точка входа, CLI и агент ├── requirements.txt # зависимости └── README.md ``` ## Установка ```bash # 1. Откатить Ollama embedding model ollama pull nomic-embed-text # 2. Установить зависимости pip install -r requirements.txt ``` ## Запуск ```bash python main.py ``` Вы увидите три готовых вопроса и сможете задать свой. ## Как работает агент 1. **Chroma** хранит векторные представления всех блоков текста из `data/*.md`. 2. При запросе агент сначала пытается понять, относится ли он к материалам курса (проверка ключевых слов «материал», «конспект» и т.п.). 3. Если да – вызывает `search_course_docs`, получает 3 наиболее релевантных фрагмента и формирует ответ. 4. Иначе – вызывает MCP‑tool `fetch_course_meta` и возвращает данные о расписании. ## Тестовые вопросы 1. *Какой материал по теме «LangChain» доступен в конспектах?* 2. *Кто преподавал лекцию 12 июня?* 3. *Что нужно сделать, чтобы подключить Ollama embeddings?* --- **Важно:** проект не использует Tavily и не дублирует задание «Chroma + Tavily web search».