# modules/verbo/ — Provider de embeddings model-agnostic (era dime)

**Propósito.** Capa de embeddings estructuralmente agnóstica al modelo:
la elección de backend es config por instancia. Los vectores quedan
atados a su `ModelId` — comparar vectores de modelos distintos es un
error explícito, no un sinsentido silencioso. Un daemon permite cargar
un modelo una vez y compartirlo entre procesos.

## Crates

| crate          | tipo | rol                                                          |
| -------------- | ---- | ------------------------------------------------------------ |
| `verbo-core`   | lib  | Contrato: `ModelId`, `EmbeddingVector` (cosine), `EmbedError`, trait `Provider` |
| `verbo-mock`   | lib  | Backend determinista sin modelo (FNV-1a + LCG) — para tests  |
| `verbo-daemon` | lib  | `Daemon` (sirve un `Provider` por socket Unix) + `DaemonClient` (lo consume como `Provider`) |

## Dependencias

- `mock`, `daemon` ← `verbo-core`.
- `daemon` ← `tokio` + `postcard` (frames con prefijo de largo).
- `verbo-core` es `#![forbid(unsafe_code)]`, sólo `serde` + `async-trait`.

## Compartir entre procesos

`verbo-daemon` resuelve la duplicación de modelos en RAM: un `Daemon`
carga el modelo una vez; N procesos lo consumen vía `DaemonClient`, que
implementa `Provider` y por tanto es indistinguible de un backend local.
Multi-instancia = un daemon por modelo, cada uno en su socket.

## Estado

Contrato + mock + daemon implementados y verdes (~25 tests).

**Pendiente** — backends de modelos reales (requieren infra/API keys):

| backend pendiente | tipo   | nota                                          |
| ----------------- | ------ | --------------------------------------------- |
| `verbo-cohere`    | remoto | API Cohere — recomendado para uso remoto      |
| `verbo-bge`       | local  | `bge-code-large` vía ONNX — recomendado local |
| `verbo-fastembed` | local  | modelos ligeros (MiniLM 384d)                 |

Cada uno implementa `Provider` y puede servirse vía `verbo-daemon` sin
cambios — el daemon es agnóstico del backend.
