Fermer

juillet 14, 2025

Série de chiffon sémantique Partie 3: Préparation du contenu

Série de chiffon sémantique Partie 3: Préparation du contenu


Il s’agit de la troisième partie de notre série sur le chiffon sémantique, dans lequel nous vous montrons comment diviser, classer et vectoriser le contenu long. Assurez-vous d’abord pour vérifier
Première partie: Améliorer le Genai avec des données et des graphiques de connaissances multimodèleset
Deuxième partie: le graphique de connaissances.

La deuxième étape de notre flux de travail est la préparation du contenu. La préparation du contenu est un processus fondamental en
GÉNÉRATION AUGURATIVE (RAG)Cela implique l’ingestion, le cordage, la vectorisation et la classification des informations pour enrichir le contexte fourni à un modèle linguistique.

Nous allons commencer par ingérer le contenu original dans
Progrès du serveur MarkLogicPréservation de la source de la validation de la lignée et de l’utilisateur. Chaque enregistrement est ensuite divisé en morceaux plus petits et gérables pour conserver le contenu dans les limites de jeton de la fenêtre de contexte du modèle tout en permettant un ciblage plus précis. Ces morceaux sont classifiés sémantiquement en utilisant le graphique de connaissance que nous avons construit dans le
article précédentde notre série, qui ajoute des métadonnées précieuses comme les références citationnelles et les étiquettes de peuple.

Enfin, des incorporations vectorielles sont appliquées pour coder la signification de chaque morceau numériquement, permettant une reranchement basée sur la similitude. Cela permet uniquement au contenu le plus pertinent de faire surface en réponse aux requêtes utilisateur, améliorant la capacité du modèle à générer des réponses précises et contextuellement fondées.

Préparer un contenu de forme longue

Dans le cadre de cet exemple, nous préparons le contenu de forme longue en utilisant le
Application de flux MarkLogic Progress. L’outil de mouvement des données de flux MarkLogic est très évolutif et peut être exécuté à partir de la ligne de commande ou intégré dans vos applications. L’outil de flux MarkLogic sera utilisé en conjonction avec MarkLogic Server, le
Plate-forme de sémaphoreet Azure Openai pour les intérêts. Pour construire notre corpus de données, nous utiliserons le
PubMed Résumécontenu. Remarque Les fichiers d’origine sont en XML. La plate-forme MarkLogic est de nature multi-modélisation. Nous pouvons stocker le XML aux côtés de JSON et d’autres formats de données dans une seule base de données. Nous garderons le XML d’origine intact pour la recherche et la découverte, tandis que le LLM utilisera les données préparées au format JSON. Notez que Marklogic Flux
prend en charge de nombreux autres formats de donnéeset peut être ajusté pour votre flux de travail.

Flux de travail montrant vous pouvez stocker des morceaux, des balises et des intégres dans un seul document aux côtés du contenu d'origine.

Image 1: workflow montrant que vous pouvez Stockez des morceaux, des étiquettes et des intégres dans un seul document aux côtés du contenu original.

La commande FLUX complète aura des options de chargement, de section, de classification et d’intégration de la génération. Au fur et à mesure que nous progressons dans notre exemple, vous verrez l’ensemble complet d’options que vous utiliseriez pour ingérer et traiter les documents. L’une des commandes les plus courantes est les fichiers d’importation. Nous analyserons un répertoire des fichiers XML pour cet exemple.

Ligne de commande: ./bin/flux import-files @options.txt

Tout d’abord, nous accepterons un fichier entrant à stocker dans MarkLogic Server. Le contenu sera inséré tel quel dans la base de données. Vous pouvez aussi
exécutez les transformations de votre choixsur ces documents. Notez qu’il existe des autorisations et des collections associées à ce contenu. Cela signifie que seules les personnes ayant ces privilèges peuvent voir les enregistrements. De plus, les collections permettent un regroupement logique de contenu.


--path
/pubmed/
--connection-string
user:password@localhost:8000
--permissions
"rest-reader,read,rest-writer,update"
--collections
https://pubmed.ncbi.nlm.nih.gov


Ensuite, nous serons
Création de petits morceaux de donnéesà exploiter par le LLM. Cela est nécessaire car, bien que les fenêtres de contexte – ou la quantité d’informations qu’un LLM puisse traiter en une seule invite – continuent de croître, elles sont toujours limitées. C’est pourquoi il est important de ne pouvoir fournir que les informations pertinentes dans une seule invite.

Le processus de «bunking» prend un plus grand nombre de contenus et les divise en quantités plus petites de données qui peuvent être insérées dans la fenêtre de contexte. Ces morceaux peuvent conserver d’autres métadonnées pour prendre en charge une meilleure découverte de données. Nous conserverons un pointeur vers le fichier source, concepts sémantiques de
classification,
incorporation de vecteuret le texte original. Examinons les options de section fournies par MarkLogic Flux.

--splitter-xpath
/PubmedArticle/MedlineCitation/Article/Abstract/AbstractText
--splitter-max-chunk-size
100000
--splitter-sidecar-max-chunks 
1
--splitter-sidecar-document-type
JSON
--splitter-sidecar-root-name
chunk
--splitter-sidecar-collections
https://pubmed.ncbi.nlm.nih.gov/genai/chunks

Cette configuration sélectionnera une partie de l’article à utiliser pour le contenu textuel. Dans ce cas, nous examinons le texte abstrait de l’article. Vous pouvez également contrôler la taille de chaque morceau. Pour cela, nous réglerons la limite de jeton sur le côté supérieur pour contenir le texte abstrait. Enfin, nous définissons le nombre de morceaux que nous voulons par document et le format de sortie. Pour notre cas d’utilisation, nous voulons un morceau par document. Cela nous permettra de calculer la pertinence de recherche lexicale sur chaque morceau. Le classement basé sur la pertinence des morceaux sera affiché plus loin dans l’article.

Bien que les morceaux soient bons à eux seuls, nous aimerions ajouter des métadonnées supplémentaires pour améliorer la découverte. Nous utiliserons les API de classification du sémaphore pour effectuer une analyse sémantique du texte. Cette classification utilise également un riche moteur de traitement du langage naturel (NLP) et le modèle de connaissances pour déterminer les concepts clés du texte. Le moteur considère que le schémas et la lemmatisation des mots et les preuves à l’appui qui attribuent des concepts.


--classifier-host
localhost
--classifier-http
--classifier-port
5058 

MarkLogic Server 12 prend en charge les opérations vectorielles nativesy compris le stockage des incorporations vectorielles à proximité de vos données. Les incorporations peuvent être stockées dans le morceau d’enregistrement dans les formats JSON ou XML. Le LLMS vous a permis de créer une représentation vectorielle du contenu qui peut être utilisé pour l’analyse de similitude. Avec
Extraction entraînée par le modèle (TDE)nous pouvons spécifier un index unique pour que ces intérêts soient utilisés plus tard dans le cadre de notre méthode de découverte.

Marklogic Flux peut appeler directement le modèle Azure Openai Embeddings et d’autres LLM populaires hors de la boîte. Fichez automatiquement le modèle d’incorporation pour inclure l’utilitaire:

--embedder
azure
-Eapi-key=<your-api-key>
-Edeployment-name=text-test-embedding-ada-002
-Eendpoint=https://gpt-testing-custom-data1.openai.azure.com

Un TDE peut être généré pour produire une vue des métadonnées de morceaux ainsi que l’intégration du vecteur à utiliser dans les futures requêtes.

{
    "template": {
        "description": "Chunk View Template",
        "context": "/chunk",
        "collections": [ "https://pubmed.ncbi.nlm.nih.gov/genai/chunks" ],
        "rows": [
            {
                "schemaName": "GenAI",
                "viewName": "Chunks",
                "viewLayout": "sparse",
                "columns": [
                  {
                        "name": "source",
                        "scalarType": "string",
                        "val": "source-uri",
                        "nullable": false,
                        "invalidValues": "ignore"
                    },
                  {
                        "name": "text",
                        "scalarType": "string",
                        "val": "chunks/text",
                        "nullable": false,
                        "invalidValues": "ignore"
                    },
                    {
                        "name": "embedding",
                        "scalarType": "vector",
                        "nullable": true,
                        "val": "vec:vector(chunks/embedding)",
                        "dimension": "1536"
                    }
                ]
            }
        ]
    }
}

Exploitant la puissance des TDE, nous pouvons désormais créer un graphique des faits et des informations. Cela nous permet de faire des requêtes multi-modèles contre le corpus de données et aide à visualiser les informations pour l’analyse exploratoire ou directement dans l’interface utilisateur d’une application.

{
  "template": {
    "description": "Content graph template",
    "context": "/chunk",
    "collections": [
      "https://pubmed.ncbi.nlm.nih.gov/genai/chunks"
    ],
    "templates": [
      {
        "context": "chunks/classification/META",
        "triples": [
          {
            "subject": {
              "val": "sem:iri(./ancestor::chunk/source-uri)",
              "invalidValues": "ignore"
            },
            "predicate": {
              "val": "sem:iri('http://purl.org/dc/terms/references')"
            },
            "object": {
              "val": "xs:string(./id)"
            }
          }
        ]
      }
    ]
  }
}

Cet exemple d’interface utilisateur construit une application de recherche qui vous permet de revoir les articles et les concepts. Le graphique sémantique vous montre la relation avec le fichier source et les concepts clés identifiés par classification. Notez que le graphique montre également des termes parents, qui peuvent fournir un contexte supplémentaire.

Lors de l’examen de la réponse du LLM, vous pouvez revenir à ces documents pour comprendre quel contenu a été utilisé pour dériver la réponse. Cela permet une lignée complète et une auditabilité de votre application Genai. L’utilisateur final de l’application est toujours au courant du contenu référencé et de la façon dont il correspond à votre organisation.

Visualisation de la façon dont les concepts sont liés dans un graphique de connaissances avec l'un des nœuds du graphique cliqué, ce qui a incité l'aperçu de gauche du document lié à ce concept spécifique.

Image 2: Visualiser le contenu et les concepts du graphique de connaissances. Le contenu est directement lié aux concepts qui régissent le domaine.

Dans le prochain article, nous examinerons la découverte de contenu, comment orchestrer votre pipeline de requête hybride pour maximiser la pertinence de récupération des connaissances et comment créer une interface de chat pour votre application personnalisée.

Pour explorer le processus complet de conception d’un flux de travail de chiffon afin d’améliorer la précision de vos réponses LLM, Téléchargez notre livre blanc SEMANT RAG.

Télécharger le livre blanc




Source link