Files
2026-06-04 15:59:19 +00:00

50 lines
2.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# FAQ‑бот (ChromaDB + MCPtool)
## Что делает проект
* Загружает локальные `.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».