Packages
nous
0.17.0
0.17.0
0.16.6
0.16.5
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.8
0.15.7
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.17
0.12.16
0.12.15
0.12.14
0.12.13
0.12.12
0.12.11
0.12.9
0.12.7
0.12.6
0.12.5
0.12.3
0.12.2
0.12.0
0.11.3
0.11.0
0.10.1
0.10.0
0.9.0
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.5.0
AI agent framework for Elixir with multi-provider LLM support
Current section
Files
Jump to
Current section
Files
lib/nous/memory/store.ex
defmodule Nous.Memory.Store do
@moduledoc """
Storage behaviour for memory backends.
All search/list callbacks accept a :scope option (map of scoping fields to filter by).
"""
alias Nous.Memory.Entry
@callback init(opts :: keyword()) :: {:ok, term()} | {:error, term()}
@callback store(state :: term(), entry :: Entry.t()) :: {:ok, term()} | {:error, term()}
@callback fetch(state :: term(), id :: String.t()) :: {:ok, Entry.t()} | {:error, :not_found}
@callback delete(state :: term(), id :: String.t()) :: {:ok, term()} | {:error, term()}
@callback update(state :: term(), id :: String.t(), updates :: map()) ::
{:ok, term()} | {:error, term()}
@callback search_text(state :: term(), query :: String.t(), opts :: keyword()) ::
{:ok, [{Entry.t(), float()}]}
@callback search_vector(state :: term(), embedding :: [float()], opts :: keyword()) ::
{:ok, [{Entry.t(), float()}]}
@callback list(state :: term(), opts :: keyword()) :: {:ok, [Entry.t()]}
@optional_callbacks [search_vector: 3]
end