Questions fréquentes
Cette page résume les questions les plus fréquentes concernant le déploiement et l'utilisation quotidienne. Chaque réponse est accompagnée d'un lien vers la page du manuel correspondant, pour plus de détails, rendez-vous sur la page correspondante.
Installation et première utilisation
D’où vient le premier compte d’administrateur connecté ?
Aivory ne prépare pas les identifiants d'administrateur à travers les variables environnementales. Lors d'une nouvelle déploiement (nombre d'utilisateurs 0), l'accès au site se fait automatiquement sur la page configuration initiale /setup Remplissez une boîte aux lettres, un nom et un mot de passe (au moins 8 caractères) qui deviennent immédiatement un administrateur et s’inscrivent automatiquement sans vérification de boîte aux lettres.
Lorsqu’un compte existe, /setup 就** Invalidité permanente ** Retournez à la page 409 si vous le souhaitez. /setup Si vous voyez un message d'erreur indiquant que l'instance a été initialisée, suivez le processus normal de connexion.
Détail Première opération。
Pourquoi le modèle n’apparaît-il pas dans le sélecteur ?
Vérification dans l’ordre suivant :
- ** Canal non installé**: Dans la console d'administration, ajoutez amont (type : Compatible avec Anthropic / OpenAI / Gemini / OpenAI, remplissez Base URL + API Key).
- ** Modèle non créé ou non activé** Ensuite, allez à la page « modèle » pour créer un modèle (sélectionnez canal, remplissez l’identifiant modèle amont) et confirmez que ** Activé** Seuls les modèles activés apparaissent dans le sélecteur de tous les utilisateurs.
- **Étiquette Sélection ** Le sélecteur de modèle dispose d'une puce de filtrage d'étiquette en haut pour confirmer qu'aucune étiquette n'est actuellement sélectionnée pour filtrer le modèle cible.
Si vous voulez simplement expérimenter l'interface, vous pouvez le configurer dans Compose. ENABLE_MOCK_PROVIDER=true Activer le modèle de présentation intégré (par défaut) false)。
Détail Canal et modèle。
Pourquoi tout le monde doit-il se connecter à nouveau après le redémarrage?
Les deux cas :
- ** Environnement de développement **:
JWT_SECRETGénérer automatiquement des clés temporaires aléatoires lorsqu'elles ne sont pas configurées. ** Chaque fois que le processus est redémarré, toutes les sessions sont annulées. ** Tout le monde a besoin de se connecter à nouveau. Si vous voulez survivre à un redémarrage de session dans un environnement de développement, définissez une valeur fixe. - ** Déploiement environnement ** (
AIVORY_ENVDev, ouDATABASE_URLPostgres : doit être configuré** Au moins 32 caractères **的JWT_SECRETDans le cas contraire, le service sera refusé.
La durée de validité du token ACCESS_TTL (avoué par défaut 30m) et REFRESH_TTL (avoué par défaut 720h 30 jours de contrôle, le format Go duration.
Détail Configuration centrale。
Utilisation de la fonction
Pourquoi la base de connaissances est-elle vide ?
Les deux raisons les plus fréquentes :
- ** Aucun vecteur à l'arrière **:
QDRANT_URLPar défaut vide, la récupération vectorielle aérienne est désactivée et le texte complet du RAG est injecté en retour. La petite documentation reste disponible, mais la récupération vectorielle réelle nécessite la configuration de Qdrant (la production Compose est intégrée). - ** Le modèle d’embedding **: base de connaissances documentation requiert modèle d'embedding.
EMBEDDING_BASE_URL/EMBEDDING_API_KEY/EMBEDDING_MODEL(avoué par défauttext-embedding-3-smallConfigurer ou configurer le modèle d'embedding dans la console d'administration.
La confirmation de l’état du dossier est arrivée. ready (State stream:pending → parsing → embedding → ready), le document dans l'état intermédiaire ne participe pas à la récupération.
Détail Base de connaissances与Configuration centrale。
Que faire si EMBEDDING_DIM ne correspond pas au modèle d'embedding?
EMBEDDING_DIM Définitivement 1536 ( correspondant àtext-embedding-3-small La collection Qdrant est nommée par dimension aivory_c<维度> Si vous utilisez un modèle d'embedding différent de la dimension de sortie, vous devez EMBEDDING_DIM Changer les dimensions réelles du nouveau modèle, sinon les vecteurs d'écriture et de récupération tomberont sur la mauvaise collection.
Cliquez sur la console d'administration « Sauvegarde et migration ». ** Maintenance des vecteurs ** Vector de reconstruction : le système réappelle le modèle d'embedding à partir d'un fragment de texte stocké dans la base de données pour écrire une nouvelle collection, sans avoir besoin du fichier d'origine, mais en utilisant l'appel d'API embarqué.
Détail Sauvegarde et migration。
Vous ne pouvez pas télécharger le PDF après le scan ?
La résolution des PDF avec la couche de texte est locale en millisecondes et ne dépend pas de services externes ; mais ** Le scanner PDF ** (et DOCX / PPTX / XLSX / image) nécessite de prendre MinerU Cloud OCR. S'il vous plaît vérifier que vous avez configuré:
| Variable | Valeur par défaut | Expliquer |
|---|---|---|
MINERU_API_URL | Composer le vide (composer le vide) https://mineru.net) | Adresse de l'API |
MINERU_API_KEY | 空 | Les clés API de MinerU ne peuvent pas être résolues si elles ne sont pas configurées |
Détail Base de connaissances。
Le code de bac à sable peut-il être connecté ?
Définitivement ** ne peut ** Le réseau bac à sable est composé de variables. SANDBOX_NETWORK Contrôle de la valeur par défaut none (Absolument sans réseau), c'est une valeur par défaut de sécurité délibérée. Ce n'est que lorsque le code de bac à sable a réellement besoin d'accès à Internet qu'il est modifiébridge。
La plupart des scènes peuvent également être couvertes sans réseau : le modèle sera en bac à sable 外用 web_fetch / fetch_image L'outil scrape les pages Web et les images, le contenu capturé est automatiquement stocké temporairement dans bac à sable. /workspace/uploads/ Le code Python peut être lu directement dans le document.
SANDBOX_BASE_URL Pour le temps, python_execute L'installation de l'appareil se fait à l'aide d'un conteneur à sable bac à sable (SANDBOX_BASE_URL=http://sandbox:8000)。
Détail Déploiement de bac à sable与 Python bac à sable。
Où modifier les limites de taille ?
Trois niveaux :
- ** Plafond de service dur **:
MAX_UPLOAD_BYTESÊtre admis52428800(50 MB), aucun téléchargement ne peut le dépasser. - ** Console d'administration ** Les administrateurs peuvent appuyer en arrière-plan. ** Images 和 Documents ** Les limites sont séparément serrées (seulement inférieures à la limite dure).
- ** Proxy inverse ** Si vous utilisez Nginx, vous devez également augmenter la limite supérieure de la requête (par exemple).
client_max_body_sizeDans le cas contraire, la demande sera rejetée avant l'arrivée à Aivory.
L'importation de sauvegarde est un autre plafond indépendant: MAX_BACKUP_BYTES Il s’agit de 20 GB.
Détail Configuration centrale、Définir le site与Proxy inverse。
Combien de messages chaque utilisateur peut envoyer et combien de images peut-il générer par jour?
Valeur globale par défaut au niveau des variables environnementales :
| Variable | Valeur par défaut | Expliquer |
|---|---|---|
DAILY_MESSAGE_LIMIT | 200 | Nombre de messages par utilisateur par jour |
IMAGE_DAILY_LIMIT | 30 | Nombre d'images générées par utilisateur par jour |
En outre, les administrateurs peuvent effectuer des contrôles plus détaillés par le biais de groupes d'utilisateurs, de crédits et de modèles de quotas (taux fixes, crédits permanents, prévisualisation des frais avant l'envoi, code d'échange). Utilisateurs et quotas。
Déploiement et réseau
Est-il possible de déployer un texte HTTP ?
Fonctionne correctement.Aivory Front-end détecte la capacité de cryptage du navigateur : dans un contexte non sécurisé (HTTP explicite), les fonctions telles que la demande de signature reviennent automatiquement à la mise en œuvre JS pure et ne dépendent pas que de HTTPS. crypto.subtle En attendant le feu.
La transmission textuelle signifie que les mots de passe, les jetons et le contenu de la conversation peuvent être écoutés sur le réseau; en outre, certaines fonctionnalités du navigateur, telles que l'installation de PWA, ne sont disponibles que dans un contexte sécurisé.
Détail Proxy inverse与 Accès Cloudflare。
Comment changer de nom de domaine ?
Déploiement d'un seul conteneur sous la même source, Aivory ** Adaptation aux noms de domaine ** Le front et /api Pour savoir quel nom de domaine utiliser, il n’est pas nécessaire de le modifier. ALLOWED_ORIGINS ou n'importe quelle configuration d'origine. Pour remplacer le nom de domaine, il suffit de :
- Mise à jour de la résolution DNS du nouveau nom de domaine vers le serveur et mise à jour du proxy inverse.
server_nameavec le certificat. - Si la connexion OAuth est configurée : plusieurs noms de domaine ou changement de nom de domaine doivent être configurés
OAUTH_CALLBACK_BASE_URLRetour fixéscheme://host, et synchronise les adresses de retour du fournisseur OAuth ; pour les connexions interdomaines, il est également nécessaire d'ajouter l'original autorisé pour les retoursOAUTH_RETURN_ORIGINSLa liste blanche. - uniquement ** Séparation arrière ** Le déploiement nécessite une maintenance.
ALLOWED_ORIGINSAttention, attention à l’avant.VITE_API_BASEIl s’agit d’une variable de la période de construction et les changements doivent être reconstruits.
Détail Configuration centrale与Proxy inverse。
Choisir SQLite ou Postgres ?
DATABASE_URL L’évaluation de l’impact de l’évaluation de l’impact de l’évaluation (./data/aivory.db Le mode WAL est lancé en mode zéro dépendance, adapté à une utilisation personnelle et à des essais à petite échelle. postgres:// Le préfixe passe à PostgreSQL pour produire Compose par défaut en utilisant Postgres 16.
Attention : DATABASE_URL La référence à Postgres est considérée comme un « environnement de déploiement » et déclenche une vérification de sécurité au niveau du déploiement (par exemple, des exigences obligatoires). JWT_SECRET Au moins 32 caractères).
Il n'y a pas à s'inquiéter du choix : grâce au format de sauvegarde neutre pour les moteurs, SQLite permet d'importer des sauvegardes complètes dans les déploiements Postgres à tout moment après le démarrage sans perdre de données. Modèle SQLite。
Données et upgrades
Oublier le mot de passe de l’administrateur ?
De haut à bas en fonction de la disponibilité :
- ** Récupérer le code. ** Accès à la page "Oubliez votre mot de passe" et réinitialisez le code d'authentification à 6 bits envoyé à la boîte aux lettres (le code d'authentification sera annulé 5 fois de suite et devra être redémarré).
- ** Un autre administrateur aide **: Si l'instance contient d'autres comptes d'administrateur, votre mot de passe peut être modifié par l'autre partie dans la gestion des utilisateurs de la console d'administration.
- ** Récupération de la sauvegarde ** Si tout ce qui précède n’est pas possible et que vous avez une sauvegarde complète, vous pouvez vous connecter avec le mot de passe du compte dans la sauvegarde après avoir importé la sauvegarde.
Attention /setup Il est définitivement invalide sur les instances d'un compte existant et ne peut pas être utilisé pour reconstruire l'administrateur. Gestion des comptes与Utilisateurs et quotas。
La sauvegarde peut-elle être restaurée via le moteur de base de données?
C'est la conception de base du format de sauvegarde Aivory. La sauvegarde complète est un simple zip:manifest + un JSONL par table (motor neutre) + un répertoire de fichiers optionnel + un vecteur Qdrant optionnel. Les sauvegardes SQLite peuvent être importées dans le déploiement Postgres et, inversement, la séquence et les touches externes sont traitées automatiquement.
Attention lors de l’introduction :
- L’introduction est ** Remplacement de la caisse ** Besoin de mots de confirmation.
REPLACEToutes les sessions actuelles sont annulées après l'achèvement, puis réinscrivez-vous avec le mot de passe du compte dans la sauvegarde. - Mécanique de sécurité : Outre « Exécuter la boîte aux lettres d'administrateur importée », les autres administrateurs apportés par la sauvegarde sont tous abaissés à l'utilisateur ordinaire (à l'abri de la sauvegarde malveillante). ** La boîte aux lettres de l’administrateur d’une nouvelle instance doit être identique à celle de l’administrateur d’une ancienne instance **。
- Introduire la limite de taille
MAX_BACKUP_BYTES(Défaut : 20 GB par défaut) - Si la sauvegarde n'inclut pas de vecteur, vous pouvez reconstruire le texte de blocs de base dans maintenance des vecteurs sans avoir besoin du fichier d'origine.
Détail Sauvegarde et migration。
Comment mettre à niveau vers une nouvelle version ?
Processus standard :
cd Aivory/deploy
# 建议先在管理后台导出一份完整备份
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d
La structure de la base de données lors du lancement de la nouvelle version ** Migration automatique ** Aucune exécution manuelle de SQL n'est nécessaire. tag miroir par .envà l’intérieur IMAGE_TAG Contrôle par défaut latest Il est également possible d’ajouter une version spécifique).
Bien que la migration soit automatique, il est recommandé d'exporter une sauvegarde complète dans la console d'administration Sauvegarde et migration avant chaque mise à niveau, et la bibliothèque peut être restaurée en cas de besoin.
Détail Déploiement de Docker Compose与Sauvegarde et migration。