kvs

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Jun 28, 2026 License: MIT Imports: 8 Imported by: 0

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.

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

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewProvider

func NewProvider(config core.ProviderConfig, embedder core.Embedder) (core.Provider, error)

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) Add

func (p *Provider) Add(ctx context.Context, req *core.AddRequest) (*core.Memory, error)

Add adds a new memory.

func (*Provider) Close

func (p *Provider) Close() error

Close closes the provider.

func (*Provider) Delete

func (p *Provider) Delete(ctx context.Context, req *core.DeleteRequest) error

Delete deletes a memory by ID.

func (*Provider) Get

func (p *Provider) Get(ctx context.Context, req *core.GetRequest) (*core.Memory, error)

Get retrieves a memory by ID.

func (*Provider) List

func (p *Provider) List(ctx context.Context, req *core.ListRequest) (*core.ListResponse, error)

List lists memories with optional filters.

func (*Provider) Name

func (p *Provider) Name() string

Name returns the provider name.

func (*Provider) Recall

Recall retrieves relevant memories for a given query.

func (*Provider) Search

Search performs semantic search on memories.

func (*Provider) Update

func (p *Provider) Update(ctx context.Context, req *core.UpdateRequest) (*core.Memory, error)

Update updates an existing memory.

Jump to

Keyboard shortcuts

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