Maison  >  Article  >  développement back-end  >  d[IA]gnose : développer des applications RAG avec IRIS for Healt

d[IA]gnose : développer des applications RAG avec IRIS for Healt

WBOY
WBOYoriginal
2024-08-29 06:32:351182parcourir

Avec l'introduction des types de données vectorielles et de la fonctionnalité de recherche vectorielle dans IRIS, tout un monde de possibilités s'ouvre pour le développement d'applications et un exemple de ces applications est celui que j'ai récemment vu publié dans un concours public par le Ministère de la Santé de Valence dans lequel ils ont demandé un outil pour aider au codage de la CIM-10 à l'aide de modèles d'IA.

Comment pourrait-on mettre en place une application similaire à celle demandée ? Voyons ce dont nous aurions besoin :

  1. Liste des codes ICD-10, que nous utiliserons comme contexte pour notre application RAG pour rechercher des diagnostics dans les textes bruts.
  2. Un modèle entraîné qui vectorise les textes dans lesquels nous allons chercher des équivalences dans les codes CIM-10.
  3. Les bibliothèques Python nécessaires à l'ingestion et à la vectorisation des codes et textes ICD-10.
  4. Un front-end convivial qui prend en charge les textes sur lesquels nous recherchons d'éventuels diagnostics.
  5. Orchestration des requêtes reçues du front-end.

Que nous apporte IRIS pour couvrir les besoins ci-dessus ?

  1. Import CSV, soit en utilisant la fonctionnalité RecordMapper, soit directement en utilisant Embedded Python.
  2. Embedded Python nous permet d'implémenter le code Python nécessaire pour générer les vecteurs à l'aide du modèle sélectionné.
  3. Publiez les API REST qui seront invoquées depuis l'application frontale.
  4. Productions d'interopérabilité qui permettent le suivi des informations au sein d'IRIS.

Eh bien, il suffit de voir l'exemple développé :

d[IA]gnose

Associé à cet article vous avez accès à l'application développée, dans les prochains articles nous verrons en détail comment nous implémentons chacune des fonctionnalités, depuis l'utilisation du modèle, le stockage des vecteurs et l'utilisation des recherches de vecteurs .

Revoyons la candidature :

Importation des codes ICD-10

d[IA]gnosis: developing RAG applications with IRIS for Healt

Depuis l'écran de configuration, on nous indique le format dans lequel le fichier CSV doit être conforme aux codes ICD-10 que nous allons importer. Le processus de chargement et de vectorisation consomme beaucoup de temps et de ressources, c'est pourquoi le déploiement du conteneur Docker configure non seulement la mémoire RAM utilisable par Docker mais aussi la mémoire disque au cas où les besoins dépasseraient la RAM allouée :

  # iris
  iris:
    init: true
    container_name: iris
    build:
      context: .
      dockerfile: iris/Dockerfile
    ports:
      - 52774:52773
      - 51774:1972
    volumes:
    - ./shared:/shared
    environment:
    - ISC_DATA_DIRECTORY=/shared/durable
    command: --check-caps false --ISCAgent false
    mem_limit: 30G
    memswap_limit: 32G

Le fichier avec les codes ICD-10 est disponible dans le chemin du projet /shared/cie10/icd10.csv, une fois 100% atteint l'application sera prête à être utilisée.

Dans notre application, nous avons défini deux fonctionnalités différentes pour le codage de diagnostic, une basée sur les messages HL7 reçus dans le système et une autre basée sur des textes bruts.

Capture de diagnostic depuis HL7

Le projet contient quelques messages HL7 préparés pour les tests, il suffit de copier le fichier /shared/hl7/messagesa01_en.hl7 dans le dossier /shared/HL7In et le la production associée se chargera d'en extraire le diagnostic pour l'afficher dans l'application web :

d[IA]gnosis: developing RAG applications with IRIS for Healt

Depuis l'écran des demandes de diagnostic, nous pouvons voir tous les diagnostics reçus via la messagerie HL7. Pour les coder selon la CIM-10, il suffit de cliquer sur la loupe pour afficher une liste des codes CIM-10 les plus proches du diagnostic reçu :

d[IA]gnosis: developing RAG applications with IRIS for Healt

Une fois sélectionné, nous verrons le diagnostic et son code CIM-10 associé dans la liste. En cliquant sur le bouton avec l'icône enveloppe, un message sera généré en utilisant l'original et incluant le nouveau sélectionné dans le segment de diagnostic :

MSH|^~\&|HIS|HULP|EMPI||||ADT^A08|592956|P|2.5.1
EVN|A01|
PID|||1556655212^^^SERMAS^SN~922210^^^HULP^PI||GARCÍA PÉREZ^JUAN^^^||20150403|M|||PASEO PEDRO ÁLVAREZ 195 1 CENTRO^^LEGANÉS^MADRID^28379^SPAIN||555283055^PRN^^JUAN.GARCIA@YAHOO.COM|||||||||||||||||N|
PV1||N
DG1|1||O10.91^Unspecified pre-existing hypertension complicating pregnancy^CIE10-ES|Gestational hypertension||A||

Ce message se trouve dans le chemin /shared/HL7Out

Captures d'écran des diagnostics en clair

À partir de l'option Text Analyzer, l'utilisateur peut inclure du texte brut sur lequel un processus d'analyse sera effectué. L'application recherchera dans des tuples de 3 mots lemmatisés (en éliminant les articles, pronoms et autres mots moins pertinents). Une fois analysé, le système nous montrera le texte souligné pertinent et les diagnostics possibles localisés :

d[IA]gnosis: developing RAG applications with IRIS for Healt

Une fois l'analyse réalisée, elle peut être consultée à tout moment depuis l'historique des analyses.

Historique des analyses

Toutes les analyses effectuées sont enregistrées et peuvent être consultées à tout moment, permettant de visualiser tous les codes ICD-10 possibles disponibles :

Dans le prochain article...

Nous verrons comment, en utilisant Embedded Python, nous utilisons un modèle LLM spécifique pour la vectorisation à la fois des codes ICD-10 que nous utiliserons comme contexte et des textes libres.

Si vous avez des questions ou des suggestions, n'hésitez pas à écrire un commentaire sur l'article.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn