2.6 KiB
2.6 KiB
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
Установка
# 1. Откатить Ollama embedding model
ollama pull nomic-embed-text
# 2. Установить зависимости
pip install -r requirements.txt
Запуск
python main.py
Вы увидите три готовых вопроса и сможете задать свой.
Как работает агент
- Chroma хранит векторные представления всех блоков текста из
data/*.md. - При запросе агент сначала пытается понять, относится ли он к материалам курса (проверка ключевых слов «материал», «конспект» и т.п.).
- Если да – вызывает
search_course_docs, получает 3 наиболее релевантных фрагмента и формирует ответ. - Иначе – вызывает MCP‑tool
fetch_course_metaи возвращает данные о расписании.
Тестовые вопросы
- Какой материал по теме «LangChain» доступен в конспектах?
- Кто преподавал лекцию 12 июня?
- Что нужно сделать, чтобы подключить Ollama embeddings?
Важно: проект не использует Tavily и не дублирует задание «Chroma + Tavily web search».