You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Инфраструктура RAG уже есть: pgvector, rag_document таблица, RAGSearchSkill, rag.Retriever, rag.Store с ListPending() и UpdateEmbedding(). Проблема: никто не наполняет rag_document и нет воркера индексации.
Источники данных (раздельные пайплайны)
Тип
Статус
Примечание
Книги/статьи по личным финансам
Приоритет 1
PDF или текст
Заметки/контекст (квартира, авто, цели)
Приоритет 2
Free-form текст через бота
Транзакции
Под вопросом
BudgetSkill уже даёт доступ к данным — возможно не нужно
Каждый источник имеет свой metadata.type в rag_document: book, note, transaction.
Реализовать воркер: поллинг rag_document WHERE embedding IS NULL → embed → UpdateEmbedding().
Инфраструктура уже готова (ListPending, UpdateEmbedding), нужно только запустить в main.go.
Worker или cron: каждое воскресенье вечером → запускает advisor → отправляет в Telegram.
Зависит от #52 (on-demand advisor).
Зависимости между компонентами
#47 IndexWorker
↑ нужен для всего
#48 Чанкинг
↑ нужен для #49, #50
#49 CLI загрузка ──→ #52 Advisor on-demand ──→ #53 Advisor weekly
#50 PDF via Telegram (отложено)
#51 Админка (отложено)
Архитектурные решения
Транзакции в RAG: вероятно не нужны — BudgetSkill.summary + forecast дают советнику всё необходимое. Решить при реализации #52.
Советник как отдельный Skill vs action в BudgetSkill: отдельный AdvisorSkill чище, но для MVP можно добавить action advise в BudgetSkill и вынести позже.
Контекст
Инфраструктура RAG уже есть: pgvector,
rag_documentтаблица,RAGSearchSkill,rag.Retriever,rag.StoreсListPending()иUpdateEmbedding(). Проблема: никто не наполняетrag_documentи нет воркера индексации.Источники данных (раздельные пайплайны)
Каждый источник имеет свой
metadata.typeвrag_document:book,note,transaction.Компоненты эпика
1. IndexWorker (Беклог #47)
Реализовать воркер: поллинг
rag_document WHERE embedding IS NULL→ embed →UpdateEmbedding().Инфраструктура уже готова (
ListPending,UpdateEmbedding), нужно только запустить в main.go.2. Чанкинг документов (Беклог #48)
Длинные тексты (книги) нужно делить на чанки перед вставкой в
rag_document.{type: book, title, chunk_index, total_chunks}3. Загрузка книг — CLI/скрипт (Беклог #49)
Простой инструмент для первоначальной загрузки:
go run ./cmd/ingest --file book.txt --title "Кошелёк или жизнь"Не зависит от Telegram-транспорта.
4. Загрузка через Telegram — PDF (Беклог #50)
Пользователь пересылает PDF → бот парсит → чанкует → INSERT в rag_document.
⚠️ Зависит от Telegram-транспорта (обработка вложений). Отложено.
5. Админка / UI для управления документами (Беклог #51)
Простой веб-интерфейс или Telegram-команды для просмотра/удаления документов из базы знаний.
Отложено, но важно для поддержки контента.
6. AdvisorSkill — on-demand (Беклог #52)
Новый skill или action
adviseв BudgetSkill:summary+forecastдля получения данных о тратах7. Проактивный советник — еженедельный (Беклог #53)
Worker или cron: каждое воскресенье вечером → запускает advisor → отправляет в Telegram.
Зависит от #52 (on-demand advisor).
Зависимости между компонентами
Архитектурные решения
Транзакции в RAG: вероятно не нужны — BudgetSkill.summary + forecast дают советнику всё необходимое. Решить при реализации #52.
Советник как отдельный Skill vs action в BudgetSkill: отдельный AdvisorSkill чище, но для MVP можно добавить action
adviseв BudgetSkill и вынести позже.Хранение метаданных:
metadata JSONBуже есть. Формат:{type, source_title, chunk_index, total_chunks, added_at}.MVP последовательность (от простого к сложному)