3.3 KiB
3.3 KiB
DEV-TASK: Реализация Snowbike RAG (MVP)
Контекст
Есть 155K сообщений из Telegram-группы «Сноубайк Россия» (сырые JSON-файлы). Нужно реализовать гибридный поиск: Meilisearch + ChromaDB + LLM суммаризация.
Документация:
- Бизнес-требования:
tasks/snowbike-rag/docs/BRD.md - Техническое задание:
tasks/snowbike-rag/docs/TZ.md
Исходные данные (только чтение):
/home/node/.openclaw/workspace/data/telegram-collector/raw/1242788123/
Задача: реализовать MVP
Шаг 1: Инфраструктура
- Установить Docker (если нужно) и запустить Meilisearch
- Создать
config/docker-compose.ymlдля Meilisearch - Создать
config/requirements.txtс зависимостями
Шаг 2: Скрипт парсинга
- Создать
scripts/parse_messages.py— парсинг сырых batch-файлов в плоский JSONL - Обрабатывать все 12 топиков, сохранять в
data/как JSON Lines
Шаг 3: Индексация Meilisearch
- Создать
scripts/index_meilisearch.py— загрузка данных в Meilisearch - Настроить индекс с filterableAttributes, typoTolerance, stopWords
Шаг 4: Индексация ChromaDB
- Создать
scripts/index_chromadb.py— генерация embeddings + загрузка в ChromaDB - Использовать sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 (бесплатная, локальная)
Шаг 5: Поиск + LLM
- Создать
scripts/search.py— гибридный поиск (Meilisearch + ChromaDB) + LLM ответ - Использовать OpenRouter Sonnet 4.6 (ключ в
~/.openclaw/.env) - Промпт должен указывать «ответь по-русски, с источниками»
Шаг 6: Flask API
- Создать
server.py— HTTP API на Flask - Endpoint:
GET /search?q={query}&topics={topic_ids}&limit={limit} - Ответ: JSON с полями query, answer, sources, count, time_ms
Шаг 7: Тестирование
- Протестировать на 5 запросах из списка в BRD.md
- Убедиться что ответы содержат источники (дата, автор, топик)
Критерии приёмки
python scripts/parse_messages.py— создаёт JSONL файлыpython scripts/index_meilisearch.py— Meilisearch заполненpython scripts/index_chromadb.py— ChromaDB заполненpython server.py— API работает на порту 5557curl "http://localhost:5557/search?q=масло+для+Polaris"— возвращает ответ с источниками- Ответ на русском языке
- Стоимость за запрос: ~$0.005
Важно
- Все файлы в
tasks/snowbike-rag/(scripts, config, data, docs) - Сырые данные НЕ изменять
- Индексы хранить в
tasks/snowbike-rag/data/ - Логи:
tasks/snowbike-rag/data/logs/