Le texte en tant que données, de n’importe où vers n’importe où
Introduction
En mars 2024, nous avons entendu AJ Steers lors du Unstructured Data Meetup de SF expliquer comment nous pouvons utiliser Airbyte et PyAirbyte pour utiliser le texte comme des données, de n’importe où vers n’importe où. Cela signifie que nous pouvons intégrer et utiliser à la fois des données structurées et non structurées provenant de diverses sources sur différentes plateformes.
Lien vers la rediffusion YouTube de la présentation d’AJ Steers : Regarder sur YouTube.
Qui est AJ Steers et pourquoi l’intégration unifiée des données devrait-elle vous intéresser ?
AJ Steers est un architecte expérimenté, ingénieur data, développeur logiciel et expert en opérations data. Il a conçu des solutions de bout en bout chez Amazon et créé une vision pour des modèles de données de soi quantifié. À l’heure actuelle, il est ingénieur logiciel staff chez Airbyte.
L’intégration unifiée des données fusionne divers types et sources de données dans un système unique et cohérent pour une analyse et un traitement efficaces. Cette capacité est cruciale pour exploiter tout le potentiel de vos données, en garantissant un accès et une utilisation fluides sur diverses plateformes et applications. Comme le dit AJ, « Plus que jamais, nous sommes entourés de données utilisables » et désormais tout est question de coût d’opportunité. De combien de temps disposons-nous pour obtenir, depuis la source, des données que nous pensons pouvoir être précieuses ?
Sur ce, plongeons dans la présentation d’AJ sur « Le texte comme données, de n’importe où vers n’importe où » avec Airbyte.
L’expansion par Airbyte des sources et destinations prises en charge
Jusqu’à présent, Airbyte s’est concentré sur l’offre de fiabilité, d’options de déploiement flexibles et d’une bibliothèque robuste de connecteurs afin d’assurer une intégration fluide des données pour les données tabulaires traditionnelles. Mais qu’en est-il des données non structurées ? AJ parle de ce à quoi l’équipe Airbyte s’est consacrée ces six derniers mois.
Au cours des six derniers mois, en remontant depuis mars 2024, Airbyte a étendu ses capacités pour couvrir les sources de données non structurées en plus des sources de données tabulaires traditionnelles. Cela est dû à l’importance et à la prévalence croissantes des données non structurées dans l’écosystème actuel des données. Cette expansion a vu Airbyte aller au-delà des destinations de type SQL et de type fichier pour couvrir des destinations de bases de données vectorielles comme Milvus, garantissant que nous pouvons utiliser efficacement les données dans diverses applications. Jetons un œil à certains des connecteurs pris en charge par Airbyte pour les sources de données structurées comme non structurées.
Airbyte prend en charge plus de 350 connecteurs, nous ne pouvons donc pas tous les lister. Mais la diapositive ci-dessus partagée par AJ montre des exemples de connecteurs pour chaque catégorie de source et de destination. Jusqu’à présent, nous avons parlé des données non structurées et de la manière dont Airbyte se développe pour les prendre en charge. Mais quels sont des exemples concrets de ces données ?
Pensez à ce blog que vous êtes en train de lire : est-il organisé sous forme tabulaire ? C’est un excellent exemple de données non structurées, composées de texte qui ne s’insère pas proprement dans des lignes et des colonnes. Les données non structurées désignent des informations qui ne résident pas dans une base de données traditionnelle en lignes et colonnes. Elles incluent des données comme du texte, des images, des vidéos et des publications sur les réseaux sociaux. Examinons certaines des données non structurées partagées par AJ dans la diapositive ci-dessous.
Avec ce type de données et l’aide d’Airbyte pour les consommer, différentes communautés ont des attentes différentes envers Airbyte.
Développeurs GenAl : Veulent des intégrations simplifiées avec d’autres outils et paradigmes de l’écosystème.
Data scientists : Veulent des bibliothèques pouvant s’exécuter dans un notebook Jupyter, découplées d’un entrepôt de données central.
Data engineers : Veulent une approche pipelines-as-code, la capacité d’exécuter des pipelines de test CI et un développement sans friction.
Développeurs : Vous souhaitez créer et itérer localement, puis déployer plus tard.
Cela montre que nous voulons tous d’excellentes bibliothèques, une bonne interopérabilité et davantage de contrôle. Mais tout dépend de ce que vous voulez. Certains d’entre nous veulent quelque chose pour lequel ils peuvent coder et qu’ils peuvent contrôler, tandis que d’autres préfèrent être moins techniques et utiliser une interface utilisateur. Traditionnellement, cela nous a conduits vers des chemins complètement différents. Airbyte essaie de briser ces barrières pour toute personne capable d’exécuter et d’écrire du code Python ou pour toute personne capable de simplement copier-coller quelques lignes de code avec PyAirbyte. Voyons ce qu’est PyAibyte et ses avantages.
Présentation de PyAirbyte
PyAirbyte est une bibliothèque Python qui fournit une interface pour interagir avec Airbyte. Elle nous permet de contrôler et de gérer nos instances Airbyte à l’aide de Python. Voyez-la comme une manière d’apporter la puissance d’Airbyte à chaque développeur Python.
Avantages de PyAirbyte
- Exécutable partout : Nous pouvons exécuter PyAirbyte dans un notebook Jupyter, indépendamment de tout entrepôt de données. Cela signifie que nous pouvons l’utiliser dans de nombreux environnements, pas seulement ceux liés à un entrepôt de données spécifique, ce qui nous donne la flexibilité de travailler dans l’environnement qui répond le mieux à nos besoins.
- Réduire le délai de valorisation : Avec PyAirbyte, nous pouvons créer et itérer sur des pipelines de données localement avant de les déployer. Cela nous permet de tester et d’affiner nos pipelines pour nous assurer qu’ils fonctionnent comme prévu, ce qui aide à réduire le temps nécessaire pour obtenir des informations précieuses à partir des données.
- Prototypage rapide : PyAirbyte ne nécessite pas d’interface utilisateur ni d’inscriptions, nous pouvons donc commencer à définir nos pipelines de données dans le code immédiatement. Cela accélère le processus de prototypage.
- Flexible : Nous pouvons utiliser PyAirbyte avec les outils et frameworks de notre écosystème. Cela signifie que nous pouvons l’intégrer aux autres outils que nous utilisons déjà, ce qui facilite son incorporation dans nos workflows et processus existants.
Maintenant, voyons comment vous pouvez commencer avec Airbyte et PyAirbyte en quelques étapes seulement.
Démonstrations UI et code
AJ explore une session de démonstration montrant comment nous pouvons utiliser la version hébergée d’Airbyte (approche sans code) et PyAirbyte (approche avec un minimum de code) pour intégrer nos sources de données à nos destinations de données.
Démonstration de l’approche UI
Pour ceux qui aiment cliquer sur des boutons plus que taper du code, l’approche UI est un rêve devenu réalité. C’est comme le « mode facile » dans votre jeu vidéo préféré. Nous resterons brefs, car nous avons déjà expliqué en détail comment utiliser la version hébergée d’Airbyte pour connecter une source de données et une destination. L’article lié va au-delà de la partie intégration et nous montre comment créer une application concrète en utilisant la connexion établie.
Il y a quatre étapes principales dans l’utilisation de l’approche sans code pour connecter une source de données à une destination de données.
Inscrivez-vous ou connectez-vous à votre compte Airbyte. Lorsque vous vous inscrivez, vous bénéficiez d’un essai de 14 jours.
Configurez la source de données.
Configurez la destination des données.
Créez une connexion entre la source et la destination.
Lorsque la connexion est établie, vous êtes prêt à utiliser vos données. Si vous êtes un passionné de code comme moi et que vous préférez l’approche par le code, PyAirbyte est là pour vous.
Démonstration de l’approche par le code
Récupération de données avec PyAirbyte en trois étapes
Le processus de récupération de données avec PyAirbyte est assez simple.
Étape 1 :
Créez une source à l’aide de la fonction get_source().
import airbyte as ab
# Check for supported sources
print(ab.get_available_connectors())
# Create the data source we want
source = ab.get_source("source-github")
Pour avoir un aperçu visuel de tous les connecteurs pris en charge par Airbyte, consultez la page des connecteurs pris en charge. Mais que faire si le connecteur de votre source n’est pas pris en charge ? Vous devez alors créer votre propre connecteur personnalisé. Ne vous inquiétez pas, ce n’est pas aussi difficile que cela en a l’air. Il vous suffit de suivre ce guide, car Airbyte propose un générateur de connecteurs sans code qui nous permet de créer des connecteurs en moins de 10 minutes.
Étape 2 :
Configurez notre source avec set_config().
source.set_config(
{
# Replace with your desired repository
"repositories": ["FINCH285/engineering-education"],
"credentials": {
"personal_access_token": ab.get_secret(
"GITHUB_PERSONAL_ACCESS_TOKEN"
)
}
}
)
# Validate the config and credentials
source.check()
Il s’agit simplement d’indiquer où, dans la source, nous voulons récupérer les données, ainsi que les identifiants d’autorisation requis.
Étape 3 :
Lisez les données à l’aide de la read() function.
# See what streams are avilable from the source
print(source.get_available_streams())
#Pull data rom the steams we choose
read_result = source.read(
streams=['branches', 'collaborators']
)
# Use the interop option
branches_dataframe = read_result["branches"].to_pandas()
branches_sql_table = read_result["branches"].to_sql_table()
branches_lln_docs = read_result["branches"].to_documents()
L’option d’interopérabilité nous permet de convertir les données récupérées en différentes structures de données qui correspondent le mieux à notre cas d’utilisation. Cela termine le processus en trois étapes. Toutefois, il n’est pas obligatoire de suivre les trois étapes indépendamment pour récupérer des données. Airbyte prend en charge un processus en une seule étape pour obtenir le même résultat.
Récupération des données avec PyAirbyte en une seule étape
Voici la version speedrun. Elle consiste à combiner les trois étapes en une seule.
import airbyte as ab
source = ab.get_source(
"source-github",
config={
# Replace with your desired repository
"repositories": ["FINCH285/engineering-education"],
"credentials": {
"personal_access_token": ab.get_secret(
"GITHUB_PERSONAL_ACCESS_TOKEN"
),
},
},
streams=['branches', 'collaborators']
).read()
Le code effectue les trois opérations en une seule étape. Il crée la source, la configure, puis lit enfin les données. Vous pouvez maintenant utiliser l’option d’interopérabilité pour convertir les données récupérées en différentes structures de données, comme nous l’avons fait précédemment. Mais si vous souhaitez générer des documents LLM à partir de données tabulaires, la section suivante vous montre comment procéder.
Génération de documents LLM à partir de données tabulaires
Si vous voulez que vos données soient compatibles avec LangChain, vous devez les convertir en documents LLM. Vous pouvez ensuite utiliser ces documents pour diverses tâches de traitement du langage naturel, telles que les questions-réponses, le résumé ou la génération de texte.
import rich
from itertools import islice
dataset = source_github.get_documents(
"issues",
title_property="title",
content_properties=["body"],
)
# Grab a few documents (skipping first 2)
documents = list(islice(dataset, 2, 5))
# Print as markdown
for document in documents:
display(rich.markdown.Markdown(document.content))
Le code récupérera les issues GitHub et les affichera sous forme de documents. Il définira ensuite le titre du document sur le titre de l’issue, et le contenu du document sera défini sur le body de l’issue. Il utilisera ensuite rich pour imprimer les documents au format markdown dans la console.
Avec deux choix disponibles, voyons quelle approche vous convient le mieux.
Choisir entre Airbyte et PyAirbyte
Si vous voulez l’approche sans code vers les vector stores, optez pour la version hébergée. Si vous voulez un contrôle total avec un minimum de code, optez pour PyAirbyte. AJ affirme qu’en théorie, partout où Python s’exécute avec le support d’un environnement virtuel, PyAirbyte peut s’exécuter. J’ai préparé un tableau pour vous aider à décider quelle approche vous convient.
| Critères | Airbyte (UI/Hébergé) | PyAirbyte |
| Approche | Sans code | Code/Python |
| Configuration | Processus d’inscription simple | Nécessite des compétences en codage Python |
| Interface utilisateur | Fournit une interface conviviale | Pas d’interface utilisateur, basé sur le code |
| Intégration des données | Adapté aux tâches d’intégration de données traditionnelles et modernes (données non structurées, bases de données vectorielles, etc.) | Adapté aux tâches d’intégration de données traditionnelles et modernes (données non structurées, bases de données vectorielles, etc.) |
| Flexibilité | Limité aux options fournies dans l’UI | Très flexible, peut être intégré à d’autres outils et frameworks Python |
| Environnement | Environnement hébergé | Peut s’exécuter dans n’importe quel environnement Python (p. ex., Jupyter Notebook, machine locale) |
| Déploiement | Déploie les pipelines de données dans l’environnement hébergé d’Airbyte | Le déploiement basé sur le code peut être intégré aux pipelines CI/CD |
| Prototypage | Adapté aux utilisateurs non techniques ou au prototypage rapide | Idéal pour les utilisateurs techniques et le prototypage rapide |
| Courbe d’apprentissage | Courbe d’apprentissage plus faible | Nécessite des compétences en codage Python ou des compétences de base en codage |
Après la comparaison, vous pouvez continuer à choisir votre propre aventure.
Fonctionnalités à venir de PyAirbyte
PyAirbyte est encore en phase bêta. Par conséquent, à ce jour, il ne prend pas en charge les destinations complètes, ce qui signifie qu’il n’a pas de vector stores comme destinations, mais nous pouvons les transmettre à LangChain. Aj partage quelques attentes que nous devrions avoir de l’équipe PyAirbyte cette année : Quelle est la suite pour PyAirbyte ?
Plans pour le T2 2024 :
Améliorer la prise en charge de Python 3.9 et 3.11
Ajouter la prise en charge de Windows
Améliorer l’API pour configurer les sources
Permettre l’interopérabilité avec Airbyte Cloud, OSS et les versions Enterprise
Plans pour le S2 2024 :
Ajouter la prise en charge du Reverse ETL
Ajouter la prise en charge des destinations Vector Store
Ajouter la prise en charge des destinations de type Publish
Si vous souhaitez donner votre avis et signaler des bugs, envisagez d’ouvrir une issue sur la page GitHub de PyAirbyte.
Conclusion
Que vous préfériez une approche no-code ou minimal-code, Airbyte et PyAirbyte offrent des solutions robustes pour intégrer des données structurées comme non structurées. AJ Steers a brossé un bon tableau du potentiel de ces outils pour révolutionner les workflows de données. Pour plus d’informations, consultez les ressources ci-dessous et commencez votre parcours pour exploiter le texte comme donnée, de n’importe où vers n’importe où.
Ressources complémentaires
https://zilliz.com/blog/use-milvus-and-airbyte-for-similarity-search-on-all-your-data
https://zilliz.com/blog/zilliz-introduces-upsert-kafka-connector-and-airbyte-integration
https://github.com/airbytehq/quickstarts/tree/main/pyairbyte_notebooks
Lien vers le replay YouTube de la présentation d’AJ Steer : Regarder la présentation sur YouTube.
Continuer à lire

Introducing Zilliz Cloud Global Cluster: Region-Level Resilience for Mission-Critical AI
Zilliz Cloud Global Cluster delivers multi-region resilience, automatic failover, and fast global AI search with built-in security and compliance.

Expanding Our Global Reach: Zilliz Cloud Launches in Azure Central India
Zilliz Cloud expands to Azure Central India. This new region helps customers meet compliance, reduce latency, and optimize cloud costs when building AI applications.

What Exactly Are AI Agents? Why OpenAI and LangChain Are Fighting Over Their Definition?
AI agents are software programs powered by AI that can perceive their environment, make decisions, and take actions to achieve a goal—often autonomously.


