La génération augmentée (RAG) de la récupération est devenue de plus en plus populaire afin d'améliorer la qualité du texte généré par de grands modèles de langue. Maintenant que les LLM multimodales sont en vege, il est temps d'étendre le chiffon aux données multimodales.
Lorsque nous ajoutons la possibilité de rechercher et de récupérer des données sur plusieurs modalités, nous obtenons un outil puissant pour interagir avec les modèles d'IA les plus puissants disponibles aujourd'hui. Cependant, nous ajoutons également de nouvelles couches de complexité au processus.
Certaines des considérations dont nous devons prendre en compte comprennent:
À un niveau plus pratique, voici quelques-uns des boutons de base que nous pouvons tourner:
Ce projet est un banc d'essai pour explorer ces questions et plus encore. Il utilise trois bibliothèques open source, FiftyOn, Llamaindex et Milvus, pour faire le processus de travail avec des données multimodales, expérimenter différentes techniques de chiffon multimodales et trouver ce qui fonctionne le mieux pour votre cas d'utilisation aussi simple que possible.
Notez également que Llamaindex met souvent à jour son API. C'est pourquoi la version de Llamaindex et ses packages associés sont tous épinglés?
Tout d'abord, installez FiftyOne:
pip install fiftyoneEnsuite, en utilisant la syntaxe CLI de FiftyOne, téléchargez et installez le plugin de chiffon multimodal FiftyOn:
fiftyone plugins download https://github.com/jacobmarks/fiftyone-multimodal-rag-pluginLlamaindex a un processus d'installation verbeux (si vous souhaitez créer quelque chose de multimodal au moins). Heureusement pour vous, cela (et toutes les autres dépendances d'installation) seront pris en charge avec la commande suivante:
fiftyone plugins requirements @jacobmarks/multimodal_rag --installPour commencer, lancez l'application FiftyOne. Vous pouvez le faire à partir du terminal en fonctionnant:
fiftyone app launchOu vous pouvez exécuter le code Python suivant:
import fiftyone as fo
session = fo . launch_app () Maintenant, appuyez sur la touche BackTick ( ` ) et tapez create_dataset_from_llama_documents . Appuyez Enter pour ouvrir le modal de l'opérateur. Cet opérateur vous donne une interface utilisateur pour choisir un répertoire contenant vos données multimodales (images, fichiers texte, PDF, etc.) et créer un ensemble de données de cinquante ans à partir de celui-ci.
Une fois que vous avez sélectionné un répertoire, exécutez l'opérateur. Il créera un nouvel ensemble de données dans votre session FiftyOne. Pour les fichiers texte, vous verrez un rendu d'image du texte tronqué. Pour les images, vous verrez l'image elle-même.
Vous pouvez ajouter des répertoires supplémentaires de données multimodales avec l'opérateur add_llama_documents_to_dataset .
Maintenant que vous avez un ensemble de données multimodal, vous pouvez l'indexer avec Llamaindex et Milvus. Utilisez l'opérateur create_multimodal_rag_index pour entrer ce processus. Cet opérateur vous invitera à nommer l'index et vous donnera la possibilité d'indexer les images via des incorporations ou des légendes de clip. Si vous choisissez des légendes, vous serez invité à sélectionner le champ de texte à utiliser comme légende.
Si vous n'avez pas de légendes sur votre ensemble de données, vous pourriez être intéressé par le plugin de sous-titrage d'image FiftyOne.
fiftyone plugins download https://github.com/jacobmarks/fiftyone-image-captioning-plugin Une fois que vous avez créé un index, vous pouvez l'inspecter en exécutant l'opérateur get_multimodal_rag_index_info et en sélectionnant l'index que vous souhaitez inspecter dans la liste déroulante.
Enfin, vous pouvez interroger l'index avec l'opérateur query_multimodal_rag_index . Cet opérateur vous invitera à saisir une chaîne de requête et un index de la question.
Vous pouvez également spécifier le modèle multimodal à utiliser pour générer les résultats de la récupération, ainsi que le nombre de résultats d'image et de texte à récupérer.