Arcana.Embedder.Local (Arcana v1.3.3)

View Source

Local embedding provider using Bumblebee and Nx.Serving.

Uses HuggingFace models locally. Default is BAAI/bge-small-en-v1.5 (384 dimensions).

Configuration

# Default model
config :arcana, embedder: :local

# Custom HuggingFace model
config :arcana, embedder: {:local, model: "BAAI/bge-large-en-v1.5"}

Starting the Serving

Add Arcana.Embedder.Local.child_spec/1 to your application supervision tree:

children = [
  {Arcana.Embedder.Local, model: "BAAI/bge-small-en-v1.5"},
  # ... other children
]

Summary

Functions

Returns the child spec for starting the embedding serving.

Prepares text for embedding by adding model-specific prefixes.

Starts the Nx.Serving for this embedder.

Functions

child_spec(opts)

Returns the child spec for starting the embedding serving.

prepare_text(text, model, intent)

Prepares text for embedding by adding model-specific prefixes.

E5 models require query: prefix for search queries and passage: prefix for documents. Other models return text unchanged.

Options

  • :query - Text is a search query (adds "query: " prefix for E5)
  • :document - Text is document content (adds "passage: " prefix for E5)
  • nil - Defaults to :document for E5 models

Examples

iex> prepare_text("hello", "intfloat/e5-small-v2", :query)
"query: hello"

iex> prepare_text("hello", "intfloat/e5-small-v2", :document)
"passage: hello"

iex> prepare_text("hello", "BAAI/bge-small-en-v1.5", :query)
"hello"

start_link(opts)

Starts the Nx.Serving for this embedder.