Files
wiki/tasks/snowbike-rag/DEV-TASK.md
2026-04-12 21:55:33 +03:00

3.3 KiB
Raw Blame History

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: Инфраструктура

  1. Установить Docker (если нужно) и запустить Meilisearch
  2. Создать config/docker-compose.yml для Meilisearch
  3. Создать config/requirements.txt с зависимостями

Шаг 2: Скрипт парсинга

  1. Создать scripts/parse_messages.py — парсинг сырых batch-файлов в плоский JSONL
  2. Обрабатывать все 12 топиков, сохранять в data/ как JSON Lines

Шаг 3: Индексация Meilisearch

  1. Создать scripts/index_meilisearch.py — загрузка данных в Meilisearch
  2. Настроить индекс с filterableAttributes, typoTolerance, stopWords

Шаг 4: Индексация ChromaDB

  1. Создать scripts/index_chromadb.py — генерация embeddings + загрузка в ChromaDB
  2. Использовать sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 (бесплатная, локальная)

Шаг 5: Поиск + LLM

  1. Создать scripts/search.py — гибридный поиск (Meilisearch + ChromaDB) + LLM ответ
  2. Использовать OpenRouter Sonnet 4.6 (ключ в ~/.openclaw/.env)
  3. Промпт должен указывать «ответь по-русски, с источниками»

Шаг 6: Flask API

  1. Создать server.py — HTTP API на Flask
  2. Endpoint: GET /search?q={query}&topics={topic_ids}&limit={limit}
  3. Ответ: JSON с полями query, answer, sources, count, time_ms

Шаг 7: Тестирование

  1. Протестировать на 5 запросах из списка в BRD.md
  2. Убедиться что ответы содержат источники (дата, автор, топик)

Критерии приёмки

  • python scripts/parse_messages.py — создаёт JSONL файлы
  • python scripts/index_meilisearch.py — Meilisearch заполнен
  • python scripts/index_chromadb.py — ChromaDB заполнен
  • python server.py — API работает на порту 5557
  • curl "http://localhost:5557/search?q=масло+для+Polaris" — возвращает ответ с источниками
  • Ответ на русском языке
  • Стоимость за запрос: ~$0.005

Важно

  • Все файлы в tasks/snowbike-rag/ (scripts, config, data, docs)
  • Сырые данные НЕ изменять
  • Индексы хранить в tasks/snowbike-rag/data/
  • Логи: tasks/snowbike-rag/data/logs/