Superfasttt

LLM et embeddings privés

Brancher l'instance sur votre propre endpoint de modèles, pour le chat comme pour les embeddings, puis interdire toute sortie vers un fournisseur externe.

Cette page décrit, étape par étape, comment faire fonctionner l'instance avec vos propres modèles — un endpoint que vous hébergez ou que vous louez — au lieu des fournisseurs publics (OpenAI, Anthropic, Mistral…), puis comment interdire à l'instance de s'adresser à un fournisseur externe, canal par canal.

Elle est destinée à un administrateur d'instance (rôle super administrateur ou administrateur du tenant). L'essentiel se passe dans l'app d'administration, rubriques Modèles IA et RAG & Documents ; seule la création d'une base de connaissances (étape 4) se fait dans l'app Bases de connaissances.

Ce que « privé » veut dire ici

Un fournisseur personnalisé est une adresse que vous fournissez. La plateforme y envoie ses requêtes directement, avec la clé API que vous avez saisie. Rien ne transite par un fournisseur public, et le trafic reste dans le périmètre que vous contrôlez.

Deux usages sont couverts, et seulement ces deux-là :

UsageModePrivé possible
Conversation, génération de texteChatOui
Vectorisation des documents et des questions (RAG)EmbeddingOui
Parsing de documents, reranking, enrichissement des métadonnéesNon — mais désactivables
Transcription audio, génération d'imagesNon

Un fournisseur personnalisé ne porte que le chat et les embeddings. Pour le parsing, le reranking et l'enrichissement, l'étape 5 permet de désactiver la capacité — elle ne la rend pas privée. La transcription audio et la génération d'images n'ont ni équivalent privé ni bascule : si votre exigence est qu'aucun contenu ne parvienne à un tiers, n'activez pas ces capacités.

Prérequis — à valider avant de commencer

C'est ici que la plupart des configurations échouent. Les contrôles ci-dessous sont appliqués à l'enregistrement, puis revérifiés à chaque appel : une URL qui cesserait de les respecter plus tard — un nom de domaine que vous feriez pointer vers une adresse interne, par exemple — arrêterait de fonctionner à ce moment-là, pas silencieusement.

L'endpoint doit être compatible OpenAI

Votre endpoint doit exposer les routes standard /models et /chat/completions — toutes deux indispensables à l'enregistrement — ainsi que /embeddings si vous voulez des embeddings privés.

Vous saisirez sa racine, celle qui se termine généralement par /v1, sans suffixe (une barre oblique finale est acceptée et retirée) :

  • https://ia.mon-entreprise.fr/v1
  • https://ia.mon-entreprise.fr/v1/models ou .../v1/chat/completions

GET {racine}/models doit renvoyer une réponse au format OpenAI, c'est-à-dire un objet contenant un tableau data dont chaque entrée porte un id. À défaut, l'enregistrement est refusé.

L'URL doit être publique et en HTTPS

RègleRefusé
HTTPS obligatoirehttp://…
Port 443 ou 8443 uniquementhttps://…:11434, :8000, :3000
Adresse résolue publiquelocalhost, 127.0.0.1, 10.x, 172.16-31.x, 192.168.x, IPv6 locales
Pas d'identifiants, de paramètres ni d'ancre dans l'URLhttps://user:mdp@…, https://…/v1?key=…, https://…/v1#x
Pas d'adresse de la plateforme elle-mêmetout domaine *.superfasttt.ai / .dev / .fr

Un serveur de modèles installé sur votre poste ou sur le réseau interne (http://localhost:11434, une adresse en 10. ou 192.168., un accès par VPN) ne peut pas être enregistré, même s'il répond parfaitement depuis votre navigateur. La vérification résout le nom de domaine et refuse toute adresse privée. Exposez l'endpoint derrière un reverse-proxy TLS joignable publiquement, sur le port 443 ou 8443, et protégez-le par la clé API.

L'endpoint doit répondre au chat ou aux embeddings

À l'enregistrement, la plateforme appelle /models, puis essaie plusieurs modèles de la liste : d'abord un message de test via /chat/completions, puis une vectorisation de test via /embeddings. Le fournisseur est créé dès qu'une de ces deux capacités répond. Il n'est refusé que si aucun modèle ne répond à l'une ni à l'autre.

Conséquences concrètes :

  • un endpoint qui ne sert que des embeddings (TEI, infinity, un vLLM lancé sur un modèle de vectorisation) s'enregistre normalement ;
  • l'ordre de la réponse /models n'a plus d'importance, y compris quand votre endpoint annonce un modèle d'embedding en premier ;
  • le modèle d'embedding qui a répondu est enregistré directement en mode Embedding, avec la dimension réellement mesurée sur le vecteur de test.

La vérification est bornée : quelques modèles au maximum, et une vingtaine de secondes au pire. Sur un endpoint qui en annonce des dizaines, les autres restent donc en mode Chat par défaut — c'est à vous de qualifier ceux qui servent aux embeddings, à l'étape 2. Aucun modèle n'est jamais classé sur la foi de son nom : seul un test qui répond décide.

Et pour l'authentification

La clé API est obligatoire, même si votre endpoint n'en vérifie aucune : saisissez alors une valeur quelconque. Elle est transmise dans l'en-tête Authorization: Bearer, stockée chiffrée, et jamais réaffichée ensuite — conservez-la de votre côté.

Étape 1 — Déclarer le fournisseur

Ouvrez Modèles IA → Fournisseurs, puis cliquez sur Ajouter un fournisseur en haut à droite.
Renseignez les trois champs : Nom du fournisseur (libre, unique dans votre espace), URL de base (la racine, voir les prérequis) et Clé API.
Cliquez sur Ajouter. La plateforme interroge votre endpoint, découvre les modèles disponibles, puis teste le chat et les embeddings sur quelques-uns d'entre eux.
En cas de succès, le message Fournisseur ajouté indique le nombre de modèles détectés, et le fournisseur apparaît dans la liste avec le badge Personnalisé.

Si l'opération échoue, rien n'est enregistré. Reportez-vous au dépannage : le message indique laquelle des vérifications a échoué.

Les modèles ne se déclarent pas à la main : ils sont découverts depuis votre endpoint. Pour prendre en compte un modèle ajouté après coup, utilisez Actualiser les modèles (étape 2).

Étape 2 — Qualifier les modèles

Les modèles découverts sont considérés comme des modèles de chat, sauf ceux que la vérification d'enregistrement a vus répondre en embeddings. Comme cette vérification est bornée à quelques modèles, c'est à vous d'indiquer lesquels des autres servent aux embeddings.

Dans Fournisseurs, cliquez sur la ligne de votre fournisseur personnalisé : le panneau Gérer … s'ouvre.
La section Modèles détectés liste chaque modèle avec un sélecteur Mode (Chat ou Embedding).
Passez vos modèles de vectorisation en Embedding et saisissez leurs Dimensions — la taille des vecteurs produits (par exemple 1024). Cette valeur est propre au modèle : demandez-la à votre fournisseur ou lisez-la dans sa documentation.
Cliquez sur Enregistrer les modèles.

Le panneau propose également Tester la connexion (rejoue la découverte, puis le test de chat et le test d'embeddings), Actualiser les modèles, la rotation de la clé API, ainsi que l'activation ou la désactivation du fournisseur. Un fournisseur qui ne sert que des embeddings est annoncé réussi : le test d'embeddings suffit.

« Tester la connexion » constate, il n'enregistre rien. S'il annonce un modèle d'embeddings que la liste affiche encore en mode Chat, c'est à vous de le passer en Embedding avec ses dimensions — le test vous donne la valeur mesurée, la modification reste votre geste.

Les dimensions doivent être exactes. Une valeur fausse produit un index inutilisable, et la correction impose de tout réindexer. Elles sont obligatoires dès qu'un modèle passe en mode Embedding : sans elles, l'enregistrement est refusé.

Un modèle déjà utilisé pour indexer est verrouillé : la plateforme refuse aussi bien de changer sa dimension que de le repasser en Chat, et le message vous indique la dimension déjà indexée. Pour changer de modèle de vectorisation, créez un nouveau preset plutôt que de modifier celui qui est en service.

Désactiver un fournisseur le fait disparaître de la liste Fournisseurs — et le panneau de gestion n'est plus atteignable, puisqu'on y entre par cette ligne. Ne le désactivez que si vous n'avez pas l'intention d'y revenir ; rétablir le fournisseur demande alors une intervention de votre support.

Actualiser les modèles n'efface jamais un modèle : un modèle disparu de votre endpoint est signalé, pas supprimé — une base de connaissances peut encore le référencer.

Étape 3 — Utiliser un modèle de chat privé

Aucune action supplémentaire n'est nécessaire. Vos modèles de chat privés apparaissent partout où un modèle se choisit (chatbot, agents, workflows), sous le fournisseur Personnalisé et sous la forme Nom du fournisseur — identifiant du modèle.

Un modèle privé figure aussi dans Modèles IA → Modèles, sous le fournisseur Personnalisé, mais sans menu d'actions : la colonne affiche « Géré via le fournisseur personnalisé ». Un modèle privé est toujours disponible et ne reçoit jamais le statut Par défaut — activation, repli et modèle par défaut ne concernent que les modèles du catalogue. Pour qu'un modèle privé s'impose, sélectionnez-le là où vous l'utilisez, ou coupez le canal externe correspondant à l'étape 5 : il ne restera plus que lui dans les listes.

Étape 4 — Utiliser des embeddings privés

C'est l'étape la plus délicate, parce qu'elle est irréversible par base de connaissances.

Le modèle d'embedding ne se choisit pas sur la base de connaissances : il se choisit sur le preset RAG dont elle hérite, et il est figé au moment de la première indexation.

Ouvrez RAG & Documents → Presets RAG et créez un preset (ou une nouvelle version d'un preset existant).
Dans l'onglet Ingestion, section Embedding, choisissez votre modèle privé comme modèle d'embedding par défaut. Il apparaît sous la forme Nom du fournisseur — identifiant du modèle.
Passez le preset en Publié pour le rendre sélectionnable.
Quittez l'administration : ouvrez l'app Bases de connaissances, créez une nouvelle base en sélectionnant ce preset, puis indexez vos documents.

Une base déjà indexée ne change pas de modèle d'embedding. Modifier le preset n'affecte que les bases créées ensuite, et la fonction Réindexer réindexe dans l'espace vectoriel existant — donc avec le modèle d'origine. C'est volontaire : des vecteurs produits par deux modèles différents ne sont pas comparables entre eux.

Pour basculer un corpus existant, il faut soit le réimporter dans une nouvelle base rattachée au nouveau preset, soit demander une migration à votre support : aucune action de l'interface ne le fait.

Les dimensions d'un modèle d'embedding ne sont plus modifiables une fois qu'un espace vectoriel les utilise. Pour changer de dimension, il faut un autre modèle, un nouveau preset et une nouvelle indexation.

Voir Presets pour tout ce que borne un preset, et Espaces de recherche pour vérifier quel modèle sert réellement à chaque base.

Étape 5 — Interdire les sorties externes

Tant que des fournisseurs publics restent configurés, un utilisateur peut encore choisir un modèle externe. La page Modèles IA → Confidentialité IA ferme cette porte, canal par canal.

BasculeEffet quand elle est désactivée
Chat externeSeuls les modèles de chat privés sont proposés et acceptés.
Embeddings externesSeuls les modèles d'embedding privés sont proposés et acceptés.
Parsing externeLe parsing par un service externe (OCR, LlamaCloud) est refusé.
Rerank externeLe reranking cross-encoder externe est refusé.
Enrichissement externeL'enrichissement de métadonnées est ignoré au lieu d'être envoyé.

Une sixième bascule, Geler l'ingestion sur les bases à embeddings externes, bloque l'ajout de documents dans les bases restées sur un modèle externe sans couper leur recherche. C'est le geste intermédiaire à privilégier pendant une migration : plus rien de neuf ne sort, l'existant continue de répondre.

Ordre à respecter. Couper Embeddings externes alors qu'une base est encore indexée avec un modèle externe casse sa recherche : chaque question doit elle aussi être vectorisée, avec le modèle de la base, et cet appel est bloqué.

Faites l'inventaire avant de couper, dans RAG & Documents → Diagnostic → Espaces de recherche : la colonne Modèle / dim y montre, espace par espace, le modèle utilisé et sa dimension — donc ce qui est encore externe. Le bandeau d'avertissement de la page Confidentialité IA, lui, ne s'affiche qu'après la coupure — il ne peut donc pas vous servir de feu vert.

Le message de refus que reçoit un utilisateur lorsque l'ingestion est gelée lui dit exactement cela : Réindexer depuis l'interface conserve l'espace vectoriel existant, donc le modèle d'origine, et ne débloque pas l'ingestion. Il renvoie vers les deux seules bascules possibles — une nouvelle base rattachée à un preset privé, ou une migration demandée au support — et vers cette page.

L'ordre sûr est donc :

Déclarer le fournisseur privé et qualifier ses modèles (étapes 1 et 2).
Repointer sur un modèle privé tout ce qui a un modèle de chat enregistré — chatbots, agents, workflows — puis couper Chat externe. Contrairement aux embeddings, rien n'est à réindexer, mais un objet resté sur un modèle externe échouera à l'exécution.
Créer les nouveaux presets et migrer les bases de connaissances (étape 4), en gelant l'ingestion pendant la transition.
Vérifier dans Espaces de recherche qu'aucun espace n'utilise plus de modèle externe, puis couper Embeddings externes.
Couper les canaux restants selon les capacités dont vous acceptez de vous passer.

Cette page n'est visible que par un super administrateur ou un administrateur du tenant.

Dépannage

Les messages apparaissent sous la forme titre puis détail : c'est le détail qui identifie la cause, plusieurs causes différentes partageant le même titre.

Les détails ci-dessous sont les mêmes quel que soit le geste : à l'ajout d'un fournisseur, à la rotation de la clé, à l'actualisation des modèles — où le détail reste affiché sous le fournisseur jusqu'à la prochaine vérification réussie — et dans le résultat de Tester la connexion.

Ce que vous voyezCauseCe qu'il faut faire
URL invalideL'URL ne passe pas les contrôles. Le détail nomme la règle : doit utiliser https, ne doit pas contenir d'identifiants / de paramètres / d'ancre, doit comporter un nom d'hôte, dépasse 500 caractères, ou ne pointe pas vers une adresse publique autorisée (port autre que 443/8443, adresse privée, interne ou non résolue).Reprenez les prérequis d'URL.
URL invalideUn identifiant de modèle renvoyé par /models est inexploitableMalgré le titre, l'URL n'est pas en cause : un id renvoyé par /models est inexploitable. Seuls A-Za-z0-9 . _ : / - sont acceptés, 128 caractères au maximum, et le premier caractère doit être alphanumérique. Le détail se termine par Identifiant en cause : suivi de l'identifiant fautif, réécrit sur ces mêmes caractères et tronqué (les caractères interdits en sont retirés — c'est justement ce qui le rend invalide).Corrigez l'identifiant côté endpoint (un espace ou un accent suffit à le rejeter).
Fournisseur injoignableL'endpoint n'a pas répondu dans le délai imparti sur /modelsL'endpoint ne répond pas assez vite.Vérifiez la latence depuis l'extérieur, pas seulement depuis votre réseau.
Fournisseur injoignableLa connexion à l'endpoint a échouéNom de domaine non résolu, port fermé, TLS refusé.Vérifiez que l'endpoint est joignable depuis l'extérieur.
Fournisseur injoignableL'endpoint a répondu par un code d'erreur HTTP sur /modelsLe détail nomme le code entre parenthèses (par ex. (code HTTP 404)).Vérifiez le chemin : l'URL de base doit être la racine, /models y est ajouté par la plateforme.
Fournisseur injoignableLa réponse de /models n'est pas compatible OpenAI : le tableau data est absent/models ne renvoie pas la forme attendue.Corrigez la réponse de /models, ou placez la passerelle compatible OpenAI devant votre serveur.
Fournisseur injoignableLa réponse de /models ne contient aucun identifiant de modèle exploitable/models répond, mais aucune entrée ne porte d'id.Vérifiez que chaque entrée porte un id.
Fournisseur injoignableL'endpoint n'a pas renvoyé de JSON exploitable sur /modelsLa réponse n'est pas du JSON (page HTML d'un portail captif, d'un proxy ou d'une page d'erreur).Vérifiez que l'URL pointe l'API et non une interface web.
Fournisseur injoignableLa réponse de /models dépasse la taille autoriséeLa liste renvoyée est trop volumineuse pour être lue en toute sécurité.Réduisez la réponse de /models (elle n'a besoin que des id).
Fournisseur injoignableClé API refusée par le fournisseurVotre endpoint a répondu 401 ou 403 ; le détail nomme le code entre parenthèses.Vérifiez la clé et la façon dont l'endpoint attend l'en-tête Authorization.
Fournisseur injoignableAucun des N modèle(s) testé(s) n'a répondu, ni au chat ni aux embeddingsLes modèles essayés ont refusé /chat/completions et /embeddings. Le détail nomme les modèles testés et le dernier motif de refus (clé refusée, code HTTP, délai dépassé, endpoint injoignable, réponse inexploitable).Vérifiez qu'au moins un modèle répond à l'une des deux routes, avec cette clé API. Voir le prérequis correspondant.
Fournisseur injoignable…Le fournisseur a été trop lent pour que tous les modèles soient testésLa vérification est bornée en temps : votre endpoint n'a pas répondu assez vite pour que tous les candidats soient essayés.Vérifiez la latence de l'endpoint (un modèle chargé à froid peut dépasser le délai), puis réessayez.
Nom déjà utiliséUn fournisseur porte déjà ce nom dans votre espace.Choisissez un autre nom.
Dimensions verrouilléesVous modifiez les dimensions d'un modèle déjà utilisé par un espace vectoriel.Utilisez un autre modèle et un nouveau preset.
Fournisseur utilisé (à la suppression)Des presets ou des bases de connaissances y font référence. Le message vous propose de le désactiver.Sachez ce que cela implique : un fournisseur désactivé disparaît de la liste et n'est plus gérable depuis l'interface. Retirez plutôt les presets et les bases qui le référencent, puis supprimez-le.
Un modèle a disparu des listesLe canal correspondant a été coupé dans Confidentialité IA.C'est le comportement attendu : seuls les modèles privés restent proposés.

Et ensuite ?

  • Fournisseurs — les fournisseurs publics et leurs clés.
  • Modèles — activer les modèles du catalogue et désigner les modèles par défaut.
  • Presets — l'enveloppe de gouvernance héritée par les bases de connaissances.

On this page