Aiqbee Hive
Se connecter
Aide

Recherche et langues

Choix du modèle d’embedding, contenu non anglophone et modification ultérieure.

Hive vectorise chaque neurone avec un modèle d’embedding local, de sorte que la recherche sémantique fonctionne sans envoyer votre contenu à une API tierce. Le modèle utilisé détermine la qualité de la recherche dans votre langue.

Deux modèles sont fournis dans l'image. Aucun n'est téléchargé à l'exécution — y compris lorsque vous passez de l'un à l'autre, ce qui fonctionne donc sur une installation isolée.

Anglais par défautInternational
Paramètre EMBEDDING_MODEL=english EMBEDDING_MODEL=international
Modèle nomic-embed-text-v1.5 snowflake-arctic-embed-m-v2.0
Langues Anglais 70+, dont l’allemand, le français, l’espagnol, le portugais, le japonais
Mémoire du conteneur 2 Go minimum 4 Go minimum

Comment le modèle anglais échoue sur les autres langues

Il ne génère pas d’erreur, ce qui justifie qu’on l’explique. Le contenu en allemand, en français ou en japonais est accepté, vectorisé et renvoyé par la recherche — mais avec moins de précision, de deux manières précises.

  • Les accents sont supprimés. Le tokenizer du modèle anglais réduit schön à schon — un autre mot allemand. Les trémas et le ß sont perdus avant même la vectorisation du texte.
  • Les mots se fragmentent. L’allemand coûte environ deux fois plus de tokens par caractère avec le tokenizer anglais qu’avec l’international ; les longs neurones non anglophones épuisent donc plus vite la fenêtre de contexte du modèle.

La règle pratique : si une part significative de vos neurones n'est pas en anglais, choisissez International. Un Brain surtout en anglais, avec de rares noms ou citations étrangers, convient très bien au modèle par défaut.

Choix à l’installation

Définissez la variable d'environnement au premier démarrage du conteneur :

docker run -d \
  -e DATABASE_URL=... \
  -e ADMIN_PASSWORD=... \
  -e EMBEDDING_MODEL=international \
  --memory 4g \
  aiqbee/hive-server:latest
Augmentez la limite de mémoire en même temps. Le modèle International nécessite au moins 4 Go de mémoire du conteneur. Avec moins, il ne se chargera pas, ou le conteneur plantera sous la charge de recherche. N’oubliez pas non plus l’orchestrateur — Container Apps --memory, Kubernetes resources.limits.memory, Compose mem_limit.

Le modifier plus tard

EMBEDDING_MODEL n’est lu qu’à la première configuration d’un Hive. Une fois les neurones vectorisés, il est ignoré, et le modifier dans la configuration de votre déploiement n’a d’autre effet que d’afficher un avis sur la page Configuration.

C'est délibéré : changer de modèle signifie retraiter chaque neurone de chaque Brain, et un redéploiement ne doit jamais s'en charger silencieusement. Changez-le plutôt depuis Configuration → Modèle d'embedding dans l'interface d'administration. Vous verrez combien de neurones sont concernés et une durée estimée avant de confirmer.

Ce qui se passe pendant le changement

  • Les neurones sont retraités en arrière-plan. La recherche reste correcte pendant toute l'opération — les neurones pas encore retraités ne sont trouvés que par recherche par mots-clés, de sorte que les résultats sont temporairement plus restreints, jamais erronés.
  • La progression est affichée sur la page Configuration.
  • Vous pouvez redémarrer le conteneur sans risque ; le retraitement reprend automatiquement.
  • Vous pouvez revenir en arrière à tout moment. Cela retraite aussi, ce n'est donc pas gratuit — mais rien n'est perdu.
Planifiez la modification pendant une période calme sur un gros brain. Retraiter un corpus de cent mille neurones prend des heures avec une allocation CPU modeste. Rien ne casse entre-temps ; la correspondance sémantique est simplement réduite jusqu’à la fin.

Recherche par mots-clés et texte non anglophone

Le modèle d'embedding gère la moitié sémantique de la recherche. La moitié par mots-clés compare le texte lui-même et fonctionne avec les caractères accentués dans toutes les langues prises en charge par Hive — une recherche de Müller trouve Müller.

Une limite à connaître pour l'allemand : la recherche par mots-clés trouve un nom composé lorsque vous cherchez sa fin (Versicherung trouve Rechtsschutzversicherung), mais pas l'inverse — chercher le composé entier ne trouvera pas un neurone qui n'en mentionne que les parties séparément. C'est la moitié sémantique qui comble cet écart, ce qui est une raison de plus d'utiliser International sur un corpus allemand.