Spectre.Classifier.Embedding behaviour (Spectre v0.3.0)

Copy Markdown View Source

Behaviour for classifier embedding adapters.

Implement this behaviour when the default ExFastembed adapter is not the right boundary for the application.

defmodule MyApp.Embedding do
  @behaviour Spectre.Classifier.Embedding

  @impl Spectre.Classifier.Embedding
  def load(_model, _opts), do: {:ok, 384}

  @impl Spectre.Classifier.Embedding
  def embed(text, _opts), do: MyApp.EmbeddingClient.embed(text)
end

Summary

Types

vector()

@type vector() :: [float()]

Callbacks

download(model, opts)

(optional)
@callback download(model :: String.t(), opts :: keyword()) ::
  {:ok, pos_integer()} | {:error, term()}

embed(text, opts)

@callback embed(text :: String.t(), opts :: keyword()) ::
  {:ok, vector()} | {:error, term()}

load(model, opts)

@callback load(model :: String.t(), opts :: keyword()) ::
  {:ok, pos_integer()} | {:error, term()}