Documentation
¶
Overview ¶
Package kvs provides a KVS-backed Provider implementation using omnistorage-core.
This provider stores memories as JSON blobs in a key-value store, supporting SQLite, Redis, and in-memory backends via omnistorage-core/kvs.
Key Format ¶
Memories are stored with keys in the format:
{prefix}:{tenant_id}:{subject_id}:{memory_id}
This allows efficient listing by tenant and subject.
Semantic Search ¶
Since KVS backends don't support vector search natively, this provider performs in-memory similarity search by loading matching memories and computing cosine similarity on their embeddings.
Usage ¶
import (
"github.com/plexusone/omnimemory"
"github.com/plexusone/omnimemory/core"
"github.com/plexusone/omnimemory/provider/kvs"
kvsmemory "github.com/plexusone/omnistorage-core/kvs/backend/memory"
)
func main() {
// Create a KVS backend
store := kvsmemory.New()
// Create the provider
provider, err := kvs.NewProvider(core.ProviderConfig{
Options: map[string]any{
"store": store,
"key_prefix": "memories",
},
}, embedder)
}
Index ¶
- func NewProvider(config core.ProviderConfig, embedder core.Embedder) (core.Provider, error)
- type Provider
- func (p *Provider) Add(ctx context.Context, req *core.AddRequest) (*core.Memory, error)
- func (p *Provider) Close() error
- func (p *Provider) Delete(ctx context.Context, req *core.DeleteRequest) error
- func (p *Provider) Get(ctx context.Context, req *core.GetRequest) (*core.Memory, error)
- func (p *Provider) List(ctx context.Context, req *core.ListRequest) (*core.ListResponse, error)
- func (p *Provider) Name() string
- func (p *Provider) Recall(ctx context.Context, req *core.RecallRequest) (*core.RecallResponse, error)
- func (p *Provider) Search(ctx context.Context, req *core.SearchRequest) (*core.SearchResponse, error)
- func (p *Provider) Update(ctx context.Context, req *core.UpdateRequest) (*core.Memory, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewProvider ¶
NewProvider creates a new KVS Provider.
The provider accepts the following options:
- store: A kvs.ListableStore instance (required)
- key_prefix: Prefix for all keys (default: "memories")
Types ¶
type Provider ¶
type Provider struct {
// contains filtered or unexported fields
}
Provider stores memories in a KVS backend.
func (*Provider) List ¶
func (p *Provider) List(ctx context.Context, req *core.ListRequest) (*core.ListResponse, error)
List lists memories with optional filters.
func (*Provider) Recall ¶
func (p *Provider) Recall(ctx context.Context, req *core.RecallRequest) (*core.RecallResponse, error)
Recall retrieves relevant memories for a given query.
func (*Provider) Search ¶
func (p *Provider) Search(ctx context.Context, req *core.SearchRequest) (*core.SearchResponse, error)
Search performs semantic search on memories.