Ingestion RAG : le script ingestcmd.py

, par Bertrand Degoy

Le script ingestcmd.py est une commande interne utilisée par l’application SmartIngest pour effectuer les ajouts et les retraits de documents ou de pages Web. Les index des thèmes concernés sont mis à jour à la suite de ces mouvements. Le script est développé par DnC.

Documents sources

Les documents sources peuvent être :
 un site Web [1],
 un document HTML (mime type ’text/html’),
 un dossier local,
 un fichier local.

S’agissant de fichiers locaux (ou du contenu d’un dossier local), les types possibles sont, par leur extension : .csv, .docx, .epub, .mbox, .md [2], .mp3, .pdf, .ppt ... [3].
Un simple fichier .txt peut également être traité mais, à format élémentaire, rendu élémentaire.

Le format Markdown est préférentiel, sous le format décrit ici : https://www.markdownguide.org/basic-syntax/

Notez le fonctionnement différent selon la source :
 dans le cas d’un site Web, les documents extraits du site sont importés dans le dossier .../data/theme,
 dans tous les autres cas, les fichiers doivent se trouver dans le dossier .../data/theme : il n’y a pas d’importation.

Ingérer des documents

Usage :

.../ingestcmd.py <theme> --source {dir, file, url}  [--recurse] [--all] [--forwards] [--level <N>] [--nostore]

Paramètres :

Argument Description
theme Requis en première position Thème : espace de données spécifique. Un nom court, en minuscules, formé des caractères ’a-z’, ’-’ et ’_’ , sans espace. Défaut : itego.
—source Requis/Optionnel Répertoire, fichier ou URL. Ce doit être des adresses absolues. Cet argument est requis pour toute autre action que —delete_document_by_filename.
—dynamic Optionnel Indique que le site est dynamique et que les scripts doivent être exécutés au chargement de la page.
—recurse Optionnel Ne s’applique que si la source est un répertoire. Indique que les sous-répertoires doivent être parcourus.
—all Optionnel Indique que tout les fichier doivent être traités indépendamment de leur âge, qu’ils aient été modifiés ou non.
—forwards Optionnel Ne s’applique que si la source est un site Web. Indique de ne pas remonter vers la racine des documents. Par exemple, si l’URL est https://monsite.com/fr, le chemin /en ne sera pas parcouru. Voir également : Ingestion RAG : recommandations pour la création des pages Web .
—levels Optionnel S’applique si la source est un site Web ou un répertoire. Nombre de niveaux à parcourir.
—plan Optionnel S’applique si la source est un site Web. La source est un plan des pages à ingérer. Les pages ingérées seront limitées aux liens internes de cette seule page de plan et contenus dans les tags ’ul’ de classe ’plan’.
—nostore Optionnel Par défaut, les index sont sauvegardés à chaque nouvelle ingestion, ce qui prend du temps. L’option —nostore bloque la sauvegarde, ce qui permet de choisir quand cela doit être fait, par exemple après l’ingestion de plusieurs sources.
—HuggingFaceEmbedding Optionnel Utiliser un embedding de HuggingFace plutôt que celui d’OpenAI.

Réponse :

RéponseDescription
Fatal error : N : erreur L’exécution du script s’arrête sur l’erreur indiquée.
End, count : compte L’exécution du script s’est terminée avec succès, le nombre de documents traités est indiqué par count.

Supprimer un document

Usage :

.../ingestcmd.py <theme> --delete_document_by_filename <filename>

Paramètres :

Argument Description
—delete_document_by_filename Optionnel Supprime le document ayant le nom de fichier indiqué (tel que dans le dossier data du thème) et met à jour les index. Doit être utilisé sans autre argument que theme.

Réponse :

RéponseDescription
End, count : count L’exécution du script s’est terminée.
count. = 9 indique le succès.
En cas d’erreur :
3 : not deleted from index
4 : deleted from index but not deleted from directory
5 : file_name not found
6 : general error
Plus d’information dans le fichier nohup.
Les codes 1-2, 126-165 et 255 proviennent du shell.

Accès réservé : connectez vous pour en savoir plus.

Notes

[1Dans l’état actuel du développement, seuls les sites statiques (sans exécution de Javascript pour la génération du contenu) sont traités. Pour les sites et pages dynamiques, le développement est en cours.

[2Ainsi que : .md , .markdown , .mkd , .mdown , .mdtxt , .mdtext

[3.json en cours de développement.