memoryweave/go/internal/storage/lancedb.go

37 lines
1.7 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 织忆 MemoryWeave — LanceDB 接口定义
// 所有存储后端实现此接口Go → Rust IPC 由 internal/consolidate 负责
package storage
import (
"github.com/xiaoxue/memoryweave/internal/models"
)
// VValueProvider 外部注入的 V 值查询函数(由 server.go 设置 → selfoptimize.VProp
// 用于召回排序时融合用户决策信号
var VValueProvider func(memoryID string) float64
// LanceDB 存储后端统一接口
// 实现者: SQLiteClient (生产), MemLanceClient (开发/降级)
// 未来: Rust lancedb crate 通过 Unix Socket 提供 LanceDB 原生后端
type LanceDB interface {
InsertEpisode(agentID, namespace, content, category string) (string, error)
GetTopByQuality(agentID string, limit int) ([]models.MemoryRecord, error)
Stats() (map[string]interface{}, error)
SoftDelete(id, reason string) error
// SoftDeleteBatch 批量标记 is_deleted=trueupdated_at=ts单事务提交
SoftDeleteBatch(table string, ids []string, updatedAt string) (int64, error)
GetVersionHistory(id string) ([]map[string]interface{}, error)
GetCandidatesForForgetting() ([]map[string]interface{}, error)
// G7.2: 获取适合结晶为 skill 的记忆候选
GetSkillCandidates(minRecalls, limit int) ([]models.MemoryRecord, error)
Backup(path string) error
GetAuditLog(limit int) ([]map[string]interface{}, error)
IncrementUseful(id string)
IncrementNotUseful(id string)
UpdateMemoryContent(id, newContent, source string) error
InsertMemory(m models.MemoryRecord) error
Search(table string, vector []float32, topK int, namespaceFilter string) ([]models.MemoryRecord, error)
Insert(table string, record any) error
Update(table, id string, fields map[string]any) error
}