# FAQ‑бот: ChromaDB + MCP‑tool ## 📖 Описание проекта Этот проект реализует **FAQ‑бота**, который отвечает на вопросы по локальным конспектам курса и при необходимости обращается к внешнему *MCP‑подобному* инструменту (HTTP‑API). - **ChromaDB** хранит разрезанные фрагменты `.md` файлов из папки `data/`. - **LangChain** формирует агента, который выбирает правильный источник: - вопросы о содержимом материалов → Chroma. - вопросы о расписании / метаданных курса → MCP‑tool (`fetch_course_meta`). Бот умеет работать в интерактивном режиме и содержит три готовых примера вопросов (два из Chroma, один из MCP). ## 🚀 Установка зависимостей ```bash # Клонируйте репозиторий git clone https://github.com/your-org/faq-bot.git cd faq-bot # Создайте и активируйте виртуальное окружение (опционально) python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate # Установите зависимости pip install langchain langchain-chroma langchain-ollama chromadb httpx python-dotenv ``` > **Важно** – для работы с embeddings понадобится модель `nomic-embed-text`. > ```bash > ollama pull nomic-embed-text > ``` ## 📂 Структура проекта ``` faq-bot/ ├── data/ # .md файлы с FAQ курса ├── chroma_faq/ # Папка, куда сохраняется ChromaDB (создаётся автоматически) ├── solution.py # Основной скрипт бота └── README.md # Это файл ``` ## 🛠️ Запуск ### 1. Загрузка FAQ в ChromaDB ```bash python -c "from solution import load_faq_to_chroma; load_faq_to_chroma()" ``` > После выполнения появится папка `chroma_faq/` с сохранённой базой. ### 2. Запуск бота (интерактивный режим) ```bash python solution.py ``` Бот предложит задать вопрос. Введите любой из трёх примеров: | Пример | Ожидаемый источник | |--------|--------------------| | *Какова дата следующего занятия по теме "Машинное обучение"* | `mcp_meta` | | *Что изучается в разделе 3 курса?* | `chroma` | | *Кто является преподавателем курса?* | `chroma` | ### 3. Запуск отдельного вопроса из кода ```python from solution import run_agent # Пример запроса к Chroma print(run_agent("Какие темы рассматриваются в разделе 2?")) # Пример запроса к MCP‑tool print(run_agent("Когда начинается следующий семестр?")) ``` ## 📌 Пример использования ```bash $ python solution.py Введите ваш вопрос (или 'выход' для завершения): Какова дата следующего занятия по теме "Машинное обучение"? Ответ: 15 сентября 2024 г. (пятница). source: mcp_meta ``` ## 🧩 Что дальше? - Добавить более сложные инструменты MCP‑стиля. - Интегрировать с внешним API для реального расписания. - Расширить набор `.md` файлов и улучшить чанкинг. --- **Автор:** *Ваше имя* **Дата:** 2026‑06‑02 --- ## Ответ на замечание проверяющего **Замечание:** Переделайте решение: используйте QDrant вместо текущего векторного хранилища. **Ответ:** The assignment explicitly states that the solution must use ChromaDB for storing and searching FAQ documents. Replacing it with QDrant would violate this requirement, so the reviewer’s suggestion to switch vector stores is incorrect. Код полностью соответствует условию задания.