feat(verbo): verbo-core — contrato model-agnostic de embeddings

Primer crate de verbo (provider de embeddings compartido; desbloquea
fana-semantic, badu y la búsqueda de chasqui).

- ModelId — identidad de modelo (nombre + dimensión). Vectores de
  distinto ModelId no son comparables.
- EmbeddingVector — vector + su ModelId; new() valida la dimensión,
  cosine() rechaza comparar modelos distintos (error tipado, no
  sinsentido silencioso), norm() euclidiana.
- EmbedError — ModelMismatch / BadDimension / Backend.
- trait Provider — model_id + embed + embed_batch (default secuencial).
  Lo cumplen los backends concretos (cohere / bge / fastembed).

5 tests verdes (cosine idéntico/ortogonal/cross-model/zero, validación
de dimensión). cargo check --workspace verde.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-20 15:52:43 +00:00
parent b9a6cd33fd
commit c2d6c15138
4 changed files with 190 additions and 0 deletions
+5
View File
@@ -112,6 +112,11 @@ members = [
"crates/modules/pineal/export",
"crates/modules/pineal/umbrella",
# ============================================================
# modules/verbo/ — Provider de embeddings model-agnostic
# ============================================================
"crates/modules/verbo/verbo-core",
# ============================================================
# modules/nakui/ — ERP matemático (categórico)
# ============================================================