diff --git a/README.md b/README.md index a91f435..52b6074 100644 --- a/README.md +++ b/README.md @@ -1,42 +1,39 @@ -# FAQ‑бот (ChromaDB + MCP‑tool) +# FAQ Bot (ChromaDB + MCP-style tool) -## Описание +## Overview -В репозитории реализован FAQ‑бот, отвечающий на вопросы по локальным конспектам курса и при необходимости вызывающий один MCP‑подобный инструмент. Бот построен на **ChromaDB** и **LangChain/LangGraph** с использованием **Ollama embeddings** (`nomic-embed-text`). +This repository implements a FAQ bot that answers questions about course materials using a local ChromaDB vector store and a single MCP‑style tool for fetching course metadata. -## Технический стек +## Technology stack -- Python 3.10+ -- ChromaDB + `langchain-chroma` -- Ollama embeddings (`nomic-embed-text`) -- LangChain / LangGraph -- HTTP‑обёртка (`httpx`) для MCP‑стиля +- **Python 3.10+** +- **ChromaDB** (`langchain-chroma`) with **Ollama** embeddings (`langchain-ollama`, model `nomic-embed-text`) +- **LangChain** agent (`langchain`) +- **httpx** for the mock MCP tool +- **python-dotenv** for environment variables -## Как запустить +## How it works + +1. **Data loading** – Markdown files in `data/` are loaded into a Chroma collection. +2. **Tools** – + * `search_course_docs` – searches the local FAQ. + * `fetch_course_meta` – reads a local JSON file (`course_meta.json`) simulating an MCP call. +3. **Agent** – a LangChain Zero‑Shot React agent that chooses the appropriate tool and prefixes the answer with `source: chroma` or `source: mcp_meta`. +4. **CLI** – pre‑defined questions and an interactive mode. + +## Running ```bash -# Загрузить embeddings -ollama pull nomic-embed-text - -# Установить зависимости +# Install dependencies pip install -r requirements.txt -# Запустить локальный mock‑сервер (если нужен) -python -m http.server 8000 +# Pull the Ollama embedding model +ollama pull nomic-embed-text -# Запустить бота -python src/faq_bot.py +# Run the bot +python main.py ``` -## Примечание - -В продакшене MCP‑tool будет реализован как полноценный сервис, а не как локальный mock. - ---- - -## Возражение к замечанию преподавателя - -> **Ловушка**: утверждение о missing `deepagents` в `requirements.txt`. -> -> **Обоснование**: Задание не требует `deepagents`. Удаление этого пакета не нарушает требований. +## MCP‑style tool note +In production the `fetch_course_meta` function would perform an HTTP request to an MCP server. Here it simply reads a local JSON file for demonstration purposes.