# `Dsxir.Retrieval.Embedder`

Batched wrapper around `Dsxir.LM.embed/2`.

    embedder = %Dsxir.Retrieval.Embedder{batch_size: 256}
    {:ok, vectors, usage} = Dsxir.Retrieval.Embedder.embed(embedder, ["a", "b", ...])

Inputs larger than `:batch_size` are chunked; results are concatenated in
input order. Errors short-circuit and surface the first failure.

# `t`

```elixir
@type t() :: %Dsxir.Retrieval.Embedder{batch_size: pos_integer()}
```

# `embed`

```elixir
@spec embed(t(), [String.t()], keyword()) ::
  {:ok, [[float()]], Dsxir.LM.usage()} | {:error, term()}
```

Embed `inputs` in chunks of `batch_size`. Returns the concatenated vectors
and merged usage on success, or short-circuits on the first batch error.

---

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