Note :
- Ce tutoriel nécessite l'accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, voir Démarrer avec le niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les données d'identification, la location et les compartiments d'Oracle Cloud Infrastructure. À la fin de votre laboratoire, remplacez ces valeurs par celles qui sont propres à votre environnement en nuage.
Analyser des documents PDF en langage naturel à l'aide du service d'intelligence artificielle générative pour OCI
Présentation
Oracle Cloud Infrastructure Generative AI (OCI Generative AI) est une solution d'intelligence artificielle générative avancée qui permet aux entreprises et aux développeurs de créer des applications intelligentes à l'aide de modèles de langage de pointe. Basée sur des technologies puissantes telles que les grands modèles de langage (LLM), cette solution permet l'automatisation de tâches complexes, rendant les processus plus rapides, plus efficaces et accessibles grâce à des interactions en langage naturel.
L'une des applications les plus efficaces de l'IA générative d'OCI est l'analyse de documents PDF. Les entreprises traitent fréquemment de grands volumes de documents, tels que des contrats, des rapports financiers, des manuels techniques et des documents de recherche. La recherche manuelle d'informations dans ces fichiers peut prendre beaucoup de temps et être sujette à des erreurs.
Avec l'utilisation de l'intelligence artificielle générative, il est possible d'extraire des informations instantanément et avec précision, permettant aux utilisateurs d'interroger des documents complexes simplement en formulant des questions en langage naturel. Cela signifie qu'au lieu de lire des pages entières pour trouver une clause spécifique dans un contrat ou un point de données pertinent dans un rapport, les utilisateurs peuvent simplement demander le modèle, ce qui renvoie rapidement la réponse en fonction du contenu analysé.
Au-delà de l'extraction d'informations, OCI Generative AI peut également être utilisé pour résumer de longs documents, comparer du contenu, classer des informations et même générer des informations stratégiques. Ces capacités rendent la technologie essentielle dans divers domaines, tels que le droit, la finance, les soins de santé et l'ingénierie, optimisant la prise de décision et augmentant la productivité.
En intégrant cette technologie à des outils tels que les services Oracle AI, OCI Data Science et les API pour le traitement des documents, les entreprises peuvent créer des solutions intelligentes qui transforment complètement la façon dont elles interagissent avec leurs données, rendant la récupération des informations plus rapide et plus efficace.
Conditions requises
- Installez Python
version 3.10
ou une version supérieure et l'interface de ligne de commande Oracle Cloud Infrastructure (interface de ligne de commande OCI).
Tâche 1 : Installer les ensembles Python
Le code Python nécessite certaines bibliothèques pour utiliser le service d'intelligence artificielle générative pour OCI. Exécutez la commande suivante pour installer les ensembles Python requis.
pip install -r requirements.txt
Tâche 2 : Comprendre le code Python
Il s'agit d'une démonstration de l'IA générative d'OCI pour interroger les fonctionnalités d'Oracle SOA Suite et d'Oracle Integration. Les deux outils sont actuellement utilisés pour des stratégies d'intégration hybride, ce qui signifie qu'ils fonctionnent à la fois dans des environnements en nuage et sur place.
Étant donné que ces outils partagent des fonctionnalités et des processus, ce code aide à comprendre comment mettre en œuvre la même approche d'intégration dans chaque outil. En outre, il permet aux utilisateurs d'explorer des caractéristiques et des différences communes.
Téléchargez le code Python à partir d'ici :
Vous pouvez trouver les documents PDF ici :
Créez un dossier nommé Manuals
et déplacez-y ces PDF.
-
Importer des bibliothèques :
Importe les bibliothèques nécessaires pour le traitement des PDF, de l'IA générative OCI, de la vectorisation de texte et du stockage dans les bases de données vectorielles (Facebook AI Similarity Search (FAISS) et ChromaDB).
-
UnstructuredPDFLoader
est utilisé pour extraire du texte de PDF. -
ChatOCIGenAI
permet l'utilisation des modèles d'IA générative pour OCI pour répondre aux questions. -
OCIGenAIEmbeddings
crée des plongements (représentations vectorielles) de texte pour la recherche sémantique.
-
-
Charger et traiter les PDF :
Répertorie les fichiers PDF à traiter.
-
UnstructuredPDFLoader
lit chaque document et le divise en pages pour faciliter l'indexation et la recherche. -
Les codes de documents sont stockés pour référence ultérieure.
-
-
Configurer le modèle d'intelligence artificielle générative pour OCI :
Configure le modèle
Llama-3.1-405b
hébergé sur OCI pour générer des réponses en fonction des documents chargés.Définit des paramètres tels que
temperature
(contrôle de l'aléatoire),top_p
(contrôle de la diversité) etmax_tokens
(limite du jeton).Note : La version LLaMA disponible peut changer au fil du temps. Vérifiez la version courante dans votre location et mettez à jour votre code si nécessaire.
-
Créer des intégrations et une indexation vectorielle :
Utilise le modèle d'intégration d'Oracle pour transformer le texte en vecteurs numériques, facilitant ainsi les recherches sémantiques dans les documents.
-
FAISS stocke les plongements des documents PDF pour des requêtes rapides.
-
retriever
permet d'extraire les extraits les plus pertinents en fonction de la similarité sémantique de l'interrogation de l'utilisateur.
-
-
Lors de la première exécution du traitement, les données vectorielles seront enregistrées dans une base de données FAISS.
-
Définissez l'invite :
Crée une invite intelligente pour le modèle génératif, le guidant pour ne prendre en compte que les documents pertinents pour chaque interrogation.
Cela améliore la précision des réponses et évite les informations inutiles.
-
Créez la chaîne de traitement (RAG - Retrieval-Augmented Generation) :
Implémente un flux RAG, où :
retriever
recherche les extraits de document les plus pertinents.prompt
organise l'interrogation pour un meilleur contexte.llm
génère une réponse basée sur les documents extraits.StrOutputParser
formate la sortie finale.
-
Boucle de question et de réponse :
Permet de tenir à jour une boucle dans laquelle les utilisateurs peuvent poser des questions sur les documents chargés.
-
L'IA répond à l'aide de la base de connaissances extraite des PDF.
-
Si vous entrez
quit
, il quitte le programme.
-
Maintenant, vous pouvez choisir 3 options pour traiter les documents. Vous pouvez penser :
- Combien de pouvoir devez-vous traiter?
- Combien de temps devez-vous traiter?
- Quelle est la qualité de vos réponses?
Vous disposez donc des options suivantes :
Fragmentation à taille fixe : Il s'agit d'une solution plus rapide pour traiter vos documents. Il peut suffire d'obtenir ce que vous voulez.
Fragmentation sémantique : Ce processus sera plus lent que la fragmentation de taille fixe, mais il offrira une fragmentation de qualité supérieure.
Groupe sémantique avec GraphRAG : Il fournira une méthode plus précise car il organisera les textes de fragmentation et les graphiques de connaissances.
Fragmentation à taille fixe
Téléchargez le code à partir d'ici : oci_genai_llm_context_fast.py
.
-
Qu'est-ce que la fragmentation à taille fixe?
La fragmentation à taille fixe est une stratégie de fractionnement de texte simple et efficace dans laquelle les documents sont divisés en fragments en fonction de limites de taille prédéfinies, généralement mesurées en jetons, caractères ou lignes.
Cette méthode n'analyse pas la signification ou la structure du texte. Il coupe simplement le contenu à intervalles fixes, que la coupe se produise au milieu d'une phrase, d'un paragraphe ou d'une idée.
-
Fonctionnement de la fragmentation de taille fixe :
-
Exemple de règle : Fractionnez le document tous les 1000 jetons (ou tous les 3000 caractères).
-
Couple facultatif : Pour réduire le risque de fractionnement du context pertinent, certaines mises en oeuvre ajoutent un chevauchement entre des fragments consécutifs (par exemple, un chevauchement de 200 jetons) pour s'assurer que le context important n'est pas perdu à la limite.
-
-
Avantages de la fragmentation de taille fixe :
-
Traitement rapide : Aucune analyse sémantique, inférence de LLM ou compréhension du contenu n'est nécessaire. Il suffit de compter et de couper.
-
Basse consommation de ressources : Utilisation minimale d'UC/de processeur graphique et de mémoire, ce qui la rend évolutive pour les jeux de données volumineux.
-
Facile à mettre en oeuvre : Fonctionne avec des scripts simples ou des bibliothèques de traitement de texte standard.
-
-
Limites de la fragmentation de taille fixe :
-
Pauvre conscience sémantique : Les fragments peuvent couper des phrases, des paragraphes ou des sections logiques, conduisant à des idées incomplètes ou fragmentées.
-
Réduction de la précision d'extraction : Dans les applications telles que la recherche sémantique ou la génération augmentée par extraction (RAG), des limites de fragmentation médiocres peuvent affecter la pertinence et la qualité des réponses extraites.
-
-
Quand utiliser la fragmentation à taille fixe :
-
Lorsque la vitesse de traitement et l'évolutivité sont des priorités absolues.
-
Pour les pipelines d'ingestion de documents à grande échelle dont la précision sémantique n'est pas critique.
-
Comme première étape dans les scénarios où l'affinement ultérieur ou l'analyse sémantique se produira en aval.
-
Il s'agit d'une méthode très simple pour diviser le texte.
-
Il s'agit du principal processus de fragmentation fixe.
Note : Téléchargez ce code pour traiter la fragmentation fixe plus plus rapidement :
oci_genai_llm_context_fast.py
-
Fragmentation sémantique
Téléchargez le code à partir d'ici : oci_genai_llm_context.py
.
-
Qu'est-ce que la fragmentation sémantique?
La fragmentation sémantique est une technique de prétraitement de texte dans laquelle des documents volumineux (tels que des PDF, des présentations ou des articles) sont divisés en parties plus petites appelées frappes, chaque fragment représentant un bloc de texte sémantiquement cohérent.
Contrairement à la fragmentation de taille fixe traditionnelle (par exemple, fractionnement tous les 1000 jetons ou tous les X caractères), la fragmentation sémantique utilise l'intelligence artificielle (généralement des modèles de langage volumineux - LLM) pour détecter les limites naturelles du contenu, en respectant les sujets, les sections et le context.
Au lieu de couper le texte arbitrairement, la fragmentation sémantique tente de préserver la signification complète de chaque section, en créant des pièces autonomes et sensibles au contexte.
-
Pourquoi la fragmentation sémantique peut-elle ralentir le traitement?
Un processus de fragmentation traditionnel, basé sur une taille fixe, est rapide. Le système compte simplement les jetons ou les caractères et les coupe en conséquence. Avec la fragmentation sémantique, plusieurs étapes supplémentaires d'analyse sémantique sont requises :
- Lecture et interprétation du texte intégral (ou des blocs volumineux) avant le fractionnement : Le LLM doit comprendre le contenu pour identifier les meilleures limites de fragmentation.
- Exécution des invites de LLM ou des modèles de classification de sujet : Le système interroge souvent le LLM avec des questions telles que Est-ce la fin d'une idée? ou Est-ce que ce paragraphe commence une nouvelle section?
- Utilisation de mémoire et d'UC/GPU supérieure : Comme le modèle traite des blocs de texte plus volumineux avant de prendre des décisions de fragmentation, la consommation de ressources est nettement supérieure.
- Prise de décision séquentielle et incrémentielle : La fragmentation sémantique fonctionne souvent par étapes (par exemple, en analysant des blocs de 10 000 jetons, puis en affinant les limites de fragmentation à l'intérieur de ce bloc), ce qui augmente le temps total de traitement.
Note :
- Selon la puissance de traitement de votre machine, vous attendez longtemps avant de finaliser la première exécution à l'aide de la fragmentation sémantique.
- Vous pouvez utiliser cet algorithme pour produire une fragmentation personnalisée à l'aide du service IA générative pour OCI.
-
Fonctionnement de la fragmentation sémantique :
-
smart_split_text()
: Sépare le texte intégral en petits morceaux de 10 Ko (vous pouvez le configurer pour adopter d'autres stratégies). Le mécanisme perçoit le dernier paragraphe. Si une partie du paragraphe se trouve dans le texte suivant, cette partie sera ignorée dans le traitement et sera ajoutée au groupe de texte de traitement suivant. -
semantic_chunk()
: Cette méthode utilisera le mécanisme LLM OCI pour séparer les paragraphes. Il comprend l'intelligence permettant d'identifier les titres, les composants d'une table, les paragraphes permettant d'exécuter un fragment intelligent. La stratégie consiste à utiliser la technique de fragment sémantique. Il faudra plus de temps pour mener à bien la mission par rapport au traitement commun. Ainsi, le premier traitement prendra beaucoup de temps, mais le suivant chargera toutes les données préenregistrées FAISS. -
split_llm_output_into_chapters()
: Cette méthode finalisera le fragment en séparant les chapitres.
Note : Téléchargez ce code pour traiter la fragmentation sémantique :
oci_genai_llm_context.py
-
Segmentation sémantique avec GraphRAG
Téléchargez le code à partir d'ici : oci_genai_llm_graphrag.py
.
GraphRAG (Graph-Augmented Retrieval-Augmented Generation) est une architecture d'IA avancée qui combine l'extraction vectorielle traditionnelle aux graphiques de connaissances structurées. Dans un pipeline RAG standard, un modèle de langage extrait des fragments de document pertinents à l'aide de la similarité sémantique à partir d'une base de données vectorielle (comme FAISS). Cependant, l'extraction vectorielle fonctionne de manière non structurée, en s'appuyant uniquement sur des intégrations et des métriques de distance, qui manquent parfois des significations contextuelles ou relationnelles plus profondes.
GraphRAG améliore ce processus en introduisant une couche de graphique de connaissances, où les entités, les concepts, les composants et leurs relations sont explicitement représentés en tant que noeuds et arêtes. Ce context basé sur un graphique permet au modèle de langage de raisonner sur les relations, les hiérarchies et les dépendances que la similarité vectorielle seule ne peut pas capturer.
-
Pourquoi combiner la segmentation sémantique avec GraphRAG?
La fragmentation sémantique est le processus de fractionnement intelligent de grands documents en unités significatives ou en " fragments ", en fonction de la structure du contenu, tels que les chapitres, les en-têtes, les sections ou les divisions logiques. Plutôt que de briser des documents uniquement par des limites de caractères ou par un fractionnement naïf de paragraphes, la fragmentation sémantique produit des fragments de meilleure qualité, sensibles au context qui s'alignent mieux sur la compréhension humaine.
-
Segmentation sémantique avec GraphRAG Avantages :
-
Représentation améliorée des connaissances :
- Les fragments sémantiques préservent les limites logiques du contenu.
- Les graphiques de connaissances extraits de ces fragments permettent de maintenir des relations précises entre les entités, les systèmes, les API, les processus ou les services.
-
Extraction contextuelle multimodale (le modèle de langue extrait les deux) :
- context non structuré de la base de données vectorielle (similitude sémantique).
- context structuré à partir du graphique de connaissances (tripes de relation entité-entité).
- Cette approche hybride mène à des réponses plus complètes et précises.
-
Amélioration des capacités de raisonnement :
- L'extraction graphique permet le raisonnement relationnel.
- Le LLM peut répondre à des questions telles que :
- De quels services dépend l'API de commande?
- Quels composants font partie de SOA Suite?
- Ces interrogations relationnelles sont souvent impossibles avec des approches d'intégration uniquement.
-
Explication et traçabilité supérieures :
- Les relations graphiques sont lisibles par l'homme et transparentes.
- Les utilisateurs peuvent vérifier comment les réponses sont dérivées des connaissances textuelles et structurelles.
-
Hallucination réduite : Le graphique agit comme une contrainte sur le LLM, en ancrant les réponses aux relations vérifiées et les connexions factuelles extraites des documents sources.
-
Évolutivité dans les domaines complexes :
- Dans les domaines techniques (par exemple, les API, les microservices, les contrats juridiques, les normes de soins de santé), les relations entre les composants sont aussi importantes que les composants eux-mêmes.
- GraphRAG combiné à des échelles de fragmentation sémantique s'adapte efficacement dans ces contextes, préservant à la fois la profondeur textuelle et la structure relationnelle.
Note :
- Téléchargez le code pour traiter la fragmentation sémantique à l'adresse graphRAG à partir d'ici :
oci_genai_llm_graphrag.py
. - Vous aurez besoin de :
- Un docker installé et actif pour utiliser la base de données de système d'exploitation graphique à code source libre Neo4J à tester.
- Installez la bibliothèque Python neo4j.
Ce code contient 2 méthodes :
-
create_knowledge_graph
:-
Cette méthode extrait automatiquement les entités et les relations des fragments de texte et les stocke dans un graphique de connaissances Neo4j.
-
Pour chaque fragment de document, il envoie le contenu à un LLM (Large Language Model) avec une invite demandant d'extraire des entités (comme les systèmes, les composants, les services, les API) et leurs relations.
-
Il analyse chaque ligne, extrait Entity1, RELATION et Entity2.
-
Stocke ces informations en tant que noeuds et arêtes dans la base de données du graphique Neo4j à l'aide des interrogations Cypher :
MERGE (e1:Entity {name: $entity1}) MERGE (e2:Entity {name: $entity2}) MERGE (e1)-[:RELATION {source: $source}]->(e2)
-
-
-
query_knowledge_graph
:-
Cette méthode interroge le graphique de connaissances Neo4j pour extraire les relations associées à un mot clé ou à un concept spécifique.
-
Exécute une interrogation Cypher qui recherche :
Any relationship (e1)-[r]->(e2) Where e1.name, e2.name, or the relationship type contains the query_text (case-insensitive).
-
Retourne jusqu'à 20 triples correspondants formatés comme suit :
Entity1 -[RELATION]-> Entity2
-
Note :
Neo4j Utilisation :
Cette mise en oeuvre utilise Neo4j comme base de données de graphiques de connaissances intégrée à des fins de démonstration et de prototypage. Bien que Neo4j soit une base de données graphique puissante et flexible adaptée aux charges de travail de développement, de test et de petite à moyenne taille, elle peut ne pas répondre aux exigences de charges de travail d'entreprise, essentielles à la mission ou hautement sécurisées, en particulier dans les environnements nécessitant une haute disponibilité, une évolutivité et une conformité de sécurité avancée.
Pour les environnements de production et les scénarios d'entreprise, nous recommandons d'utiliser Oracle Database avec les fonctions de graphique, qui offrent :
Fiabilité et sécurité de niveau entreprise.
Évolutivité pour les charges de travail critiques.
Modèles graphiques natifs (Property Graph et RDF) intégrés aux données relationnelles.
Fonctions avancées d'analyse, de sécurité, de haute disponibilité et de reprise après sinistre.
Intégration complète d'Oracle Cloud Infrastructure (OCI).
En utilisant Oracle Database pour les charges de travail graphiques, les organisations peuvent unifier les données structurées, semi-structurées et graphiques au sein d'une plateforme d'entreprise unique, sécurisée et évolutive.
Tâche 3 : Exécuter l'interrogation pour Oracle Integration et Oracle SOA Suite Contents
Exécutez la commande suivante .
FOR FIXED CHUNKING TECHNIQUE (MORE FASTER METHOD)
python oci_genai_llm_context_fast.py --device="mps" --gpu_name="M2Max GPU 32 Cores"
FOR SEMANTIC CHUNKING TECHNIQUE
python oci_genai_llm_context.py --device="mps" --gpu_name="M2Max GPU 32 Cores"
FOR SEMANTIC CHUNKING COMBINED WITH GRAPHRAG TECHNIQUE
python oci_genai_llm_graphrag.py --device="mps" --gpu_name="M2Max GPU 32 Cores"
Note : Les paramètres
--device
et--gpu_name
peuvent être utilisés pour accélérer le traitement en Python, à l'aide du processeur graphique si votre machine en a un. Considérez que ce code peut également être utilisé avec des modèles locaux.
Le contexte fourni distingue Oracle SOA Suite et Oracle Integration. Vous pouvez tester le code en tenant compte des points suivants :
- L'interrogation ne doit être effectuée que pour Oracle SOA Suite : Par conséquent, seuls les documents Oracle SOA Suite doivent être pris en compte.
- L'interrogation ne doit être effectuée que pour Oracle Integration : Par conséquent, seuls les documents Oracle Integration doivent être pris en compte.
- L'interrogation nécessite une comparaison entre Oracle SOA Suite et Oracle Integration : Par conséquent, tous les documents doivent être pris en compte.
Nous pouvons définir le contexte suivant, ce qui aide grandement à interpréter correctement les documents.
L'illustration suivante présente un exemple de comparaison entre Oracle SOA Suite et Oracle Integration.
Étapes suivantes
Ce code présente une application de l'IA générative d'OCI pour l'analyse PDF intelligente. Il permet aux utilisateurs d'interroger efficacement de grands volumes de documents à l'aide de recherches sémantiques et d'un modèle d'IA générative pour générer des réponses précises en langage naturel.
Cette approche peut être appliquée dans divers domaines, tels que le droit, la conformité, le soutien technique et la recherche universitaire, ce qui rend la récupération de l'information beaucoup plus rapide et plus intelligente.
Liens connexes
-
Introduction aux agents LangChain Python personnalisés et intégrés
-
Oracle Database Insider - RAG de graphiques : Apportez la puissance des graphiques à l'IA générative
Remerciements
- Auteur - Cristiano Hoshikawa (Oracle LAD A-Team Solution Engineer)
Ressources d'apprentissage supplémentaires
Explorez d'autres laboratoires sur le site docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal Oracle Learning YouTube. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir la documentation sur le produit, visitez Oracle Help Center.
Analyze PDF Documents in Natural Language with OCI Generative AI
G29538-05
Copyright ©2025, Oracle and/or its affiliates.