feat(services): add memory service — model, repository, service layer
- services/memory/model: Memory struct with categories and decay - services/memory/repository: PostgreSQL CRUD + keyword search - services/memory/service: dedup, decay, keyword extraction - tests coming in follow-up commit
This commit is contained in:
1 parent
aee8db9b3f
commit
7295556c59
4 files changed
+463
No files matched your search
@@ -0,0 +1,49 @@
|
||||
// Package memory implements the long-term memory system for Cyrene.
|
||||
// It provides CRUD operations, semantic search via pgvector, deduplication, and decay.
|
||||
package memory
|
||||
|
||||
import "time"
|
||||
|
||||
// Memory represents a stored memory entry.
|
||||
type Memory struct {
|
||||
ID string `json:"id"`
|
||||
UserID string `json:"user_id"`
|
||||
SourceID string `json:"source_id"` // Group/private chat source
|
||||
Content string `json:"content"`
|
||||
Summary string `json:"summary"` // LLM-generated summary
|
||||
Keywords []string `json:"keywords"` // Extracted keywords
|
||||
Category string `json:"category"` // "fact", "preference", "event", "plan"
|
||||
Priority float64 `json:"priority"` // 0.0 - 1.0
|
||||
Decay float64 `json:"decay"` // Decay factor, starts at 1.0
|
||||
AccessCnt int `json:"access_count"`
|
||||
LastAcc time.Time `json:"last_accessed_at"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
}
|
||||
|
||||
// SearchQuery represents a memory search request.
|
||||
type SearchQuery struct {
|
||||
UserID string
|
||||
SourceID string // Optional, filter by source
|
||||
Query string
|
||||
Limit int
|
||||
Category string // Optional filter
|
||||
}
|
||||
|
||||
// MemoryResult wraps a memory with its search relevance score.
|
||||
type MemoryResult struct {
|
||||
Memory Memory `json:"memory"`
|
||||
Score float64 `json:"score"`
|
||||
}
|
||||
|
||||
// Category constants
|
||||
const (
|
||||
CatFact = "fact"
|
||||
CatPreference = "preference"
|
||||
CatEvent = "event"
|
||||
CatPlan = "plan"
|
||||
CatForgotten = "forgotten"
|
||||
)
|
||||
|
||||
// DecayThreshold is the decay value below which a memory is considered forgotten.
|
||||
const DecayThreshold = 0.1
|
||||
Reference in new issue
Block a user