# :memory-vector — `pw.binom.agentik.memory.vector` **Реализация долговременной памяти поверх JVector (ANN-индекс) + SQLite (метаданные) + эмбеддингов.** JVM-only (JVector не публикует KMP-таргеты; на Android ART работает через Java 11 scalar fallback). ## Какую проблему решает `:memory-md` хорош для малых объёмов и дев-окружения, но при тысячах заметок keyword-overlap поиск не справляется. Vector-бэкенд считает **эмбеддинги** заметок, складывает в JVector ANN-индекс, ищет по cosine similarity. `recency-re-rank` подмешивает свежесть, чтобы новые факты не тонули в старых. ## Архитектура ``` ┌───────────────────────┐ user-query ─►│ EmbeddingProvider │ (HTTP /v1/embeddings или SIGLIP2 on-device) └─────────┬─────────────┘ ▼ ┌───────────────────────┐ │ MemoryVectorStore │ │ ├─ JVector (cosine) │ ◄── ANN-search │ └─ SQLite (мета) │ ◄── заметки + lastUsedAt + useCount └───────────────────────┘ ``` Бэкенды эмбеддингов (через `AGENTIK_EMBEDDING_BACKEND`): - **`HTTP`** — POST на `${OPENAI_BASE_URL}/v1/embeddings`. Семантический поиск через OpenAI-совместимый endpoint (vLLM, OpenAI, LiteLLM-proxy). Кэширование LRU(256) на уровне `EmbeddingHttpProvider` для дедупликации. - **`SIGLIP`** — on-device SigLIP2 через ONNX Runtime (768-мерный вектор). Никаких внешних вызовов; модель и токенизатор должны лежать на диске. ## Подключение ```kotlin plugins { kotlin("jvm") } dependencies { implementation("pw.binom.agentik:memory-vector:$version") // Транзитивно: :memory-api + jvector + sqldelight + text-embedding-kmp } ``` `:standalone` инициализирует бэкенд автоматически по `AGENTIK_MEMORY_BACKEND=vector` + `AGENTIK_EMBEDDING_BACKEND=…`. ## Размерности | Backend | Модель | Dim | |---|---|---| | `HTTP` (OpenAI) | `text-embedding-3-small` (default) | 1536 | | `HTTP` (OpenAI) | `text-embedding-3-large` | 3072 | | `SIGLIP` | SigLIP2-base | 768 (фиксировано) | Для `HTTP` размерность управляется через `AGENTIK_EMBEDDING_DIMENSION`; для `SIGLIP` — определяется автоматически. ## Где смотреть версии - `version` из `gradle.properties` (`version=0.1.0`) - релизы: `https://git.binom.pw/subochev/agentik/releases` ## Сборка ```bash ./gradlew :memory-vector:build ``` JVM-only. Тянет `pw.binom.agentik:memory-api` и `com.github.jvector:jvector:3.0.6`.