Ingestion RAG : application Web de gestion

, par Bertrand Degoy

Le dossier ’data’ du thème
Tous les documents ingérés (sur lesquels a été construit l’index) se trouvent sur l’hôte dans le dossier .../data/’theme’/.
Le dossier .../data/’theme’/storage/ contient les différents fichiers composant l’index.
Le fichier ’theme’.txt en est une version comprimée et sérialisée de façon à être chargée rapidement par les applications.

Ajouter document(s)
Cette action permet de sélectionner un document dans un dossier local, de l’importer dans le répertoire des données et l’indexer. Il est également possible d’effectuer une sélection multiple.
Cette action n’assure pas l’enregistrement de l’index.

Ajouter Web
Cette action parcourt le site Web désigné, importe le contenu dans le dossier .../data/’theme’/ et assure l’indexation.
L’index est enregistré à la fin de l’action.
Dans l’état actuel du développement, le parcours est effectué avec le paramètres —forwards, mais sans les paramètres —all, —nostore, —dynamic, —plan etc. (voir Ingestion RAG : le script ingestcmd.py ).
En particulier, l’absence de —all permet de lancer l’action régulièrement pour incrémenter l’index avec les pages nouvelles ou modifiées.

Indexer
Cette action balaye le dossier data à la recherche de documents non-indexés et les indexe.
L’ajout d’un document, du contenu d’un répertoire ou de tout ou partie d’un site Web assure l’importation des documents dans le dossier .../data/’theme’/ et leur indexation. Mais il est également possible d’ajouter des documents par d’autres moyens tels qu’un téléversement. Ces documents ne sont pas indexés et devront l’être par l’action Indexer.
L’index est enregistré à la fin de l’action.

Réindexer
L’action Réindexer efface l’index en mémoire et sur le disque avant de ré-indexer tous les documents du dossier data/’theme’/.
L’index est enregistré à la fin de l’action.
Cette action n’est pertinente que dans certains cas d’erreur.
Noter que l’index sérialisé précédent est préservé pendant l’exécution afin d’éviter les ruptures de service.

Enregistrer
L’index est maintenu dans la mémoire de l’hôte. Pour le rendre persistant et accessible aux applications, il faut l’enregistrer après avoir ajouté des documents.
Ceci est fait systématiquement à la suite des actions Ajouter Web, Indexer et Réindexer.
L’enregistrement est une action relativement longue et coûteuse en ressources. C’est pourquoi, quand on ajoute un ou plusieurs documents, on laisse à l’utilisateur le soin de provoquer l’enregistrement.

Erreurs et solutions

erreur ingestwsg : cURL error : Failed to connect to localhost port 5003 : Connection refused
Il est très probable que le Web Service IngestWsg ne soit pas lancé. Lancez le WS en ligne de commande avec le script ingestwsg.sh.
Vérifiez qu’une tâche CRON lance se script, par exemple chaque nuit.
Voici un exemple d’une séquence de démarrage. Les commandes :

  1. $ cd /home/iazesite/domains/chat.ia.zesite.com/PythonApp
  2. $ source PythonAppVenv/bin/activate
  3. $ /home/iazesite/domains/chat.ia.zesite.coml/PythonApp/ingestwsg.sh

Télécharger

donnent :

Init class Ingestion 1.2.3 2025/06/03
public_dir_fs= /home/iazesite/public_html/
Using default Embeddings Model: BAAI
Ready to start

erreur ingestwsg : HTTP Error 400 : Ingestion start error : Ingestion error, theme  : load_data error, KeyError, ’_collections_mappings’
Cette erreur résulte d’une incompatibilité entre versions de Python utilisées à différents moments de l’ingestion ou de l’exploitation des données. Il s’agit d’une obsolescence qui devrait disparaître.
La solution consiste à ré-indexer le thème.

Fatal error : embedding (embed_dimension) and vector dimensions (vector_dimension) should be the same
 embed_dimension : la dimension du modèle d’embeddings actuellement utilisé pour les requêtes au LLM,
 vector_dimension : la dimension des embeddings de l’index du thème considéré.
Cette erreur signifie que les modèles d’embeddings utilisés pour l’ingestion puis par les applications ont des dimensions différentes, ou qu’une nouvelle indexation utilise un modèle différent de la précédente.
La solution consiste à ré-indexer le thème.