Current section

Files

Jump to
ragex lib ragex embeddings behaviour.ex
Raw

lib/ragex/embeddings/behaviour.ex

defmodule Ragex.Embeddings.Behaviour do
@moduledoc """
Behavior for embedding generators.
Embedding generators convert text into dense vector representations
that can be used for semantic similarity search.
"""
@doc """
Generates an embedding vector for the given text.
Returns `{:ok, embedding}` where embedding is a list of floats,
or `{:error, reason}` if embedding generation fails.
"""
@callback embed(text :: String.t()) :: {:ok, list(float())} | {:error, term()}
@doc """
Generates embeddings for multiple texts in a batch.
This can be more efficient than calling `embed/1` multiple times.
Returns `{:ok, embeddings}` where embeddings is a list of lists of floats,
or `{:error, reason}` if embedding generation fails.
"""
@callback embed_batch(texts :: list(String.t())) ::
{:ok, list(list(float()))} | {:error, term()}
@doc """
Returns the dimensionality of the embeddings generated by this adapter.
"""
@callback dimensions() :: pos_integer()
end