AgentSea.VectorStore behaviour (agentsea_embeddings v0.1.0)

Copy Markdown

Stores vectors and answers nearest-neighbour queries. Adapters: the in-memory AgentSea.VectorStore.Memory and, in future, pgvector (first-class via Ecto) or remote stores (Pinecone/Qdrant) over HTTP.

Summary

Types

hit()

@type hit() :: %{id: term(), score: float(), metadata: map(), text: String.t() | nil}

record()

@type record() :: %{
  :id => term(),
  :vector => [float()],
  optional(:metadata) => map(),
  optional(:text) => String.t() | nil
}

store()

@type store() :: GenServer.server() | map()

Callbacks

count(store)

@callback count(store()) :: non_neg_integer()

delete(store, list)

@callback delete(store(), [term()]) :: :ok

query(store, list, k, opts)

@callback query(store(), [float()], k :: pos_integer(), opts :: keyword()) :: [hit()]

upsert(store, list)

@callback upsert(store(), [record()]) :: :ok