Initial commit: Pegas Memory (PG + Qdrant + Memgraph, MCP server, 14 tools)

This commit is contained in:
n1kt4r committed 2026-10-15 13:40:06 +05:00
commit 83e77ea8c9
24 files changed
+2201

No files matched your search

+97
View File
@@ -0,0 +1,97 @@
# Pegas Memory — Roadmap
Подсистема памяти и базы знаний агента Alicorn («Pegas»). Реализация на Python как отдельный
сервис, который Rust-ядро Alicorn вызывает через MCP/HTTP. Спецификация — в
`alicorn-agent/ARCHITECTURE.md` (ADR-4, ADR-11, ADR-12).
## Принятые решения (по итогам обсуждения)
1. **PostgreSQL = единственный источник истины.** Текст, метаданные, трейсы, верификация, outbox.
2. **Qdrant = векторный срез** (EmbeddingGemma 2, dim=768). Замена pgvector.
3. **Memgraph = графовый срез** (связи атомов, зависимости кода). Замена Apache AGE.
4. **pgvector и AGE — НЕ используем.** Векторы только в Qdrant, граф только в Memgraph.
5. **Единица знания — типизированный «атом»**, не чанк сырого текста.
Типы: `text | definition | logical_rule | code | table | fact`.
6. **Память агента (episodic) ≠ база знаний (curated).** Разные таблицы/субсистемы.
7. **Код хранится отдельно**: content-addressed исходники + tree-sitter символы + граф зависимостей.
8. **Логические знания** — структурные правила (pattern→conclusion) с инференцией в графе.
9. **Исследование пробелов** — замкнутый цикл: detect→plan→acquire→parse→extract→value→verify→commit.
## Инфраструктура (проверено на сервере)
| Компонент | Адрес | Состояние |
|---|---|---|
| PostgreSQL 16 | atom-db :5434 (user atom, db content_atom) | работает |
| Qdrant | :6333 | работает |
| Memgraph (bolt) | :7687 | работает |
| Ollama | :11434 | работает |
| EmbeddingGemma 2 | `embeddinggemma-2-740m-Q8_0` | dim=768, R@1 0.922 (лучшая на ru) |
| LLM-генерация | `lfm25-24b-a2b:128k`, `qwen3.5:4b`, `gemma4:E4B` | работает |
> EmbeddingGemma 2: полная размерность 768 (проверено curl-тестом). Q8_0 — оптимальный
> баланс качество/память (MRR 0.944, не теряет качество). Не путать с v1 `embeddinggemma:300m`.
## Модель данных (PostgreSQL — канон)
```
document — источники (web|pdf|epub|text|code_repo), uri, authority, content_hash
chunk — сырые сегменты (доказательства, locator) — НЕ для retrieval напрямую
atom — типизированные единицы знания (claim + content + confidence + status)
atom_link — связи (inference|cause|reference|contradicts|depends_on|calls|defines)
citation — доказательная база (atom → document → locator → quoted_text)
code_symbol — tree-sitter символы (repo, path, language, name, kind, signature)
episodic_trace— память агента (шаги/действия) — отдельно от базы знаний
research_gap — выявленные пробелы для исследования
outbox — CDC-журнал для синка в Qdrant + Memgraph
```
Статусы атома: `candidate → verified | stale | contested`.
Векторы НЕ хранятся в Postgres — только в Qdrant (payload: type/confidence/status/doc_id).
## Фазы
### Фаза 1 — Фундамент (MVP) ✅ ЗАВЕРШЕНА
- [x] Структура проекта + venv + зависимости
- [x] DDL Postgres (schema.sql)
- [x] Клиент эмбеддингов EmbeddingGemma 2 (dim=768)
- [x] Клиент Qdrant (коллекция `alicorn_atoms`)
- [x] Клиент Memgraph (узлы atom + рёбра atom_link)
- [x] Ингест: text/pdf/epub/web → чанки
- [x] Дистилляция чанка → атомы (LLM)
- [x] Outbox-синк PG → Qdrant + Memgraph
- [x] Smoke-тест end-to-end
### Фаза 2 — Исследование пробелов ✅ (реализовано, snippet-fallback)
- [x] Детект пробелов (research_gap + add_gap/list_gaps)
- [x] Планирование (приоритизированная очередь пробелов)
- [x] Acquire: SearXNG web-поиск (3 источника) + pdf/epub/text
- [x] Оценка ценности (verify_atom + min_confidence)
- [~] Верификация (verify_atom готов; полный автономный прогон требует прокси для зарубежных сайтов)
### Фаза 3 — Код ✅ / Логика ✅
- [x] tree-sitter: извлечение символов (function/class/method/type) — 43 символа сохранено
- [x] Граф зависимостей кода (calls/imports/inherits) — 310 зависимостей, 162 узла CodeSymbol
- [x] Логические правила + инференция в Memgraph (forward-chaining до fixpoint, 38 рёбер выведено)
### Фаза 4 — Интеграция с DSH (MCP) ✅ ВЫПОЛНЕНА
- [x] MCP-сервер (memory_search/store/ingest/add_gap/list_gaps/research/stats/get_context)
- [x] Подключение к DSH через @deepseek-ai/dsh-mcp-client (cordis.patch.yml, live-reload)
- [ ] Подключение к Rust-ядру Alicorn (Planner/Researcher) — когда ядро будет готово
## Дополнительно реализовано
- Опциональный прокси (PROXY_URL, SOCKS5/HTTP) + улучшенный User-Agent для полной загрузки страниц.
- Фильтрация артефактов графа кода (dst="." от относительных импортов).
- Дедупликация в memory_store (опциональный dedup).
(после MVP)
- Семантическая дедупликация атомов (эмбеддинги EmbeddingGemma 2, порог 0.90, конфигурируемо).
- Фильтрация шумных logical_rule (только kind-рёбра) в инференции.
## Критические риски
- EmbeddingGemma 2 dim=768 — не совместима с bge-m3 (1024) → отдельная коллекция, без миграции.
- Memgraph in-memory: объём графа ограничен RAM.
- Дистилляция зависит от качества локальной LLM — нужна верификация.
## Как проверять
- recall@k на реальных запросах против существующей `knowledge_base` (bge-m3 384-dim).
- Latency эмбеддинга + потребление GPU параллельно с LLM (a2000 12 GB).