Text als Daten, von überall nach überall
Einführung
Im März 2024 hörten wir von AJ Steers beim SF Unstructured Data Meetup, wie wir Airbyte und PyAirbyte nutzen können, um Text als Daten zu verwenden, von überall nach überall. Das bedeutet, dass wir sowohl strukturierte als auch unstrukturierte Daten aus verschiedenen Quellen über unterschiedliche Plattformen hinweg integrieren und nutzen können.
Link zur YouTube-Aufzeichnung des Vortrags von AJ Steers: Auf YouTube ansehen.
Wer ist AJ Steers und warum sollte Ihnen einheitliche Datenintegration wichtig sein?
AJ Steers ist ein erfahrener Architekt, Data Engineer, Softwareentwickler und Data-Ops-Experte. Er hat End-to-End-Lösungen bei Amazon entworfen und eine Vision für quantifizierte Self-Data-Modelle entwickelt. Derzeit ist er Staff Software Engineer bei Airbyte.
Einheitliche Datenintegration führt unterschiedliche Datentypen und Quellen zu einem einzigen, kohärenten System für effiziente Analyse und Verarbeitung zusammen. Diese Fähigkeit ist entscheidend, um das volle Potenzial Ihrer Daten auszuschöpfen und einen nahtlosen Zugriff sowie eine nahtlose Nutzung über verschiedene Plattformen und Anwendungen hinweg sicherzustellen. Wie AJ es ausdrückt: „Mehr denn je sind wir von nutzbaren Daten umgeben“, und jetzt dreht sich alles um Opportunitätskosten. Wie viel Zeit haben wir, um Daten aus der Quelle zu gewinnen, von denen wir glauben, dass sie wertvoll sein können?
Damit tauchen wir in AJs Vortrag über „Text als Daten, von überall nach überall“ mit Airbyte ein.
Airbytes Erweiterung der unterstützten Quellen und Ziele
Airbytes Fokus lag bisher darauf, Zuverlässigkeit, flexible Bereitstellungsoptionen und eine robuste Bibliothek von Konnektoren anzubieten, um eine nahtlose Datenintegration für traditionelle tabellarische Daten sicherzustellen. Aber was ist mit unstrukturierten Daten? AJ spricht darüber, woran das Airbyte-Team in den vergangenen sechs Monaten gearbeitet hat.
In den vergangenen sechs Monaten, von März 2024 rückblickend, hat Airbyte seine Fähigkeiten erweitert, um neben traditionellen tabellarischen Datenquellen auch Quellen für unstrukturierte Daten abzudecken. Dies ist auf die wachsende Bedeutung und Verbreitung unstrukturierter Daten im heutigen Datenökosystem zurückzuführen. Durch diese Erweiterung geht Airbyte über SQL-artige und dateiartige Ziele hinaus und deckt Vektordatenbank-Ziele wie Milvus ab, wodurch sichergestellt wird, dass wir Daten über verschiedene Anwendungen hinweg effektiv nutzen können. Werfen wir einen Blick auf einige der von Airbyte unterstützten Konnektoren für strukturierte und unstrukturierte Datenquellen.
Airbyte unterstützt mehr als 350 Konnektoren, daher können wir sie nicht alle auflisten. Die obige Folie, die AJ geteilt hat, zeigt jedoch Beispielkonnektoren für jede Quellen- und Zielkategorie. Bisher haben wir über unstrukturierte Daten gesprochen und darüber, wie Airbyte seine Unterstützung dafür ausbaut. Aber was sind reale Beispiele für diese Daten?
Denken Sie an diesen Blog, den Sie gerade lesen: Ist er in tabellarischer Form angeordnet? Er ist ein Paradebeispiel für unstrukturierte Daten, bestehend aus Text, der nicht sauber in Zeilen und Spalten passt. Unstrukturierte Daten beziehen sich auf Informationen, die sich nicht in einer traditionellen Zeilen-Spalten-Datenbank befinden. Dazu gehören Daten wie Text, Bilder, Videos und Social-Media-Beiträge. Werfen wir einen Blick auf einige der unstrukturierten Daten, die AJ in der Folie unten geteilt hat.
Mit dieser Art von Daten und Airbytes Unterstützung bei deren Nutzung haben verschiedene Communities unterschiedliche Erwartungen an Airbyte.
GenAl-Entwickler: Wollen optimierte Integrationen mit anderen Ökosystem-Tools und Paradigmen.
Data Scientists: Wollen Bibliotheken, die in einem Jupyter Notebook ausgeführt werden können, entkoppelt von einem zentralen Data Warehouse.
Data Engineers: Wollen einen Pipelines-as-Code-Ansatz, die Möglichkeit, CI-Test-Pipelines auszuführen, und reibungsfreie Entwicklung.
Entwickler: Möchten lokal entwickeln und iterieren und später bereitstellen.
Das zeigt, dass wir alle großartige Bibliotheken, gute Interoperabilität und mehr Kontrolle wollen. Aber letztlich kommt es darauf an, was du möchtest. Einige von uns wollen etwas, für das sie programmieren und das sie kontrollieren können, während andere es lieber weniger technisch mögen und eine Benutzeroberfläche verwenden. Traditionell hat uns das auf völlig unterschiedliche Wege geführt. Airbyte versucht, diese Barrieren für alle abzubauen, die Python-Code ausführen und schreiben können, oder für alle, die mit PyAirbyte einfach ein paar Codezeilen kopieren und einfügen können. Schauen wir uns an, was PyAibyte ist und welche Vorteile es bietet.
Einführung in PyAirbyte
PyAirbyte ist eine Python-Bibliothek, die eine Schnittstelle zur Interaktion mit Airbyte bereitstellt. Sie ermöglicht es uns, unsere Airbyte-Instanzen mit Python zu steuern und zu verwalten. Stell es dir so vor, als würde die Leistungsfähigkeit von Airbyte jedem Python-Entwickler zugänglich gemacht.
Vorteile von PyAirbyte
- Überall ausführbar: Wir können PyAirbyte in einem Jupyter-Notebook ausführen, entkoppelt von jedem Data Warehouse. Das bedeutet, dass wir es in vielen Umgebungen verwenden können, nicht nur in solchen, die an ein bestimmtes Data Warehouse gebunden sind, was uns die Flexibilität gibt, in der Umgebung zu arbeiten, die am besten zu unseren Anforderungen passt.
- Time-to-Value reduzieren: Mit PyAirbyte können wir Datenpipelines lokal erstellen und iterieren, bevor wir sie bereitstellen. Dadurch können wir unsere Pipelines testen und verfeinern, um sicherzustellen, dass sie wie erwartet funktionieren, was dazu beiträgt, die Zeit zu verkürzen, bis wertvolle Erkenntnisse aus den Daten gewonnen werden.
- Schnelles Prototyping: PyAirbyte erfordert keine Benutzeroberfläche oder Registrierungen, sodass wir sofort damit beginnen können, unsere Datenpipelines im Code zu definieren. Das beschleunigt den Prototyping-Prozess.
- Flexibel: Wir können PyAirbyte mit den Tools und Frameworks in unserem Ökosystem verwenden. Das bedeutet, dass wir es in die anderen Tools integrieren können, die wir bereits nutzen, wodurch es einfacher wird, es in unsere bestehenden Workflows und Prozesse einzubinden.
Tauchen wir nun ein, wie du in nur wenigen Schritten mit Airbyte und PyAirbyte loslegen kannst.
UI- und Code-Demos
AJ steigt in eine Demo-Session ein und zeigt, wie wir die gehostete Version von Airbyte (No-Code-Ansatz) und PyAirbyte (Minimal-Code-Ansatz) verwenden können, um unsere Datenquellen mit unseren Datenzielen zu integrieren.
Demo des UI-Ansatzes
Für alle, die lieber auf Buttons klicken als Code zu tippen, ist der UI-Ansatz ein wahr gewordener Traum. Es ist wie der „Easy Mode“ in deinem Lieblingsvideospiel. Wir halten uns hier kurz, da wir bereits ausführlich behandelt haben, wie man die gehostete Version von Airbyte verwendet, um eine Datenquelle und ein Datenziel zu verbinden. Der verlinkte Artikel geht über den Integrationsteil hinaus und zeigt uns, wie man mit der hergestellten Verbindung eine reale App erstellt.
Es gibt vier Hauptschritte bei der Verwendung des No-Code-Ansatzes, um eine Datenquelle mit einem Datenziel zu verbinden.
Registriere dich oder melde dich bei deinem Airbyte-Konto an. Wenn du dich registrierst, erhältst du eine 14-tägige Testversion.
Konfiguriere die Datenquelle.
Konfiguriere das Datenziel.
Erstelle eine Verbindung zwischen Quelle und Ziel.
Wenn die Verbindung hergestellt ist, kannst du deine Daten verwenden. Wenn du wie ich ein Code-Geek bist und den Code-Ansatz bevorzugst, ist PyAirbyte genau das Richtige für dich.
Demo des Code-Ansatzes
Daten mit PyAirbyte in drei Schritten abrufen
Der Prozess zum Abrufen von Daten mit PyAirbyte ist recht einfach.
Schritt 1:
Erstelle eine source mit der Funktion 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")
Um einen visuellen Überblick über alle von Airbyte unterstützten Konnektoren zu erhalten, sieh dir die Seite mit den unterstützten Konnektoren an. Aber was ist, wenn der Konnektor deiner Quelle nicht unterstützt wird? Dann musst du deinen eigenen benutzerdefinierten Konnektor erstellen. Keine Sorge, es ist nicht so schwierig, wie es klingt. Du musst nur dieser Anleitung folgen, da Airbyte einen No-Code-Connector-Builder bietet, mit dem wir Konnektoren in weniger als 10 Minuten erstellen können.
Schritt 2:
Konfiguriere unsere Quelle mit 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()
Hier wird lediglich übergeben, wo in der Quelle wir die Daten abrufen möchten, sowie die erforderlichen Autorisierungsdaten.
Schritt 3:
Lies die Daten mit der 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()
Die Interop-Option ermöglicht es uns, die abgerufenen Daten in verschiedene Datenstrukturen zu konvertieren, die am besten zu unserem Anwendungsfall passen. Damit ist der dreistufige Prozess abgeschlossen. Es ist jedoch nicht zwingend erforderlich, die drei Schritte unabhängig voneinander auszuführen, um Daten abzurufen. Airbyte unterstützt einen einstufigen Prozess, um dasselbe zu erreichen.
Daten mit PyAirbyte in einem einzigen Schritt abrufen
Dies ist die Speedrun-Version. Dabei werden alle drei Schritte zu einem einzigen Schritt kombiniert.
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()
Der Code führt alle drei Vorgänge in einem einzigen Schritt aus. Er erstellt die Quelle, konfiguriert sie und liest schließlich die Daten. Du kannst nun die Interop-Option verwenden, um die abgerufenen Daten in verschiedene Datenstrukturen zu konvertieren, wie wir es zuvor getan haben. Wenn du jedoch LLM-Dokumente aus tabellarischen Daten generieren möchtest, zeigt dir der nächste Abschnitt, wie das geht.
LLM-Dokumente aus tabellarischen Daten generieren
Wenn du möchtest, dass deine Daten mit LangChain kompatibel sind, musst du sie in LLM-Dokumente konvertieren. Du kannst diese Dokumente dann für verschiedene Aufgaben der Verarbeitung natürlicher Sprache verwenden, z. B. Frage-Antwort-Systeme, Zusammenfassungen oder Textgenerierung.
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))
Der Code ruft die GitHub-Issues ab und rendert sie als Dokumente. Anschließend setzt er den Titel des Dokuments auf den Titel des issue, und der Inhalt des Dokuments wird auf den body des Issues gesetzt. Danach verwendet er rich, um die Dokumente im Markdown-Format in der Konsole auszugeben.
Da zwei Optionen verfügbar sind, sehen wir uns an, welcher Ansatz am besten zu dir passt.
Wahl zwischen Airbyte und PyAirbyte
Wenn du den Zero-Code-Ansatz für Vector Stores möchtest, entscheide dich für die gehostete Version. Wenn du volle Kontrolle mit minimalem Code möchtest, entscheide dich für PyAirbyte. AJ behauptet, dass PyAirbyte theoretisch überall dort laufen kann, wo Python von einer virtuellen Umgebung unterstützt wird. Ich habe eine Tabelle zusammengestellt, um dir bei der Entscheidung zu helfen, welcher Ansatz zu dir passt.
| Kriterien | Airbyte (UI/Hosted) | PyAirbyte |
| Ansatz | No-Code | Code/Python |
| Einrichtung | Einfacher Registrierungsprozess | Erfordert Python-Programmierkenntnisse |
| Benutzeroberfläche | Bietet eine benutzerfreundliche Oberfläche | Keine Benutzeroberfläche, codebasiert |
| Datenintegration | Geeignet sowohl für traditionelle als auch moderne Datenintegrationsaufgaben (unstrukturierte Daten, Vektordatenbanken usw.) | Geeignet sowohl für traditionelle als auch moderne Datenintegrationsaufgaben (unstrukturierte Daten, Vektordatenbanken usw.) |
| Flexibilität | Auf die in der UI bereitgestellten Optionen beschränkt | Sehr flexibel, kann mit anderen Python-Tools und Frameworks integriert werden |
| Umgebung | Gehostete Umgebung | Kann in jeder Python-Umgebung laufen (z. B. Jupyter Notebook, lokale Maschine) |
| Bereitstellung | Stellt Datenpipelines in Airbytes gehosteter Umgebung bereit | Codebasierte Bereitstellung kann in CI/CD-Pipelines integriert werden |
| Prototyping | Geeignet für nicht-technische Benutzer oder schnelles Prototyping | Ideal für technische Benutzer und schnelles Prototyping |
| Lernkurve | Geringere Lernkurve | Erfordert Python-Programmierkenntnisse oder grundlegende Programmierkenntnisse |
Nach dem Vergleich kannst du weiterhin dein eigenes Abenteuer wählen.
PyAirbytes kommende Funktionen
PyAirbyte befindet sich noch in der Beta-Phase. Daher unterstützt es derzeit keine vollständigen Destinations, was bedeutet, dass es keine Vector Stores als Destinations hat, aber wir können sie an LangChain weiterreichen. Aj teilt ein paar Erwartungen, die wir dieses Jahr an das PyAirbyte-Team haben sollten: Was kommt als Nächstes für PyAirbyte?
Pläne für Q2 2024:
Unterstützung für Python 3.9 und 3.11 verbessern
Windows-Unterstützung hinzufügen
API zur Konfiguration von Sources verbessern
Interoperabilität mit Airbyte Cloud, OSS und Enterprise-Versionen ermöglichen
Pläne für H2 2024:
Unterstützung für Reverse ETL hinzufügen
Unterstützung für Vector-Store-Destinations hinzufügen
Unterstützung für Publish-type-Destinations hinzufügen
Wenn Sie Feedback geben und Bugs melden möchten, ziehen Sie in Betracht, ein Issue auf PyAirbyte’s GitHub-Seite zu eröffnen.
Fazit
Ob Sie einen No-Code- oder Minimal-Code-Ansatz bevorzugen, Airbyte und PyAirbyte bieten robuste Lösungen für die Integration sowohl strukturierter als auch unstrukturierter Daten. AJ Steers hat ein gutes Bild vom Potenzial dieser Tools gezeichnet, Daten-Workflows zu revolutionieren. Weitere Informationen finden Sie in den untenstehenden Ressourcen, und beginnen Sie Ihre Reise, Text als Daten zu nutzen, von überall nach überall.
Weitere Ressourcen
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
Link zur YouTube-Aufzeichnung von AJ Steers Vortrag: Den Vortrag auf YouTube ansehen.
Weiterlesen

Why We Built Vector Lakebase: Rethinking Unstructured Data Architecture for AI
Vector Lakebase: a unified, lake-native data foundation for AI workloads — and an answer to what happens after vector databases succeed.

How to Use Anthropic MCP Server with Milvus
MCP + Milvus: Streamline AI agent development with standardized data access, eliminating integration hassles while enhancing context and flexibility.

Vector Databases vs. Key-Value Databases
Use a vector database for AI-powered similarity search; use a key-value database for high-throughput, low-latency simple data lookups.


