HubMix

Documentation

Embeddings

Des vecteurs multilingues pour la recherche sémantique, les recommandations et le regroupement.

Les embeddings transforment des textes en vecteurs : deux textes de sens proche donnent des vecteurs proches, quelle que soit leur langue. Ils servent à la recherche sémantique, aux recommandations, au regroupement et au dédoublonnage. C’est le même modèle multilingue que celui de Gaspard.

Scope embeddings, réservé aux applications serveur (clé secrète). Chaque texte vectorisé compte comme une unité dans l’usage de votre application. Rien n’est conservé.

Vectoriser #

POST /v1/public/embeddings avec 1 à 32 textes de 2 000 caractères au plus chacun, et 32 000 caractères en tout.

Terminal
curl -X POST https://hubmix.dealmood-solutions.com/v1/public/embeddings \
  -H "Authorization: Bearer $VC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"texts": ["Chambre étudiante près du campus", "Student room near campus"]}'
JSON
{
  "model": "sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2",
  "dimensions": 384,
  "embeddings": [
    [0.0213, -0.0871, 0.0042, "…"],
    [0.0198, -0.0842, 0.0057, "…"]
  ]
}

Les vecteurs reviennent dans l’ordre des textes. model et dimensions disent avec quoi ils ont été calculés : gardez-les à côté de vos vecteurs et recalculez tout si le modèle change (des vecteurs de deux modèles ne se comparent pas).

Comparer #

Comparez deux vecteurs avec la similarité cosinus : 1 = même sens, autour de 0 = sans rapport.

JavaScript
function cosine(a, b) {
    let dot = 0, na = 0, nb = 0;
    for (let i = 0; i < a.length; i++) {
        dot += a[i] * b[i];
        na += a[i] * a[i];
        nb += b[i] * b[i];
    }
    return dot / Math.sqrt(na * nb);
}

Pour beaucoup de vecteurs, rangez-les dans une base qui sait chercher les plus proches (PostgreSQL avec pgvector, Qdrant, Elasticsearch…).

Erreurs : 403 insufficient_scope, 422 invalid_request (trop de textes, texte vide ou trop long). Voir Erreurs, limites et quotas.