Texto como Dados, De Qualquer Lugar para Qualquer Lugar
Introdução
Em março de 2024, ouvimos AJ Steers no SF Unstructured Data Meetup falar sobre como podemos utilizar o Airbyte e o PyAirbyte para usar texto como dados, de qualquer lugar para qualquer lugar. Isso significa que podemos integrar e utilizar dados estruturados e não estruturados de várias fontes em diferentes plataformas.
Link para a gravação no YouTube da palestra de AJ Steers: Assista no YouTube.
Quem é AJ Steers e por que você deveria se importar com a integração unificada de dados?
AJ Steers é um arquiteto experiente, engenheiro de dados, desenvolvedor de software e especialista em operações de dados. Ele projetou soluções de ponta a ponta na Amazon e criou uma visão para modelos de autodados quantificados. Atualmente, ele é engenheiro de software sênior na Airbyte.
A integração unificada de dados combina diversos tipos e fontes de dados em um sistema único e coeso para análise e processamento eficientes. Essa capacidade é crucial para aproveitar todo o potencial dos seus dados, garantindo acesso e utilização contínuos em várias plataformas e aplicações. Como AJ coloca, “Mais do que nunca, estamos cercados por dados utilizáveis” e agora tudo se resume ao custo de oportunidade. Quanto tempo temos para obter da fonte dados que acreditamos poderem ser valiosos?
Com isso, vamos mergulhar na palestra de AJ sobre “Texto como dados, de qualquer lugar para qualquer lugar” usando o Airbyte.
A expansão do Airbyte de fontes e destinos compatíveis
O foco do Airbyte até agora tem sido oferecer confiabilidade, opções flexíveis de implantação e uma biblioteca robusta de conectores para garantir integração de dados sem interrupções para dados tabulares tradicionais. Mas e quanto aos dados não estruturados? AJ fala sobre o que a equipe do Airbyte tem feito nos últimos seis meses.
Nos últimos seis meses, a partir de março de 2024 para trás, o Airbyte expandiu suas capacidades para abranger fontes de dados não estruturados além das fontes tradicionais de dados tabulares. Isso se deve à crescente importância e prevalência de dados não estruturados no ecossistema de dados atual. Essa expansão fez o Airbyte ir além de destinos do tipo SQL e do tipo arquivo para abranger destinos de bancos de dados vetoriais como o Milvus, garantindo que possamos utilizar dados de forma eficaz em várias aplicações. Vamos dar uma olhada em alguns dos conectores compatíveis com o Airbyte tanto para fontes de dados estruturados quanto não estruturados.
O Airbyte oferece suporte a mais de 350 conectores, portanto não podemos listar todos eles. Mas o slide acima compartilhado por AJ mostra exemplos de conectores para cada categoria de fonte e destino. Até agora, temos falado sobre dados não estruturados e como o Airbyte está se expandindo para apoiá-los. Mas quais são exemplos reais desses dados?
Pense neste blog que você está lendo: ele está organizado em formato tabular? é um excelente exemplo de dados não estruturados, composto por texto que não se encaixa perfeitamente em linhas e colunas. Dados não estruturados referem-se a informações que não residem em um banco de dados tradicional de linhas e colunas. Incluem dados como texto, imagens, vídeos e publicações em redes sociais. Vamos dar uma olhada em alguns dos dados não estruturados compartilhados por AJ no slide abaixo.
Com esse tipo de dado e a assistência do Airbyte para consumi-lo, diferentes comunidades têm expectativas diferentes em relação ao Airbyte.
Desenvolvedores GenAl: Querem integrações simplificadas com outras ferramentas e paradigmas do ecossistema.
Cientistas de dados: Querem bibliotecas que possam ser executadas em um Jupyter notebook, desacopladas de um data warehouse central.
Engenheiros de dados: Querem uma abordagem de pipelines como código, a capacidade de executar pipelines de teste de CI e desenvolvimento sem atritos.
Desenvolvedores: Querem criar e iterar localmente, depois implantar mais tarde.
Isso mostra que todos nós queremos ótimas bibliotecas, boa interoperabilidade e mais controle. Mas tudo se resume ao que você quer. Alguns de nós querem algo para o qual possam programar e controlar, enquanto outros preferem ser menos técnicos e usar uma interface de usuário. Tradicionalmente, isso nos levou a caminhos completamente diferentes. A Airbyte está tentando quebrar essas barreiras para qualquer pessoa que possa executar e escrever código Python ou qualquer pessoa que possa simplesmente copiar e colar algumas linhas de código usando PyAirbyte. Vamos ver o que é o PyAibyte e seus prós.
Apresentando o PyAirbyte
PyAirbyte é uma biblioteca Python que fornece uma interface para interagir com a Airbyte. Ela nos permite controlar e gerenciar nossas instâncias da Airbyte usando Python. Pense nela como trazer o poder da Airbyte para todo desenvolvedor Python.
Vantagens do PyAirbyte
- Executar em qualquer lugar: Podemos executar o PyAirbyte em um notebook Jupyter, desacoplado de qualquer data warehouse. Isso significa que podemos usá-lo em muitos ambientes, não apenas aqueles vinculados a um data warehouse específico, dando-nos a flexibilidade de trabalhar no ambiente que melhor atende às nossas necessidades.
- Reduzir o tempo até o valor: Com o PyAirbyte, podemos criar e iterar pipelines de dados localmente antes de implantá-los. Isso nos permite testar e refinar nossos pipelines para garantir que estejam funcionando conforme esperado, o que ajuda a reduzir o tempo necessário para obter insights valiosos dos dados.
- Prototipagem rápida: O PyAirbyte não exige uma interface de usuário nem cadastros, então podemos começar a definir nossos pipelines de dados em código imediatamente. Isso acelera o processo de prototipagem.
- Flexível: Podemos usar o PyAirbyte com as ferramentas e frameworks do nosso ecossistema. Isso significa que podemos integrá-lo às outras ferramentas que já estamos usando, facilitando sua incorporação aos nossos fluxos de trabalho e processos existentes.
Agora, vamos nos aprofundar em como você pode começar a usar Airbyte e PyAirbyte em apenas algumas etapas.
Demos de UI e código
AJ se aprofunda em uma sessão de demonstração mostrando como podemos usar a versão hospedada da Airbyte (abordagem sem código) e o PyAirbyte (abordagem com código mínimo) para integrar nossas fontes de dados aos nossos destinos de dados.
Demo da abordagem por UI
Para aqueles que adoram clicar em botões mais do que digitar código, a abordagem por UI é um sonho realizado. É como o “modo fácil” no seu videogame favorito. Manteremos isso breve, pois já cobrimos como usar a versão hospedada da Airbyte para conectar uma fonte de dados e um destino em detalhes. O artigo vinculado vai além da parte de integração e nos mostra como criar um aplicativo do mundo real usando a conexão estabelecida.
Há quatro etapas principais envolvidas no uso da abordagem sem código para conectar uma fonte de dados a um destino de dados.
Cadastre-se ou faça login na sua conta Airbyte. Ao se cadastrar, você recebe um teste de 14 dias.
Configure a fonte de dados.
Configure o destino dos dados.
Crie uma conexão entre a fonte e o destino.
Quando a conexão estiver estabelecida, você estará pronto para usar seus dados. Se você é um geek de código como eu e prefere a abordagem por código, o PyAirbyte tem o que você precisa.
Demo da abordagem por código
Buscando dados usando PyAirbyte em três etapas
O processo de buscar dados usando PyAirbyte é bastante simples.
Etapa 1:
Crie uma source usando a função 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 ter uma visão visual de todos os conectores que o Airbyte suporta, consulte a página de conectores suportados. Mas e se o conector da sua fonte não for suportado? Então você precisa criar seu próprio conector personalizado. Não se preocupe, não é tão difícil quanto parece. Você só precisa seguir este guia, pois o Airbyte oferece um construtor de conectores no-code que nos permite criar conectores em menos de 10 minutos.
Etapa 2:
Configure nossa fonte com 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()
Isso é apenas passar de onde, na fonte, queremos obter os dados e as credenciais de autorização necessárias.
Etapa 3:
Leia os dados usando a 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()
A opção de interoperabilidade nos permite converter os dados obtidos em diferentes estruturas de dados que melhor se adequem ao nosso caso de uso. Isso conclui o processo de três etapas. No entanto, não é obrigatório seguir as três etapas de forma independente para buscar dados. O Airbyte suporta um processo de uma etapa para alcançar o mesmo resultado.
Buscando Dados Usando PyAirbyte em uma Única Etapa
Esta é a versão speedrun. Ela envolve combinar todas as três etapas em uma única etapa.
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()
O código realiza todas as três operações em uma única etapa. Ele cria a fonte, configura-a e, por fim, lê os dados. Agora você pode usar a opção de interoperabilidade para converter os dados obtidos em diferentes estruturas de dados, como fizemos anteriormente. Mas, se você quiser gerar documentos LLM a partir de dados tabulares, a próxima seção mostra como fazer isso.
Gerando Documentos LLM a Partir de Dados Tabulares
Se você quiser que seus dados sejam compatíveis com LangChain, precisa convertê-los em Documentos LLM. Você pode então usar esses documentos para várias tarefas de processamento de linguagem natural, como perguntas e respostas, sumarização ou geração 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))
O código buscará as issues do GitHub e as renderizará como documentos. Em seguida, definirá o título do documento como o título da issue e o conteúdo do documento será definido como o body da issue. Depois, ele usará rich para imprimir os documentos em formato markdown no console.
Com duas opções disponíveis, vamos ver qual abordagem melhor se adapta a você.
Escolhendo Entre Airbyte e PyAirbyte
Se você quer a abordagem sem código para vector stores, escolha a versão hospedada. Se você quer controle total com código mínimo, escolha o PyAirbyte. AJ afirma que, em teoria, em qualquer lugar onde Python rode com suporte por um ambiente virtual, o PyAirbyte pode rodar. Eu montei uma tabela para ajudar você a decidir qual abordagem combina com você.
| Critérios | Airbyte (UI/Hospedado) | PyAirbyte |
| Abordagem | Sem código | Código/Python |
| Configuração | Processo simples de cadastro | Requer habilidades de programação em Python |
| Interface de Usuário | Fornece uma interface amigável | Sem interface de usuário, baseada em código |
| Integração de Dados | Adequado tanto para tarefas tradicionais quanto modernas de integração de dados (dados não estruturados, bancos de dados vetoriais, etc.) | Adequado tanto para tarefas tradicionais quanto modernas de integração de dados (dados não estruturados, bancos de dados vetoriais, etc.) |
| Flexibilidade | Limitada às opções fornecidas na UI | Altamente flexível, pode ser integrado a outras ferramentas e frameworks Python |
| Ambiente | Ambiente hospedado | Pode rodar em qualquer ambiente Python (por exemplo, Jupyter Notebook, máquina local) |
| Implantação | Implanta pipelines de dados no ambiente hospedado da Airbyte | Implantação baseada em código pode ser integrada a pipelines de CI/CD |
| Prototipagem | Adequado para usuários não técnicos ou prototipagem rápida | Ideal para usuários técnicos e prototipagem rápida |
| Curva de Aprendizado | Curva de aprendizado menor | Requer habilidades de programação em Python ou habilidades básicas de programação |
Após a comparação, você pode continuar escolhendo sua própria aventura.
Próximos Recursos do PyAirbyte
O PyAirbyte ainda está na fase beta. Portanto, por enquanto, ele não oferece suporte a destinations completas, o que significa que não tem vector stores como destinations, mas podemos passá-las para o LangChain. Aj compartilha algumas expectativas que devemos ter da equipe do PyAirbyte este ano: O Que Vem a Seguir para o PyAirbyte?
Planos para o 2º trimestre de 2024:
Melhorar o suporte para Python 3.9 e 3.11
Adicionar suporte ao Windows
Melhorar a API para configurar sources
Permitir interoperabilidade com as versões Airbyte Cloud, OSS e Enterprise
Planos para o 2º semestre de 2024:
Adicionar suporte para Reverse ETL
Adicionar suporte para destinations Vector Store
Adicionar suporte para destinations do tipo Publish
Se você quiser oferecer feedback e relatar bugs, considere abrir uma issue na página do GitHub do PyAirbyte.
Conclusão
Quer você prefira uma abordagem sem código ou com código mínimo, Airbyte e PyAirbyte oferecem soluções robustas para integrar dados estruturados e não estruturados. AJ Steers pintou um bom quadro do potencial dessas ferramentas em revolucionar fluxos de trabalho de dados. Para mais informações, confira os recursos abaixo e comece sua jornada para aproveitar texto como dados, de qualquer lugar para qualquer lugar.
Recursos Adicionais
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 para o replay no YouTube da palestra de AJ Steer: Assista à palestra no YouTube.
Continue lendo

VDBBench Adds Cost-Aware Benchmarking for Vector Databases
Compare Zilliz Cloud, Pinecone, and turbopuffer with VDBBench cost-aware vector database benchmarks across latency, freshness, multitenancy, and cold starts.

What Is a Vector Lakebase?
A Vector Lakebase is a unified, lake-native data architecture for AI that combines vector-database-grade serving with open lake storage, reusable lake-level indexes, and a shared semantic layer.

Zilliz Cloud Update: Tiered Storage, Business Critical Plan, Cross-Region Backup, and Pricing Changes
This release offers a rebuilt tiered storage with lower costs, a new Business Critical plan for enhanced security, and pricing updates, among other features.


