Texto como datos, desde cualquier lugar a cualquier lugar
Introducción
En marzo de 2024, escuchamos a AJ Steers en el SF Unstructured Data Meetup hablar sobre cómo podemos utilizar Airbyte y PyAirbyte para usar texto como datos, desde cualquier lugar hacia cualquier lugar. Esto significa que podemos integrar y utilizar tanto datos estructurados como no estructurados de diversas fuentes en diferentes plataformas.
Enlace a la repetición en YouTube de la charla de AJ Steers: Ver en YouTube.
¿Quién es AJ Steers y por qué debería importarte la integración de datos unificada?
AJ Steers es un arquitecto, ingeniero de datos, desarrollador de software y experto en operaciones de datos con experiencia. Ha diseñado soluciones de extremo a extremo en Amazon y creó una visión para modelos de datos personales cuantificados. Actualmente, es ingeniero de software sénior en Airbyte.
La integración de datos unificada fusiona diversos tipos y fuentes de datos en un sistema único y cohesivo para un análisis y procesamiento eficientes. Esta capacidad es crucial para aprovechar todo el potencial de tus datos, garantizando un acceso y uso fluidos en diversas plataformas y aplicaciones. Como lo expresa AJ, “Más que nunca, estamos rodeados de datos utilizables” y ahora todo se trata del costo de oportunidad. ¿Cuánto tiempo tenemos para obtener datos que creemos que pueden ser valiosos desde la fuente?
Con eso, profundicemos en la charla de AJ sobre “Texto como datos, desde cualquier lugar hacia cualquier lugar” usando Airbyte.
La expansión de Airbyte de fuentes y destinos compatibles
Hasta ahora, el enfoque de Airbyte ha estado en ofrecer confiabilidad, opciones de implementación flexibles y una sólida biblioteca de conectores para garantizar una integración de datos fluida para datos tabulares tradicionales. Pero ¿qué pasa con los datos no estructurados? AJ habla sobre en qué ha estado trabajando el equipo de Airbyte durante los últimos seis meses.
En los últimos seis meses, desde marzo de 2024 hacia atrás, Airbyte ha ampliado sus capacidades para cubrir fuentes de datos no estructurados, además de las fuentes de datos tabulares tradicionales. Esto se debe a la creciente importancia y prevalencia de los datos no estructurados en el ecosistema de datos actual. Esta expansión ha llevado a Airbyte más allá de los destinos de tipo SQL y de tipo archivo para cubrir destinos de bases de datos vectoriales como Milvus, garantizando que podamos utilizar eficazmente los datos en diversas aplicaciones. Echemos un vistazo a algunos de los conectores compatibles con Airbyte tanto para fuentes de datos estructurados como no estructurados.
Airbyte admite más de 350 conectores, por lo que no podemos enumerarlos todos. Pero la diapositiva anterior compartida por AJ muestra conectores de muestra para cada categoría de fuente y destino. Hasta ahora, hemos estado hablando de datos no estructurados y de cómo Airbyte se está expandiendo para darles soporte. Pero ¿cuáles son ejemplos reales de estos datos?
Piensa en este blog que estás leyendo, ¿está organizado en forma tabular? Es un excelente ejemplo de datos no estructurados, compuesto por texto que no encaja perfectamente en filas y columnas. Los datos no estructurados se refieren a información que no reside en una base de datos tradicional de filas y columnas. Incluyen datos como texto, imágenes, videos y publicaciones en redes sociales. Echemos un vistazo a algunos de los datos no estructurados compartidos por AJ en la diapositiva de abajo.
Con este tipo de datos y la asistencia de Airbyte para consumirlos, diferentes comunidades tienen distintas expectativas de Airbyte.
Desarrolladores de GenAl: Quieren integraciones simplificadas con otras herramientas y paradigmas del ecosistema.
Científicos de datos: Quieren bibliotecas que puedan ejecutarse en un cuaderno de Jupyter, desacopladas de un almacén de datos central.
Ingenieros de datos: Quieren un enfoque de pipelines como código, la capacidad de ejecutar pipelines de prueba de CI y un desarrollo sin fricciones.
Desarrolladores: Quieren crear e iterar localmente, y luego desplegar más tarde.
Esto demuestra que todos queremos excelentes bibliotecas, buena interoperabilidad y más control. Pero todo se reduce a lo que quieres. Algunos de nosotros queremos algo para lo que podamos programar y controlar, mientras que otros prefieren ser menos técnicos y usar una interfaz de usuario. Tradicionalmente, esto nos ha llevado por caminos completamente diferentes. Airbyte está intentando romper estas barreras para cualquiera que pueda ejecutar y escribir código Python o cualquiera que simplemente pueda copiar y pegar unas pocas líneas de código usando PyAirbyte. Veamos qué es PyAibyte y sus ventajas.
Presentamos PyAirbyte
PyAirbyte es una biblioteca de Python que proporciona una interfaz para interactuar con Airbyte. Nos permite controlar y gestionar nuestras instancias de Airbyte usando Python. Piensa en ello como llevar el poder de Airbyte a todos los desarrolladores de Python.
Ventajas de PyAirbyte
- Ejecutar en cualquier lugar: Podemos ejecutar PyAirbyte en un cuaderno de Jupyter, desacoplado de cualquier almacén de datos. Esto significa que podemos usarlo en muchos entornos, no solo en aquellos vinculados a un almacén de datos específico, lo que nos da la flexibilidad de trabajar en el entorno que mejor se adapte a nuestras necesidades.
- Reducir el tiempo hasta obtener valor: Con PyAirbyte, podemos crear e iterar sobre pipelines de datos localmente antes de desplegarlos. Esto nos permite probar y refinar nuestros pipelines para asegurarnos de que funcionan como se espera, lo que ayuda a reducir el tiempo necesario para obtener información valiosa de los datos.
- Prototipado rápido: PyAirbyte no requiere una interfaz de usuario ni registros, por lo que podemos empezar a definir nuestros pipelines de datos en código de inmediato. Esto acelera el proceso de prototipado.
- Flexible: Podemos usar PyAirbyte con las herramientas y frameworks de nuestro ecosistema. Esto significa que podemos integrarlo con las otras herramientas que ya estamos usando, lo que facilita incorporarlo a nuestros flujos de trabajo y procesos existentes.
Ahora, profundicemos en cómo puedes empezar con Airbyte y PyAirbyte en solo unos pocos pasos.
Demos de interfaz de usuario y código
AJ profundiza en una sesión de demostración que muestra cómo podemos usar la versión alojada de Airbyte (enfoque sin código) y PyAirbyte (enfoque con código mínimo) para integrar nuestras fuentes de datos con nuestros destinos de datos.
Demo del enfoque de interfaz de usuario
Para quienes aman hacer clic en botones más que escribir código, el enfoque de interfaz de usuario es un sueño hecho realidad. Es como el “modo fácil” de tu videojuego favorito. Mantendremos esto breve, ya que ya hemos cubierto cómo usar la versión alojada de Airbyte para conectar una fuente de datos y un destino en detalle. El artículo enlazado va más allá de la parte de integración y nos muestra cómo crear una aplicación del mundo real usando la conexión establecida.
Hay cuatro pasos principales involucrados en el uso del enfoque sin código para conectar una fuente de datos con un destino de datos.
Regístrate o inicia sesión en tu cuenta de Airbyte. Cuando te registras, recibes una prueba de 14 días.
Configura la fuente de datos.
Configura el destino de datos.
Crea una conexión entre la fuente y el destino.
Cuando se establece la conexión, estás listo para usar tus datos. Si eres un fanático del código como yo y prefieres el enfoque de código, PyAirbyte te tiene cubierto.
Demo del enfoque de código
Obtención de datos usando PyAirbyte en tres pasos
El proceso de obtener datos usando PyAirbyte es bastante simple.
Paso 1:
Crea un source usando la función 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")
Para tener una vista visual de todos los conectores que Airbyte admite, echa un vistazo a la página de conectores compatibles. Pero ¿qué pasa si el conector de tu fuente no es compatible? Entonces necesitas crear tu propio conector personalizado. No te preocupes, no es tan difícil como parece. Solo tienes que seguir esta guía, ya que Airbyte ofrece un constructor de conectores sin código que nos permite crear conectores en menos de 10 minutos.
Paso 2:
Configura nuestra fuente con 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()
Esto simplemente indica desde dónde, en la fuente, queremos obtener los datos y las credenciales de autorización requeridas.
Paso 3:
Lee los datos usando 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()
La opción de interoperabilidad nos permite convertir los datos obtenidos en diferentes estructuras de datos que se ajusten mejor a nuestro caso de uso. Esto completa el proceso de tres pasos. Sin embargo, no es obligatorio seguir los tres pasos de forma independiente para obtener datos. Airbyte admite un proceso de un solo paso para lograr lo mismo.
Obtener datos usando PyAirbyte en un solo paso
Esta es la versión rápida. Consiste en combinar los tres pasos en un solo paso.
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()
El código realiza las tres operaciones en un solo paso. Crea la fuente, la configura y finalmente lee los datos. Ahora puedes usar la opción de interoperabilidad para convertir los datos obtenidos en diferentes estructuras de datos, como hicimos antes. Pero si quieres generar documentos LLM a partir de datos tabulares, la siguiente sección te muestra cómo hacerlo.
Generar documentos LLM a partir de datos tabulares
Si quieres que tus datos sean compatibles con LangChain, necesitas convertirlos a documentos LLM. Luego puedes usar estos documentos para diversas tareas de procesamiento del lenguaje natural, como respuesta a preguntas, resumen o generación de texto.
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))
El código obtendrá las incidencias de GitHub y las renderizará como documentos. Luego establecerá el título del documento como el título de la issue y el contenido del documento se establecerá como el body de la incidencia. Después usará rich para imprimir los documentos en formato markdown en la consola.
Con dos opciones disponibles, veamos qué enfoque se adapta mejor a ti.
Elegir entre Airbyte y PyAirbyte
Si quieres el enfoque de cero código para almacenes vectoriales, opta por la versión alojada. Si quieres control total con código mínimo, opta por PyAirbyte. AJ afirma que, en teoría, PyAirbyte puede ejecutarse en cualquier lugar donde se ejecute Python y que sea compatible con un entorno virtual. He preparado una tabla para ayudarte a decidir qué enfoque te conviene.
| Criterios | Airbyte (UI/Hosted) | PyAirbyte |
| Enfoque | Sin código | Código/Python |
| Configuración | Proceso de registro sencillo | Requiere habilidades de programación en Python |
| Interfaz de usuario | Proporciona una interfaz fácil de usar | Sin interfaz de usuario, basada en código |
| Integración de datos | Adecuado tanto para tareas tradicionales como modernas de integración de datos (datos no estructurados, bases de datos vectoriales, etc.) | Adecuado tanto para tareas tradicionales como modernas de integración de datos (datos no estructurados, bases de datos vectoriales, etc.) |
| Flexibilidad | Limitada a las opciones proporcionadas en la UI | Muy flexible, puede integrarse con otras herramientas y frameworks de Python |
| Entorno | Entorno alojado | Puede ejecutarse en cualquier entorno Python (p. ej., Jupyter Notebook, máquina local) |
| Despliegue | Despliega pipelines de datos en el entorno alojado de Airbyte | El despliegue basado en código puede integrarse con pipelines de CI/CD |
| Prototipado | Adecuado para usuarios no técnicos o prototipado rápido | Ideal para usuarios técnicos y prototipado rápido |
| Curva de aprendizaje | Curva de aprendizaje más baja | Requiere habilidades de programación en Python o habilidades básicas de programación |
Después de la comparación, puedes continuar eligiendo tu propia aventura.
Próximas funciones de PyAirbyte
PyAirbyte aún está en fase beta. Por lo tanto, por ahora, no admite destinos completos, lo que significa que no tiene almacenes vectoriales como destinos, pero podemos pasarlos a LangChain. Aj comparte un par de expectativas que deberíamos tener del equipo de PyAirbyte este año: ¿Qué sigue para PyAirbyte?
Planes para el Q2 de 2024:
Mejorar el soporte para Python 3.9 y 3.11
Añadir soporte para Windows
Mejorar la API para configurar fuentes
Habilitar la interoperabilidad con las versiones Cloud, OSS y Enterprise de Airbyte
Planes para el H2 de 2024:
Añadir soporte para Reverse ETL
Añadir soporte para destinos de Vector Store
Añadir soporte para destinos de tipo Publish
Si quieres ofrecer comentarios e informar errores, considera abrir un issue en la página de GitHub de PyAirbyte.
Conclusión
Ya sea que prefieras un enfoque sin código o con código mínimo, Airbyte y PyAirbyte ofrecen soluciones robustas para integrar datos tanto estructurados como no estructurados. AJ Steers pintó una buena imagen del potencial de estas herramientas para revolucionar los flujos de trabajo de datos. Para obtener más información, consulta los recursos a continuación y comienza tu recorrido para aprovechar el texto como datos, desde cualquier lugar hacia cualquier lugar.
Recursos adicionales
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
Enlace a la repetición en YouTube de la charla de AJ Steer: Ver la charla en YouTube.
Sigue leyendo

Milvus 2.6.x Now Generally Available on Zilliz Cloud, Making Vector Search Faster, Smarter, and More Cost-Efficient for Production AI
Milvus 2.6.x is now GA on Zilliz Cloud, delivering faster vector search, smarter hybrid queries, and lower costs for production RAG and AI applications.

Zilliz Cloud Launches in AWS Australia, Expanding Global Reach to Australia and Neighboring Markets
We're thrilled to announce that Zilliz Cloud is now available in the AWS Sydney, Australia region (ap-southeast-2).

Bringing AI to Legal Tech: The Role of Vector Databases in Enhancing LLM Guardrails
Discover how vector databases enhance AI reliability in legal tech, ensuring accurate, compliant, and trustworthy AI-powered legal solutions.


