Analyser des données non structurées avec un moteur de requête universel
Une nouvelle façon d'analyser des données non structurées en utilisant des techniques de requête avancées.
― 9 min lire
Table des matières
- Le Problème des Données Non Structurées
- Aperçu de l'UQE
- Apprendre à Chercher
- Langage de Requête Universel (UQL)
- Structure de l'UQL
- Mise en Œuvre de l'UQE
- Exécution des Requêtes
- Méthodes d'Indexation
- Mise en Œuvre des Kernels
- Évaluation de la Performance de l'UQE
- Agrégation Conditionnelle
- Récupération sémantique
- Abstraction et Agrégation
- Conclusion
- Travaux Futurs
- Source originale
- Liens de référence
Analyser des données structurées, c'est un truc bien rodé avec plein de techniques efficaces. Mais en vrai, plein d'infos sont non structurées, comme des images et des conversations. Cet article montre comment les modèles de langage de grande taille (LLMs) peuvent aider à analyser ces données. On vous présente un nouveau moteur de requêtes universel (UQE) qui peut poser des questions directement et récolter des infos à partir de collections de Données non structurées. L'UQE utilise un langage de requête universel (UQL), un peu comme SQL, qui permet aux utilisateurs de formuler des conditions et des opérations en langage naturel.
L'UQE tire parti de la puissance des LLMs pour analyser les données non structurées tout en appliquant des techniques d'échantillonnage avancées et d'optimisation pour des performances de requêtes efficaces et précises. On adopte aussi quelques techniques de la théorie des compilateurs traditionnels pour améliorer le flux de travail entre les techniques d'échantillonnage et les appels de modèle.
Nos résultats montrent que l'UQE est efficace pour analyser différents types de données non structurées, comme des images, des conversations et des avis. Cette capacité peut aider à rassembler des infos utiles, soutenant des décisions plus intelligentes pour les entreprises et la société.
Le Problème des Données Non Structurées
Alors que les systèmes de gestion de données traditionnels utilisent des données structurées avec des schémas prédéfinis, la plupart des infos avec lesquelles on travaille sont non structurées. Ça inclut des formats variés comme du texte, des images, et de l'audio, qui ne s'organisent pas facilement dans des schémas prédéfinis. Les moteurs SQL classiques galèrent avec ces données non structurées parce qu'ils exigent souvent un prétraitement pour s'adapter à un format structuré. Le prétraitement peut être chiant et nécessite des formations supplémentaires sur des tâches spécifiques.
Ça soulève une question importante : comment peut-on analyser les données non structurées de manière plus flexible et efficace ?
Les moteurs de recherche en texte intégral peuvent gérer des recherches simples dans des données non structurées, mais ils sont nuls pour des requêtes plus complexes qui demandent un raisonnement sémantique plus profond. Des approches comme la génération augmentée par récupération (RAG) peuvent répondre à des questions basées sur des données pertinentes mais ne conviennent pas pour des tâches analytiques plus générales qui exigent de l'agrégation ou du raisonnement sur une grande base de données. Les avancées dans les LLMs ont montré qu'ils peuvent répondre à des questions de manière flexible. Pourtant, des défis persistent, surtout en ce qui concerne les coûts et l'efficacité quand ils sont ajustés pour des tâches spécifiques.
Des efforts récents ont tenté de combiner les LLMs avec des frameworks de programmation, permettant de déléguer le calcul aux interprètes. Cependant, ces méthodes peuvent coûter cher si elles nécessitent de scanner de grandes bases de données.
Pour relever ces défis, on propose l'UQE, qui combine les LLMs avec des stratégies d'échantillonnage avancées et d'optimisation pour créer un moteur de requêtes plus efficace pour les données non structurées.
Aperçu de l'UQE
L'UQE veut peaufiner notre façon d'analyser les données non structurées. En s'inspirant des moteurs SQL, on se concentre sur deux idées clés : construire des structures d'indexation pour éviter de scanner toute la base de données et utiliser un système de compilation pour déterminer le meilleur ordre d'exécution des opérations.
Apprendre à Chercher
Dans l'UQE, on considère le défi de requêter les données non structurées comme un problème d'apprentissage. On veut éviter de scanner toute la base de données en utilisant des techniques d'échantillonnage pour prendre des décisions statistiquement solides. En cadrant ça comme un problème de recherche, l'UQE peut récupérer efficacement les lignes pertinentes pour traitement.
Requêtes d'agrégation
Estimation Non Biaisée pour lesL'UQE peut effectuer des requêtes d'agrégation sans avoir besoin de scanner toutes les lignes d'une colonne virtuelle. En utilisant les LLMs pour classer si une ligne répond aux conditions spécifiées, on peut estimer des totaux sans scans complets. Différentes méthodes d'échantillonnage peuvent être utilisées pour minimiser à la fois le biais et la variance dans les estimations.
Apprentissage en Ligne pour les Requêtes Non-Agrégées
Pour les requêtes non-agrégées, l'UQE utilise une approche d'apprentissage en ligne. Chaque étape informe la suivante, équilibrant exploration et exploitation pour trouver les lignes pertinentes qui répondent aux conditions fixées par l'utilisateur. Cette méthode améliore le rappel tout en respectant les contraintes budgétaires.
Langage de Requête Universel (UQL)
Pour communiquer avec l'UQE, on a développé un nouveau langage de requête : l'UQL. Ce langage est basé sur SQL mais inclut des extensions pour supporter les requêtes non structurées et sur des colonnes virtuelles.
Structure de l'UQL
- SELECT spécifie ce qu'on veut sortir.
- FROM identifie la source des données.
- WHERE applique des filtres sur les lignes.
- GROUP BY permet de grouper les lignes basées sur des attributs communs.
Par exemple, une requête UQL pourrait ressembler à ça :
SELECT "le sentiment de la critique de film" AS sentiment
FROM critiques_de_films
WHERE "la critique est positive"
GROUP BY "la raison pour laquelle la critique est positive"
Ici, l'UQE interpréterait les composants en langage naturel pour récupérer les données pertinentes de la base de données.
Mise en Œuvre de l'UQE
Exécution des Requêtes
Exécuter l'UQL implique d'interpréter les requêtes d'une manière qui accélère l'accès aux données requises. Une approche simple serait d'utiliser des méthodes d'interprétation basiques. Cependant, pour de plus grands ensembles de données, ça peut causer des délais significatifs. Pour améliorer l'efficacité, on emploie deux techniques :
- Indexation organise les données d'une manière qui accélère les recherches.
- Compilation optimise les plans d'exécution des requêtes pour s'assurer qu'on suit le chemin le plus efficace pour obtenir les résultats.
Méthodes d'Indexation
Dans l'UQE, au lieu de l'indexation traditionnelle, on introduit une méthode proxy qui nous permet d'utiliser le contenu sémantique d'une colonne virtuelle. Cela nous permet d'exécuter des requêtes efficacement sans scanner l'ensemble de la base de données.
Mise en Œuvre des Kernels
Chaque kernel est une unité d'exécution autonome qui traite des tables, qu'elles soient structurées ou non. Les kernels gèrent diverses commandes UQL et optimisent leur fonctionnalité pour fournir des résultats rapidement.
Évaluation de la Performance de l'UQE
Pour montrer l'efficacité de l'UQE, on a créé des ensembles de données de benchmark comportant à la fois des données textuelles et des images sur diverses tâches analytiques. On a comparé la performance de l'UQE avec celle des méthodes existantes comme les LLMs à long contexte et les systèmes de récupération basés sur l'embedding.
Nos résultats ont confirmé que l'UQE améliore significativement à la fois la précision et le rapport coût-efficacité lors de l'analyse de données non structurées.
Agrégation Conditionnelle
Cette tâche implique de fournir des statistiques agrégées basées sur des conditions spécifiées. L'UQE a montré des erreurs relatives réduites tout en atteignant des coûts plus bas par rapport aux méthodes traditionnelles.
Récupération sémantique
Dans cette tâche, l'UQE localise les lignes qui satisfont aux conditions spécifiées. Les résultats ont montré que l'UQE performe toujours bien, surtout dans des scénarios difficiles où le nombre de lignes répondant aux conditions était petit.
Abstraction et Agrégation
Cette dernière tâche nécessite de résumer les données en regroupant des attributs similaires et en fournissant des statistiques sur ces groupes. L'UQE a surpassé les méthodes de base tout en maintenant des coûts bas.
Conclusion
L'UQE proposé est capable d'analyser efficacement des données non structurées en tirant parti des techniques avancées d'échantillonnage et d'apprentissage en ligne. Bien que notre travail actuel ait des limitations en termes de sémantique de requête plus complexes et d'évolution vers des ensembles de données plus grands, on voit un potentiel prometteur pour l'UQE d'améliorer l'analyse des données dans des contextes à la fois commerciaux et quotidiens.
Nos futurs efforts viseront à surmonter ces limitations, élargissant encore les capacités de l'UQE pour supporter une plus grande variété de requêtes et d'applications.
Travaux Futurs
Une exploration plus poussée de la sélection automatisée des LLMs et des stratégies d'échantillonnage améliorera la performance de l'UQE. On prévoit aussi d'améliorer la capacité de notre moteur de requêtes à gérer plus efficacement de plus grandes bases de données et à incorporer des sémantiques plus complexes dans l'UQL. Grâce à ces développements, on espère renforcer la position de l'UQE comme un outil puissant pour l'analyse des données non structurées.
Titre: UQE: A Query Engine for Unstructured Databases
Résumé: Analytics on structured data is a mature field with many successful methods. However, most real world data exists in unstructured form, such as images and conversations. We investigate the potential of Large Language Models (LLMs) to enable unstructured data analytics. In particular, we propose a new Universal Query Engine (UQE) that directly interrogates and draws insights from unstructured data collections. This engine accepts queries in a Universal Query Language (UQL), a dialect of SQL that provides full natural language flexibility in specifying conditions and operators. The new engine leverages the ability of LLMs to conduct analysis of unstructured data, while also allowing us to exploit advances in sampling and optimization techniques to achieve efficient and accurate query execution. In addition, we borrow techniques from classical compiler theory to better orchestrate the workflow between sampling methods and foundation model calls. We demonstrate the efficiency of UQE on data analytics across different modalities, including images, dialogs and reviews, across a range of useful query types, including conditional aggregation, semantic retrieval and abstraction aggregation.
Auteurs: Hanjun Dai, Bethany Yixin Wang, Xingchen Wan, Bo Dai, Sherry Yang, Azade Nova, Pengcheng Yin, Phitchaya Mangpo Phothilimthana, Charles Sutton, Dale Schuurmans
Dernière mise à jour: 2024-11-16 00:00:00
Langue: English
Source URL: https://arxiv.org/abs/2407.09522
Source PDF: https://arxiv.org/pdf/2407.09522
Licence: https://creativecommons.org/licenses/by/4.0/
Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.
Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.
Liens de référence
- https://github.com/voyage-ai/voyageai-python
- https://api.semanticscholar.org/CorpusID:5276660
- https://api.semanticscholar.org/CorpusID:212814759
- https://api.semanticscholar.org/CorpusID:261276437
- https://api.semanticscholar.org/CorpusID:159041042
- https://www.aclweb.org/anthology/P11-1015
- https://api.semanticscholar.org/CorpusID:6715185
- https://api.semanticscholar.org/CorpusID:258291425
- https://api.semanticscholar.org/CorpusID:237491759
- https://cloud.google.com/vertex-ai/generative-ai/docs/embeddings/get-multimodal-embeddings
- https://api.semanticscholar.org/CorpusID:6715526
- https://api.semanticscholar.org/CorpusID:218674345
- https://api.semanticscholar.org/CorpusID:52979524
- https://api.semanticscholar.org/CorpusID:52815560
- https://github.com/facebookresearch/faiss