Documentation
¶
Overview ¶
Package memory 提供 Hexagon 框架的高级记忆系统
在 ai-core 的基础 Memory 接口上,扩展多种记忆实现:
- WindowMemory: 滑动窗口记忆,只保留最近 N 轮对话
- SummaryMemory: 摘要记忆,定期将旧记忆压缩为摘要
- VectorMemory: 向量记忆,支持语义搜索
- EntityMemory: 实体记忆,提取和记录实体信息
使用示例:
mem := NewWindowMemory(10) // 保留最近 10 条 mem := NewSummaryMemory(llmProvider, "model", 20) // 超过 20 条时摘要 mem := NewVectorMemory(embedder, vectorStore, 100)
Index ¶
- type Entity
- type EntityMemory
- func (m *EntityMemory) AllEntities() map[string]*Entity
- func (m *EntityMemory) Clear(_ context.Context) error
- func (m *EntityMemory) Delete(_ context.Context, id string) error
- func (m *EntityMemory) Get(_ context.Context, id string) (*coremem.Entry, error)
- func (m *EntityMemory) GetEntity(name string) *Entity
- func (m *EntityMemory) Save(_ context.Context, entry coremem.Entry) error
- func (m *EntityMemory) SaveBatch(ctx context.Context, entries []coremem.Entry) error
- func (m *EntityMemory) Search(_ context.Context, query coremem.SearchQuery) ([]coremem.Entry, error)
- func (m *EntityMemory) Stats() coremem.MemoryStats
- type SummaryMemory
- func (m *SummaryMemory) Clear(_ context.Context) error
- func (m *SummaryMemory) Delete(_ context.Context, id string) error
- func (m *SummaryMemory) Get(_ context.Context, id string) (*coremem.Entry, error)
- func (m *SummaryMemory) Save(ctx context.Context, entry coremem.Entry) error
- func (m *SummaryMemory) SaveBatch(ctx context.Context, entries []coremem.Entry) error
- func (m *SummaryMemory) Search(_ context.Context, query coremem.SearchQuery) ([]coremem.Entry, error)
- func (m *SummaryMemory) Stats() coremem.MemoryStats
- func (m *SummaryMemory) Summary() string
- type WindowMemory
- func (m *WindowMemory) Clear(_ context.Context) error
- func (m *WindowMemory) Delete(_ context.Context, id string) error
- func (m *WindowMemory) Get(_ context.Context, id string) (*coremem.Entry, error)
- func (m *WindowMemory) Save(_ context.Context, entry coremem.Entry) error
- func (m *WindowMemory) SaveBatch(ctx context.Context, entries []coremem.Entry) error
- func (m *WindowMemory) Search(_ context.Context, query coremem.SearchQuery) ([]coremem.Entry, error)
- func (m *WindowMemory) Stats() coremem.MemoryStats
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Entity ¶
type Entity struct {
// Name 实体名称
Name string `json:"name"`
// Type 实体类型(person/place/org/other)
Type string `json:"type"`
// Description 实体描述
Description string `json:"description"`
// Mentions 提及次数
Mentions int `json:"mentions"`
// LastMentioned 最后提及时间
LastMentioned time.Time `json:"last_mentioned"`
// Metadata 元数据
Metadata map[string]any `json:"metadata,omitempty"`
}
Entity 实体信息
type EntityMemory ¶
type EntityMemory struct {
// contains filtered or unexported fields
}
EntityMemory 实体记忆 自动提取对话中提到的实体(人名、地名、组织等)并记忆
func (*EntityMemory) AllEntities ¶
func (m *EntityMemory) AllEntities() map[string]*Entity
AllEntities 返回所有实体
func (*EntityMemory) GetEntity ¶
func (m *EntityMemory) GetEntity(name string) *Entity
GetEntity 获取实体信息
func (*EntityMemory) Search ¶
func (m *EntityMemory) Search(_ context.Context, query coremem.SearchQuery) ([]coremem.Entry, error)
func (*EntityMemory) Stats ¶
func (m *EntityMemory) Stats() coremem.MemoryStats
type SummaryMemory ¶
type SummaryMemory struct {
// contains filtered or unexported fields
}
SummaryMemory 摘要记忆 当记忆条目超过阈值时,使用 LLM 将旧记忆压缩为摘要
func NewSummaryMemory ¶
func NewSummaryMemory(provider llm.Provider, model string, maxEntries int) *SummaryMemory
NewSummaryMemory 创建摘要记忆 maxEntries: 超过此数量时触发摘要压缩
func (*SummaryMemory) Search ¶
func (m *SummaryMemory) Search(_ context.Context, query coremem.SearchQuery) ([]coremem.Entry, error)
Search 搜索时会将摘要作为第一条结果返回
func (*SummaryMemory) Stats ¶
func (m *SummaryMemory) Stats() coremem.MemoryStats
type WindowMemory ¶
type WindowMemory struct {
// contains filtered or unexported fields
}
WindowMemory 滑动窗口记忆 只保留最近 N 条对话记录,超出时自动移除最旧的
func NewWindowMemory ¶
func NewWindowMemory(windowSize int) *WindowMemory
NewWindowMemory 创建滑动窗口记忆 windowSize: 窗口大小(保留的最大条目数)
func (*WindowMemory) Search ¶
func (m *WindowMemory) Search(_ context.Context, query coremem.SearchQuery) ([]coremem.Entry, error)
func (*WindowMemory) Stats ¶
func (m *WindowMemory) Stats() coremem.MemoryStats
Click to show internal directories.
Click to hide internal directories.