memory

package
v0.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 9, 2025 License: Apache-2.0 Imports: 12 Imported by: 0

README

memory 记忆管理系统

本模块是 goagent 框架的记忆管理系统,提供对话历史、案例存储、向量搜索和分层记忆能力。

目录

架构设计

系统架构图
graph TB
    subgraph "接口层"
        ConvStore["ConversationStore<br/>对话存储接口"]
        VecStore["VectorStore<br/>向量存储接口"]
        Embedder["Embedder<br/>嵌入生成接口"]
        EnhancedMem["EnhancedMemory<br/>高级记忆接口"]
    end

    subgraph "实现层"
        InMemMgr["InMemoryManager<br/>完整内存实现"]
        HierMem["HierarchicalMemory<br/>分层记忆"]
    end

    subgraph "记忆存储层"
        ShortTerm["ShortTermMemory<br/>短期记忆"]
        LongTerm["LongTermMemory<br/>长期记忆"]
        Consolidator["MemoryConsolidator<br/>记忆巩固器"]
    end

    subgraph "向量存储层"
        InMemVec["InMemoryVectorStore"]
        EmbedVec["EmbeddingVectorStore"]
        ChromaVec["ChromaVectorStore"]
    end

    ConvStore --> InMemMgr
    VecStore --> HierMem
    HierMem --> ShortTerm
    HierMem --> LongTerm
    HierMem --> Consolidator
    LongTerm --> InMemVec
    LongTerm --> ChromaVec

    style ConvStore fill:#e1f5ff
    style VecStore fill:#e1f5ff
    style InMemMgr fill:#e8f5e9
    style HierMem fill:#e8f5e9
记忆存取流程
sequenceDiagram
    participant Agent as Agent
    participant Mgr as MemoryManager
    participant Short as 短期记忆
    participant Long as 长期记忆
    participant Vec as 向量存储

    Agent->>Mgr: StoreTyped(key, value)
    Mgr->>Short: 存入短期记忆
    Short-->>Mgr: 存储成功

    Note over Short,Long: 后台巩固任务

    Short->>Long: 高重要性记忆
    Long->>Vec: 生成向量嵌入
    Vec-->>Long: 索引完成

    Agent->>Mgr: VectorSearch(query)
    Mgr->>Vec: 相似度搜索
    Vec-->>Mgr: 匹配结果
    Mgr-->>Agent: [MemoryEntry...]
分层记忆架构
┌─────────────────────────────────────────────────────────┐
│                   应用层 (Agent)                         │
└─────────────────────────────────────────────────────────┘
                          ↓
┌─────────────────────────────────────────────────────────┐
│              记忆管理器 (MemoryManager)                  │
│  - 对话管理                                              │
│  - 案例存储                                              │
│  - 键值存储                                              │
└─────────────────────────────────────────────────────────┘
                          ↓
┌─────────────────────────────────────────────────────────┐
│              分层记忆 (HierarchicalMemory)               │
│  ┌─────────────────┐    ┌─────────────────┐            │
│  │   短期记忆       │ ←→ │   长期记忆       │            │
│  │   - 容量有限     │    │   - 持久化       │            │
│  │   - LRU 驱逐     │    │   - 向量索引     │            │
│  └─────────────────┘    └─────────────────┘            │
│                   ↓ 巩固 ↑                               │
│            MemoryConsolidator                           │
└─────────────────────────────────────────────────────────┘

核心组件

1. ConversationStore 对话存储

管理会话对话历史:

type ConversationStore interface {
    Add(ctx context.Context, conv *Conversation) error
    Get(ctx context.Context, sessionID string, limit int) ([]*Conversation, error)
    Clear(ctx context.Context, sessionID string) error
    Count(ctx context.Context, sessionID string) (int, error)
}
2. VectorStore 向量存储

支持向量相似度搜索:

type VectorStore interface {
    Add(ctx context.Context, id string, embedding []float64, metadata map[string]interface{}) error
    Search(ctx context.Context, embedding []float64, limit int) ([]*SearchResult, error)
    Delete(ctx context.Context, id string) error
    Clear(ctx context.Context) error
}
3. EnhancedMemory 增强记忆

支持分层记忆和高级操作:

type EnhancedMemory interface {
    StoreTyped(ctx, key, value, memType, opts) error
    GetByType(ctx, memType, limit) ([]*MemoryEntry, error)
    VectorSearch(ctx, embedding, limit, threshold) ([]*MemoryEntry, error)
    Consolidate(ctx) error  // 短期 -> 长期巩固
    Forget(ctx, threshold) error  // 遗忘不重要的记忆
    Associate(ctx, id1, id2, strength) error  // 创建关联
}

记忆类型

五种记忆分类
类型 说明 适用场景
ShortTerm 工作记忆,容量有限 当前对话上下文
LongTerm 持久记忆 重要信息长期保存
Episodic 事件性记忆 "发生了什么"
Semantic 知识型记忆 事实和知识
Procedural 程序化记忆 "如何做"
MemoryEntry 结构
type MemoryEntry struct {
    ID          string                   // 唯一标识
    Type        MemoryType              // 记忆类型
    Content     interface{}             // 记忆内容
    Embedding   []float32               // 向量嵌入
    Timestamp   time.Time               // 创建时间
    LastAccess  time.Time               // 最后访问时间
    AccessCount int                     // 访问次数
    Importance  float64                 // 重要程度 (0.0-1.0)
    Decay       float64                 // 衰减系数
    Tags        []string                // 标签
    Related     []string                // 关联的其他记忆ID
}

使用方法

基础对话管理
// 创建记忆管理器
manager := memory.NewInMemoryManager(memory.DefaultConfig())

// 添加对话
conv := &memory.Conversation{
    SessionID: "user-123",
    Role:      "user",
    Content:   "如何优化数据库查询?",
    Timestamp: time.Now(),
}
manager.AddConversation(ctx, conv)

// 获取对话历史
history, err := manager.GetConversationHistory(ctx, "user-123", 10)

// 清除会话
manager.ClearConversation(ctx, "user-123")
案例存储与检索
// 添加案例
caseMemory := &memory.Case{
    Title:    "数据库查询超时",
    Problem:  "查询执行时间超过 30 秒",
    Solution: "为外键列添加索引",
    Category: "performance",
    Tags:     []string{"database", "optimization"},
}
manager.AddCase(ctx, caseMemory)

// 搜索相似案例
similar, err := manager.SearchSimilarCases(ctx, "数据库查询很慢", 5)
for _, c := range similar {
    fmt.Printf("相似案例: %s (相似度: %.2f)\n", c.Title, c.Similarity)
}
键值存储
// 存储数据
manager.Store(ctx, "user:preferences", map[string]interface{}{
    "language": "zh-CN",
    "theme":    "dark",
})

// 检索数据
prefs, err := manager.Retrieve(ctx, "user:preferences")

// 删除数据
manager.Delete(ctx, "user:preferences")
分层记忆系统
// 创建向量存储
vecStore := memory.NewInMemoryVectorStore(1536)

// 创建分层记忆
hierMem := memory.NewHierarchicalMemoryWithContext(ctx, vecStore,
    memory.WithShortTermCapacity(100),
    memory.WithConsolidationInterval(5*time.Minute),
)

// 存储带类型的记忆
hierMem.StoreTyped(ctx, "query-plan-001", planData,
    memory.MemoryTypeEpisodic,
    memory.StoreOptions{Importance: 0.8},
)

// 按类型检索
entries, err := hierMem.GetByType(ctx, memory.MemoryTypeEpisodic, 10)

// 向量搜索
embedding := getEmbedding("数据库优化")
results, err := hierMem.VectorSearch(ctx, embedding, 5, 0.8)

// 创建记忆关联
hierMem.Associate(ctx, "query-001", "query-002", 0.8)

// 获取关联记忆
associated, err := hierMem.GetAssociated(ctx, "query-001", 5)

// 手动触发巩固
hierMem.Consolidate(ctx)

// 遗忘不重要的记忆
hierMem.Forget(ctx, 0.3) // 遗忘重要性低于 0.3 的记忆

// 关闭(等待后台任务完成)
hierMem.Shutdown(ctx)
向量存储使用
// 内存向量存储
vecStore := memory.NewInMemoryVectorStore(1536)
vecStore.Store(ctx, "doc-1", embedding)

// 相似度搜索
ids, scores, err := vecStore.Search(ctx, queryEmbedding, 10, 0.8)

// 使用外部嵌入模型
embeddingModel := memory.NewSimpleEmbeddingModel(1536)
vecStore := memory.NewEmbeddingVectorStore(embeddingModel)

// Chroma 向量数据库集成
chromaStore := memory.NewChromaVectorStore(chromaClient, "collection-name")

API 参考

InMemoryManager
// 创建
NewInMemoryManager(config *Config) *InMemoryManager

// 对话管理
AddConversation(ctx, conv *Conversation) error
GetConversationHistory(ctx, sessionID string, limit int) ([]*Conversation, error)
ClearConversation(ctx, sessionID string) error

// 案例管理
AddCase(ctx, caseMemory *Case) error
SearchSimilarCases(ctx, query string, limit int) ([]*Case, error)

// 键值存储
Store(ctx, key string, value interface{}) error
Retrieve(ctx, key string) (interface{}, error)
Delete(ctx, key string) error
Clear(ctx) error
HierarchicalMemory
// 创建
NewHierarchicalMemoryWithContext(ctx, vectorStore, opts ...MemoryOption) *HierarchicalMemory

// 类型化存储
StoreTyped(ctx, key, value, memType, opts) error
GetByType(ctx, memType, limit) ([]*MemoryEntry, error)

// 向量搜索
VectorSearch(ctx, embedding, limit, threshold) ([]*MemoryEntry, error)

// 记忆管理
Consolidate(ctx) error
Forget(ctx, threshold float64) error
Associate(ctx, id1, id2 string, strength float64) error
GetAssociated(ctx, id string, limit int) ([]*MemoryEntry, error)

// 生命周期
Shutdown(ctx) error
GetStats() *MemoryStats
VectorStore 实现
// 内存向量存储
NewInMemoryVectorStore(dimension int) *InMemoryVectorStore

// 嵌入向量存储
NewEmbeddingVectorStore(model EmbeddingModel) *EmbeddingVectorStore

// Chroma 向量存储
NewChromaVectorStore(client ChromaClient, collection string) *ChromaVectorStore

// 通用操作
Store(ctx, id string, vector []float32) error
Search(ctx, query []float32, k int, threshold float64) (ids []string, scores []float64, error)
Delete(ctx, id string) error
Clear(ctx) error
Size() int

代码结构

memory/
├── manager.go              # 配置和接口定义
├── inmemory.go             # 基础内存实现
├── enhanced.go             # 分层记忆系统
├── shortterm_longterm.go   # 短期/长期记忆
├── memory_vector_store.go  # 向量存储实现
├── simple_cache_test.go
└── memory_test.go

配置选项

type Config struct {
    MaxConversationLength int           // 最大对话长度
    VectorStoreType       string        // 向量存储类型
    EmbeddingModel        string        // 嵌入模型
    SimilarityThreshold   float64       // 相似度阈值
}

// 默认配置
config := memory.DefaultConfig()

特性说明

自动巩固机制
  • 后台任务每 5 分钟运行一次
  • 将重要的短期记忆自动升级到长期存储
  • 基于访问频率和重要性评分决定
记忆衰减
  • 未访问的记忆重要性随时间递减
  • 可配置衰减系数
  • 支持手动遗忘低重要性记忆
向量相似度搜索
  • 基于余弦相似度计算
  • 支持设置相似度阈值
  • 可集成外部向量数据库

扩展阅读

Documentation

Overview

Package memory provides enhanced memory capabilities for agents

Index

Constants

View Source
const (
	VectorStoreTypeMemory   = "memory"   // 内存存储
	VectorStoreTypeChroma   = "chroma"   // Chroma 向量数据库
	VectorStoreTypePinecone = "pinecone" // Pinecone
	VectorStoreTypeWeaviate = "weaviate" // Weaviate
)

向量存储类型

View Source
const (
	EmbedderProviderOpenAI = "openai" // OpenAI
	EmbedderProviderLocal  = "local"  // 本地模型
	EmbedderProviderMock   = "mock"   // Mock(测试用)
)

嵌入提供商

View Source
const (
	DefaultMaxConversationLength = 10   // 默认最大对话长度
	DefaultSearchLimit           = 5    // 默认搜索结果数量
	DefaultSimilarityThreshold   = 0.7  // 默认相似度阈值
	DefaultEmbeddingDimension    = 1536 // OpenAI text-embedding-ada-002 维度
)

默认配置值

Variables

This section is empty.

Functions

This section is empty.

Types

type ChromaClient

type ChromaClient interface {
	// CreateCollection creates a new collection
	CreateCollection(ctx context.Context, name string, metadata map[string]interface{}) error

	// AddDocuments adds documents to a collection
	AddDocuments(ctx context.Context, collection string, ids []string, embeddings [][]float32, documents []map[string]interface{}) error

	// Query queries a collection
	Query(ctx context.Context, collection string, queryEmbeddings [][]float32, k int) (*ChromaQueryResult, error)

	// Delete deletes documents from a collection
	Delete(ctx context.Context, collection string, ids []string) error

	// DeleteCollection deletes a collection
	DeleteCollection(ctx context.Context, name string) error
}

ChromaClient interface for Chroma database operations

type ChromaQueryResult

type ChromaQueryResult struct {
	IDs       [][]string                 `json:"ids"`
	Distances [][]float64                `json:"distances"`
	Documents [][]map[string]interface{} `json:"documents"`
}

ChromaQueryResult represents query results from Chroma

type ChromaVectorStore

type ChromaVectorStore struct {
	// contains filtered or unexported fields
}

ChromaVectorStore integrates with Chroma vector database

func NewChromaVectorStore

func NewChromaVectorStore(client ChromaClient, collection string, dimension int) *ChromaVectorStore

NewChromaVectorStore creates a new Chroma vector store

func (*ChromaVectorStore) Clear

func (s *ChromaVectorStore) Clear(ctx context.Context) error

Clear clears the collection

func (*ChromaVectorStore) Delete

func (s *ChromaVectorStore) Delete(ctx context.Context, id string) error

Delete deletes from Chroma

func (*ChromaVectorStore) GenerateEmbedding

func (s *ChromaVectorStore) GenerateEmbedding(ctx context.Context, content interface{}) ([]float32, error)

GenerateEmbedding generates embeddings (requires external model)

func (*ChromaVectorStore) Search

func (s *ChromaVectorStore) Search(ctx context.Context, query []float32, k int, threshold float64) ([]string, []float64, error)

Search searches in Chroma

func (*ChromaVectorStore) Size

func (s *ChromaVectorStore) Size() int

Size returns the size (not implemented for Chroma)

func (*ChromaVectorStore) Store

func (s *ChromaVectorStore) Store(ctx context.Context, id string, vector []float32) error

Store stores a vector in Chroma

type Config

type Config struct {
	// 对话记忆配置
	EnableConversation    bool `json:"enable_conversation"`     // 是否启用对话记忆
	MaxConversationLength int  `json:"max_conversation_length"` // 最大对话长度

	// 向量存储配置
	EnableVectorStore  bool   `json:"enable_vector_store"` // 是否启用向量存储
	VectorStoreType    string `json:"vector_store_type"`   // 向量存储类型
	VectorStorePath    string `json:"vector_store_path"`   // 向量存储路径
	EmbeddingDimension int    `json:"embedding_dimension"` // 嵌入维度

	// 嵌入器配置
	EmbeddingModel    string `json:"embedding_model"`    // 嵌入模型
	EmbeddingProvider string `json:"embedding_provider"` // 嵌入提供商

	// 搜索配置
	DefaultSearchLimit  int     `json:"default_search_limit"` // 默认搜索结果数量
	SimilarityThreshold float64 `json:"similarity_threshold"` // 相似度阈值
}

Config 记忆管理器配置

func DefaultConfig

func DefaultConfig() *Config

DefaultConfig 返回默认配置

type ConversationStore

type ConversationStore interface {
	// Add 添加对话
	Add(ctx context.Context, conv *interfaces.Conversation) error

	// Get 获取对话历史
	Get(ctx context.Context, sessionID string, limit int) ([]*interfaces.Conversation, error)

	// Clear 清空会话
	Clear(ctx context.Context, sessionID string) error

	// Count 获取会话对话数量
	Count(ctx context.Context, sessionID string) (int, error)
}

ConversationStore 对话存储接口

type Embedder

type Embedder interface {
	// Embed 生成文本嵌入
	Embed(ctx context.Context, text string) ([]float64, error)

	// EmbedBatch 批量生成嵌入
	EmbedBatch(ctx context.Context, texts []string) ([][]float64, error)
}

Embedder 嵌入生成器接口

type EmbeddingModel

type EmbeddingModel interface {
	// Embed generates embeddings for text
	Embed(ctx context.Context, text string) ([]float32, error)

	// EmbedBatch generates embeddings for multiple texts
	EmbedBatch(ctx context.Context, texts []string) ([][]float32, error)

	// Dimension returns the embedding dimension
	Dimension() int
}

EmbeddingModel interface for generating embeddings

type EmbeddingVectorStore

type EmbeddingVectorStore struct {
	*InMemoryVectorStore
	// contains filtered or unexported fields
}

EmbeddingVectorStore uses an external embedding model

func NewEmbeddingVectorStore

func NewEmbeddingVectorStore(embedder EmbeddingModel) *EmbeddingVectorStore

NewEmbeddingVectorStore creates a vector store with an embedding model

func (*EmbeddingVectorStore) GenerateEmbedding

func (s *EmbeddingVectorStore) GenerateEmbedding(ctx context.Context, content interface{}) ([]float32, error)

GenerateEmbedding uses the embedding model to generate embeddings

type EnhancedMemory

type EnhancedMemory interface {
	// Store memory with specific type
	StoreTyped(ctx context.Context, key string, value interface{}, memType MemoryType, opts StoreOptions) error

	// Retrieve memories by type
	GetByType(ctx context.Context, memType MemoryType, limit int) ([]*MemoryEntry, error)

	// Search memories using vector similarity
	VectorSearch(ctx context.Context, embedding []float32, limit int, threshold float64) ([]*MemoryEntry, error)

	// Consolidate short-term to long-term memory
	Consolidate(ctx context.Context) error

	// Forget old or unimportant memories
	Forget(ctx context.Context, threshold float64) error

	// Get memory statistics
	GetStats() *MemoryStats

	// Create associations between memories
	Associate(ctx context.Context, id1, id2 string, strength float64) error

	// Get associated memories
	GetAssociated(ctx context.Context, id string, limit int) ([]*MemoryEntry, error)
}

EnhancedMemory provides advanced memory capabilities

type HierarchicalMemory

type HierarchicalMemory struct {
	// contains filtered or unexported fields
}

HierarchicalMemory implements a hierarchical memory system

func NewHierarchicalMemoryWithContext

func NewHierarchicalMemoryWithContext(parentCtx context.Context, vectorStore VectorStore, opts ...MemoryOption) *HierarchicalMemory

NewHierarchicalMemoryWithContext creates a new hierarchical memory system with a parent context

func (*HierarchicalMemory) Associate

func (m *HierarchicalMemory) Associate(ctx context.Context, id1, id2 string, strength float64) error

Associate creates associations between memories

func (*HierarchicalMemory) Clear

func (m *HierarchicalMemory) Clear(ctx context.Context) error

Clear clears all memory

func (*HierarchicalMemory) Consolidate

func (m *HierarchicalMemory) Consolidate(ctx context.Context) error

Consolidate consolidates short-term to long-term memory

func (*HierarchicalMemory) Forget

func (m *HierarchicalMemory) Forget(ctx context.Context, threshold float64) error

Forget removes old or unimportant memories

func (*HierarchicalMemory) Get

func (m *HierarchicalMemory) Get(ctx context.Context, key string) (interface{}, error)

Get retrieves a value from memory

func (*HierarchicalMemory) GetAssociated

func (m *HierarchicalMemory) GetAssociated(ctx context.Context, id string, limit int) ([]*MemoryEntry, error)

GetAssociated retrieves associated memories

func (*HierarchicalMemory) GetByType

func (m *HierarchicalMemory) GetByType(ctx context.Context, memType MemoryType, limit int) ([]*MemoryEntry, error)

GetByType retrieves memories by type

func (*HierarchicalMemory) GetStats

func (m *HierarchicalMemory) GetStats() *MemoryStats

GetStats returns memory statistics

func (*HierarchicalMemory) Search

func (m *HierarchicalMemory) Search(ctx context.Context, query string, limit int) ([]interface{}, error)

Search searches for memories matching a query

func (*HierarchicalMemory) Shutdown

func (m *HierarchicalMemory) Shutdown(ctx context.Context) error

Shutdown gracefully shuts down the memory system

func (*HierarchicalMemory) Store

func (m *HierarchicalMemory) Store(ctx context.Context, key string, value interface{}, opts StoreOptions) error

Store stores a value in memory

func (*HierarchicalMemory) StoreTyped

func (m *HierarchicalMemory) StoreTyped(ctx context.Context, key string, value interface{}, memType MemoryType, opts StoreOptions) error

StoreTyped stores memory with specific type

func (*HierarchicalMemory) VectorSearch

func (m *HierarchicalMemory) VectorSearch(ctx context.Context, embedding []float32, limit int, threshold float64) ([]*MemoryEntry, error)

VectorSearch searches memories using vector similarity

type InMemoryManager

type InMemoryManager struct {
	// contains filtered or unexported fields
}

InMemoryManager 内存记忆管理器实现

func NewInMemoryManager

func NewInMemoryManager(config *Config) *InMemoryManager

NewInMemoryManager 创建内存记忆管理器

func (*InMemoryManager) AddCase

func (m *InMemoryManager) AddCase(ctx context.Context, caseMemory *interfaces.Case) error

AddCase 添加案例

func (*InMemoryManager) AddConversation

func (m *InMemoryManager) AddConversation(ctx context.Context, conv *interfaces.Conversation) error

AddConversation 添加对话

func (*InMemoryManager) Clear

func (m *InMemoryManager) Clear(ctx context.Context) error

Clear 清空所有记忆 Lock acquisition order: convMu -> storeMu -> casesMu (always maintain this order to prevent deadlock)

func (*InMemoryManager) ClearConversation

func (m *InMemoryManager) ClearConversation(ctx context.Context, sessionID string) error

ClearConversation 清空会话对话

func (*InMemoryManager) Delete

func (m *InMemoryManager) Delete(ctx context.Context, key string) error

Delete 删除键值对

func (*InMemoryManager) GetConversationHistory

func (m *InMemoryManager) GetConversationHistory(ctx context.Context, sessionID string, limit int) ([]*interfaces.Conversation, error)

GetConversationHistory 获取对话历史

func (*InMemoryManager) Retrieve

func (m *InMemoryManager) Retrieve(ctx context.Context, key string) (interface{}, error)

Retrieve 检索值

func (*InMemoryManager) SearchSimilarCases

func (m *InMemoryManager) SearchSimilarCases(ctx context.Context, query string, limit int) ([]*interfaces.Case, error)

SearchSimilarCases 搜索相似案例

注意:这是一个简单的文本匹配实现,实际应用中应使用向量相似度搜索

func (*InMemoryManager) Store

func (m *InMemoryManager) Store(ctx context.Context, key string, value interface{}) error

Store 存储键值对

type InMemoryVectorStore

type InMemoryVectorStore struct {
	// contains filtered or unexported fields
}

InMemoryVectorStore is a simple in-memory vector store implementation

func NewInMemoryVectorStore

func NewInMemoryVectorStore(dimension int) *InMemoryVectorStore

NewInMemoryVectorStore creates a new in-memory vector store

func (*InMemoryVectorStore) Clear

func (s *InMemoryVectorStore) Clear(ctx context.Context) error

Clear clears all vectors

func (*InMemoryVectorStore) Delete

func (s *InMemoryVectorStore) Delete(ctx context.Context, id string) error

Delete removes a vector

func (*InMemoryVectorStore) GenerateEmbedding

func (s *InMemoryVectorStore) GenerateEmbedding(ctx context.Context, content interface{}) ([]float32, error)

GenerateEmbedding generates a simple embedding for content

func (*InMemoryVectorStore) Search

func (s *InMemoryVectorStore) Search(ctx context.Context, query []float32, k int, threshold float64) ([]string, []float64, error)

Search searches for similar vectors using cosine similarity

func (*InMemoryVectorStore) Size

func (s *InMemoryVectorStore) Size() int

Size returns the number of stored vectors

func (*InMemoryVectorStore) Store

func (s *InMemoryVectorStore) Store(ctx context.Context, id string, vector []float32) error

Store stores a vector with an ID

type LongTermMemory

type LongTermMemory struct {
	// contains filtered or unexported fields
}

LongTermMemory implements long-term/persistent memory

func NewLongTermMemory

func NewLongTermMemory(vectorStore VectorStore) *LongTermMemory

NewLongTermMemory creates a new long-term memory

func (*LongTermMemory) Clear

func (m *LongTermMemory) Clear()

Clear clears all entries

func (*LongTermMemory) Forget

func (m *LongTermMemory) Forget(threshold float64) []string

Forget removes memories below importance threshold

func (*LongTermMemory) Get

func (m *LongTermMemory) Get(ctx context.Context, id string) (*MemoryEntry, error)

Get retrieves an entry from long-term memory

func (*LongTermMemory) GetAll

func (m *LongTermMemory) GetAll() []*MemoryEntry

GetAll returns all entries

func (*LongTermMemory) GetByType

func (m *LongTermMemory) GetByType(memType MemoryType, limit int) []*MemoryEntry

GetByType retrieves entries by memory type

func (*LongTermMemory) Search

func (m *LongTermMemory) Search(ctx context.Context, query string, limit int) ([]interface{}, error)

Search searches for entries in long-term memory

func (*LongTermMemory) Size

func (m *LongTermMemory) Size() int

Size returns the number of entries

func (*LongTermMemory) Store

func (m *LongTermMemory) Store(ctx context.Context, entry *MemoryEntry) error

Store stores an entry in long-term memory

type MemoryConsolidator

type MemoryConsolidator struct {
	// contains filtered or unexported fields
}

MemoryConsolidator handles memory consolidation

func NewMemoryConsolidator

func NewMemoryConsolidator() *MemoryConsolidator

NewMemoryConsolidator creates a new memory consolidator

func (*MemoryConsolidator) Consolidate

func (c *MemoryConsolidator) Consolidate(shortTerm []*MemoryEntry, longTerm *LongTermMemory) ([]*MemoryEntry, error)

Consolidate performs memory consolidation

type MemoryEntry

type MemoryEntry struct {
	ID          string                 `json:"id"`
	Type        MemoryType             `json:"type"`
	Content     interface{}            `json:"content"`
	Embedding   []float32              `json:"embedding,omitempty"`
	Timestamp   time.Time              `json:"timestamp"`
	LastAccess  time.Time              `json:"last_access"`
	AccessCount int                    `json:"access_count"`
	Importance  float64                `json:"importance"`
	Decay       float64                `json:"decay"`
	Tags        []string               `json:"tags,omitempty"`
	Metadata    map[string]interface{} `json:"metadata,omitempty"`
	Related     []string               `json:"related,omitempty"` // IDs of related memories
}

MemoryEntry represents a single memory entry

type MemoryOption

type MemoryOption func(*HierarchicalMemory)

MemoryOption configures memory

func WithDecayRate

func WithDecayRate(rate float64) MemoryOption

WithDecayRate sets memory decay rate

func WithShortTermCapacity

func WithShortTermCapacity(capacity int) MemoryOption

WithShortTermCapacity sets short-term memory capacity

type MemoryStats

type MemoryStats struct {
	TotalEntries      int            `json:"total_entries"`
	ShortTermCount    int            `json:"short_term_count"`
	LongTermCount     int            `json:"long_term_count"`
	EpisodicCount     int            `json:"episodic_count"`
	SemanticCount     int            `json:"semantic_count"`
	ProceduralCount   int            `json:"procedural_count"`
	TotalSize         int64          `json:"total_size"`
	LastConsolidation time.Time      `json:"last_consolidation"`
	AccessPatterns    map[string]int `json:"access_patterns"`
}

MemoryStats contains memory statistics

type MemoryType

type MemoryType string

MemoryType represents the type of memory

const (
	MemoryTypeShortTerm  MemoryType = "short_term"
	MemoryTypeLongTerm   MemoryType = "long_term"
	MemoryTypeEpisodic   MemoryType = "episodic"
	MemoryTypeSemantic   MemoryType = "semantic"
	MemoryTypeProcedural MemoryType = "procedural"
)

type SearchResult

type SearchResult struct {
	ID        string                 `json:"id"`        // ID
	Score     float64                `json:"score"`     // 相似度分数
	Embedding []float64              `json:"embedding"` // 向量
	Metadata  map[string]interface{} `json:"metadata"`  // 元数据
}

SearchResult 搜索结果

type ShortTermMemory

type ShortTermMemory struct {
	// contains filtered or unexported fields
}

ShortTermMemory implements short-term/working memory

func NewShortTermMemory

func NewShortTermMemory(capacity int) *ShortTermMemory

NewShortTermMemory creates a new short-term memory

func (*ShortTermMemory) Clear

func (m *ShortTermMemory) Clear()

Clear clears all entries

func (*ShortTermMemory) Forget

func (m *ShortTermMemory) Forget(threshold float64) []string

Forget removes memories below importance threshold

func (*ShortTermMemory) Get

func (m *ShortTermMemory) Get(ctx context.Context, id string) (*MemoryEntry, error)

Get retrieves an entry from short-term memory

func (*ShortTermMemory) GetAll

func (m *ShortTermMemory) GetAll() []*MemoryEntry

GetAll returns all entries

func (*ShortTermMemory) GetByType

func (m *ShortTermMemory) GetByType(memType MemoryType, limit int) []*MemoryEntry

GetByType retrieves entries by memory type

func (*ShortTermMemory) GetConsolidationCandidates

func (m *ShortTermMemory) GetConsolidationCandidates(threshold float64) []*MemoryEntry

GetConsolidationCandidates gets memories ready for consolidation

func (*ShortTermMemory) Remove

func (m *ShortTermMemory) Remove(ctx context.Context, id string) error

Remove removes an entry from short-term memory

func (*ShortTermMemory) Search

func (m *ShortTermMemory) Search(ctx context.Context, query string, limit int) ([]interface{}, error)

Search searches for entries in short-term memory

func (*ShortTermMemory) Size

func (m *ShortTermMemory) Size() int

Size returns the number of entries

func (*ShortTermMemory) Store

func (m *ShortTermMemory) Store(ctx context.Context, entry *MemoryEntry) error

Store stores an entry in short-term memory

type SimpleEmbeddingModel

type SimpleEmbeddingModel struct {
	// contains filtered or unexported fields
}

SimpleEmbeddingModel is a simple embedding model for testing

func NewSimpleEmbeddingModel

func NewSimpleEmbeddingModel(dimension int) *SimpleEmbeddingModel

NewSimpleEmbeddingModel creates a simple embedding model

func (*SimpleEmbeddingModel) Dimension

func (m *SimpleEmbeddingModel) Dimension() int

Dimension returns the embedding dimension

func (*SimpleEmbeddingModel) Embed

func (m *SimpleEmbeddingModel) Embed(ctx context.Context, text string) ([]float32, error)

Embed generates a simple embedding for text

func (*SimpleEmbeddingModel) EmbedBatch

func (m *SimpleEmbeddingModel) EmbedBatch(ctx context.Context, texts []string) ([][]float32, error)

EmbedBatch generates embeddings for multiple texts

type SimpleVectorStore

type SimpleVectorStore interface {
	// Store stores a vector with an ID
	Store(ctx context.Context, id string, vector []float32) error

	// Search searches for similar vectors
	Search(ctx context.Context, query []float32, k int, threshold float64) (ids []string, scores []float64, err error)

	// Delete removes a vector
	Delete(ctx context.Context, id string) error

	// GenerateEmbedding generates an embedding for content
	GenerateEmbedding(ctx context.Context, content interface{}) ([]float32, error)

	// Clear clears all vectors
	Clear(ctx context.Context) error

	// Size returns the number of stored vectors
	Size() int
}

SimpleVectorStore interface for vector-based memory storage

type StoreOptions

type StoreOptions struct {
	TTL      time.Duration          // Time to live
	Priority float64                // Priority for retrieval
	Tags     []string               // Tags for categorization
	Metadata map[string]interface{} // Additional metadata
}

StoreOptions provides options for storing memory

type VectorStore

type VectorStore interface {
	// Add 添加向量
	Add(ctx context.Context, id string, embedding []float64, metadata map[string]interface{}) error

	// Search 搜索相似向量
	Search(ctx context.Context, embedding []float64, limit int) ([]*SearchResult, error)

	// Delete 删除向量
	Delete(ctx context.Context, id string) error

	// Clear 清空存储
	Clear(ctx context.Context) error
}

VectorStore 向量存储接口

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL