Files
2026-04-21 15:37:43 +10:00

63 lines
3.2 KiB
Markdown

# RAG, минимальный стек и отладка MCP
## Что такое RAG
**RAG (Retrieval-Augmented Generation)** — подход, при котором модель отвечает не только из «общих» весов, а **сначала находит релевантные фрагменты в ваших данных** (документы, база знаний, код), подмешивает их в контекст и уже тогда формулирует ответ.
## Из чего состоит RAG-стек
1. **Документы**`md` / `pdf` / `txt`, wiki, выгрузки и т.д.
2. **Chunking** — разбиение текста на фрагменты фиксированного размера с перекрытием.
3. **Embeddings** — векторное представление каждого фрагмента.
4. **Vector DB** — хранение векторов и поиск ближайших соседей по запросу.
5. **Retriever** — например MCP-инструмент `search_docs`: достаёт релевантный контекст по вопросу пользователя.
6. **LLM** — генерирует ответ с учётом найденного контекста (и при желании с явными ссылками на источники).
Плюсы такого контура:
- ответы опираются на **ваши** материалы;
- обычно **меньше голых галлюцинаций** по фактам из документации;
- проще **проверять происхождение** ответа (по найденным чанкам и источникам).
## Минимальная локальная конфигурация (этот репозиторий)
Рекомендуемая база:
- Embeddings: `nomic-embed-text` (через Ollama)
- Vector DB: Qdrant
- Retrieval tool: MCP `search_docs`
Готовый пример скриптов и compose: каталог [rag-mcp-starter/](rag-mcp-starter/).
Минимальная схема:
1. Сложить документы (`md`/`txt`/`pdf`).
2. Разбить на чанки (`chunk_size ~1000`, overlap `~120`).
3. Сделать embeddings.
4. Записать в Qdrant.
5. Поднять MCP-инструмент `search_docs`.
6. Вызывать его из OpenClaude.
Быстрый сценарий «с нуля за 30 минут» на Ubuntu: [quickstart-30min.md](quickstart-30min.md).
Интеграция с Git и индексация репозитория как базы знаний: [openclaude-with-repositories.md](openclaude-with-repositories.md).
## Чек-лист, если MCP «не виден»
1. MCP-сервер стартует вручную из каталога starter:
```bash
cd docs/rag-mcp-starter
python mcp_server.py
```
2. Зависимости установлены:
```bash
python -c "import fastmcp, qdrant_client, requests; print('ok')"
```
3. Пути в `~/.claude/settings.json` корректны (`command`, `args`).
4. Qdrant доступен: `curl http://127.0.0.1:6333/collections`
5. Ollama доступен: `curl http://127.0.0.1:11434/api/tags`