69 lines
2.7 KiB
Markdown
69 lines
2.7 KiB
Markdown
|
|
---
|
|||
|
|
tags: [архітектура, база-даних, postgresql]
|
|||
|
|
created: 2026-07-14
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Модель даних
|
|||
|
|
|
|||
|
|
База: `ai_memory` у **PostgreSQL 18, що працює окремим контейнером у stack'у проекту** (образ `pgvector/pgvector:pg18` — розширення pgvector вже в комплекті, лишається `CREATE EXTENSION vector;`). Див. [[Деплой на TrueNAS]].
|
|||
|
|
|
|||
|
|
## Таблиці
|
|||
|
|
|
|||
|
|
### `projects`
|
|||
|
|
Логіка проектів за аналогією з project-agent.
|
|||
|
|
|
|||
|
|
| Колонка | Тип | Примітка |
|
|||
|
|
|---------|-----|----------|
|
|||
|
|
| id | bigserial PK | |
|
|||
|
|
| name | text UNIQUE | kebab-case |
|
|||
|
|
| summary | text | опис проекту |
|
|||
|
|
| status | text | active / archived |
|
|||
|
|
| metadata | jsonb | розширювані атрибути (repo url тощо) |
|
|||
|
|
| created_at, updated_at | timestamptz | |
|
|||
|
|
|
|||
|
|
### `memories`
|
|||
|
|
Універсальні записи пам'яті.
|
|||
|
|
|
|||
|
|
| Колонка | Тип | Примітка |
|
|||
|
|
|---------|-----|----------|
|
|||
|
|
| id | bigserial PK | |
|
|||
|
|
| project_id | bigint FK → projects, NULL | NULL = глобальний scope |
|
|||
|
|
| type | text | fact / note / session_state / document / entity / … |
|
|||
|
|
| title | text | |
|
|||
|
|
| content | text | markdown |
|
|||
|
|
| content_tsv | tsvector (generated) | FTS-індекс, конфіг simple+ukrainian |
|
|||
|
|
| embedding | vector(1024), NULL | заповнюється у фазі 2 (bge-m3) |
|
|||
|
|
| metadata | jsonb | теги, джерело, агент-автор тощо |
|
|||
|
|
| created_at, updated_at | timestamptz | |
|
|||
|
|
|
|||
|
|
### `memory_links`
|
|||
|
|
Граф зв'язків — аналог `[[wiki-посилань]]` Obsidian.
|
|||
|
|
|
|||
|
|
| Колонка | Тип | Примітка |
|
|||
|
|
|---------|-----|----------|
|
|||
|
|
| source_id | bigint FK → memories | |
|
|||
|
|
| target_id | bigint FK → memories | |
|
|||
|
|
| link_type | text | related / parent / derived-from / … |
|
|||
|
|
| PK | (source_id, target_id, link_type) | |
|
|||
|
|
|
|||
|
|
### `sessions`
|
|||
|
|
Стан сесій проекту (аналог claude_memory у project-agent).
|
|||
|
|
|
|||
|
|
| Колонка | Тип | Примітка |
|
|||
|
|
|---------|-----|----------|
|
|||
|
|
| id | bigserial PK | |
|
|||
|
|
| project_id | bigint FK → projects | |
|
|||
|
|
| session_summary | text | |
|
|||
|
|
| todo_json | jsonb | `{ tasks: [{ task, priority, note }] }` |
|
|||
|
|
| changes | text | |
|
|||
|
|
| bugs | text | |
|
|||
|
|
| architecture_notes | text | |
|
|||
|
|
| created_at | timestamptz | |
|
|||
|
|
|
|||
|
|
## Пошук
|
|||
|
|
|
|||
|
|
- **Фаза 1:** FTS по `content_tsv` + фільтри (project, type, metadata) + ranking `ts_rank`.
|
|||
|
|
- **Фаза 2:** гібридний скоринг — cosine similarity (pgvector, HNSW-індекс) + FTS, об'єднання через RRF (Reciprocal Rank Fusion).
|
|||
|
|
|
|||
|
|
Пов'язане: [[Огляд архітектури]], [[MCP інструменти]]
|