# `Arcana.Embedder.Local`
[🔗](https://github.com/georgeguimaraes/arcana/blob/main/lib/arcana/embedder/local.ex#L1)

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
    ]

# `child_spec`

Returns the child spec for starting the embedding serving.

# `prepare_text`

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`

Starts the Nx.Serving for this embedder.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
