Pular para o conteúdo principal

Tutorial de Weaviate: liberando o poder da busca vetorial

Explore as funcionalidades do Weaviate, um mecanismo de busca vetorial open source e em tempo real, com nosso guia completo para iniciantes.
Atualizado 17 de set. de 2026  · 11 min lido

Explorar com IA

ChatGPTClaudePerplexity

Weaviate é um mecanismo de busca vetorial open source, cloud-native, modular e em tempo real, que permite armazenar objetos de dados e embeddings vetoriais e consultá-los com base em medidas de similaridade. Neste tutorial, vamos explorar o Weaviate e seus conceitos centrais, aprender como configurá-lo, criar um esquema, inserir dados e consultar essas informações usando a interface GraphQL do Weaviate. Também veremos como usar o Weaviate com Python e discutiremos boas práticas e dicas para design de esquema, importação de dados e otimização de consultas.

O que é o Weaviate?

Weaviate é um banco de dados vetorial que armazena objetos e vetores, permitindo combinar busca vetorial. Ele é modular, cloud-native e em tempo real, o que facilita a escala de modelos de machine learning. O Weaviate vem com módulos opcionais para texto, imagem e outros tipos de mídia, que você pode escolher de acordo com sua tarefa e seus dados. Também é possível usar mais de um módulo, dependendo da variedade de dados.

Entendendo embeddings

Dados não estruturados, como textos, imagens e áudios, não têm um formato pré-definido, o que dificulta o tratamento por bancos de dados e métodos tradicionais.

Para tornar esses dados utilizáveis em aplicações de IA e machine learning, eles são convertidos em vetores numéricos por meio de embeddings.

Embeddings funcionam como dicionários especializados que transformam dados de alta dimensionalidade em representações numéricas compactas, facilitando o processamento eficiente pelos modelos de IA.

Eles são essenciais para reduzir a dimensionalidade dos dados e superar limitações de métodos tradicionais de codificação, permitindo que a IA compreenda relações complexas e contexto dentro dos dados.

Modelo de embedding de texto

Modelo de embedding de texto - fonte da imagem

Entendendo bancos de dados vetoriais

Bancos de dados tradicionais armazenam dados em tabelas, que podem ser consultadas usando SQL. No entanto, SQL não é adequado para buscar dados não estruturados, como textos ou imagens. Já os bancos de dados vetoriais armazenam dados como vetores, que podem ser consultados por meio de medidas de similaridade.

Isso os torna ideais para tarefas como busca semântica, resposta a perguntas e busca generativa. Os vetores são obtidos usando modelos de embeddings de ML. São apenas representações numéricas do objeto original, como texto, imagem, áudio, vídeo etc.

Considere um cenário em que um modelo de linguagem é usado para analisar e categorizar grandes conjuntos de documentos de texto. Cada documento pode ser transformado em um vetor de alta dimensionalidade que encapsula sua essência semântica.

Armazenar esses vetores em um banco tradicional pode não ser eficiente para tarefas como busca por similaridade ou clustering.

É aí que entra um banco de dados vetorial. Ele é otimizado para armazenar vetores e realizar operações vetoriais em alta velocidade, como encontrar vizinhos mais próximos ou calcular a similaridade do cosseno entre vetores.

Diagrama de banco de dados vetorial

fonte da imagem

Pinecone é outro banco de dados vetorial popular e uma ótima alternativa ao Weaviate. Se quiser saber mais sobre Pinecone, confira o tutorial Mastering Vector Databases with Pinecone.

Como configurar o Weaviate

Para configurar o Weaviate, você pode usar Docker Compose ou fazer a instalação manualmente. O Docker Compose é o método recomendado, pois simplifica o processo. Depois de instalar o Weaviate, você pode validar a instalação executando uma consulta simples.

Para o Docker Compose, baixe este arquivo YAML do Weaviate. Com o arquivo em mãos, basta executar:

docker compose up -d

Outras formas de usar o Weaviate:

Para usar o Weaviate em Python, instale o cliente Python do weaviate via pip.

!pip install -U weaviate-client

Conceitos centrais do Weaviate

Data object

No Weaviate, cada item de dado pertence a um grupo chamado "Class" e possui certas características chamadas "Properties". Esses itens de dados (representados como documentos JSON) formam coleções baseadas em classes.

Cada item é representado por um vetor (modelo de embeddings de machine learning). Cada coleção baseada em classe contém objetos da mesma classe, definidos por um esquema comum.

Modules

O Weaviate foi construído de forma flexível, permitindo adicionar recursos opcionais como vetorização de dados ou criação de backups.

Sem esses complementos, a versão básica do Weaviate funciona como um banco de dados projetado especificamente para dados vetoriais.

Diagrama do transformador do Weaviate

fonte da imagem

Storage

Weaviate é um banco de dados confiável que grava os dados imediatamente e lida bem com falhas de software e hardware.

Quando você busca algo usando vetores, o Weaviate retorna o item completo (às vezes chamado de "document" em outros bancos) em vez de apenas um identificador como um ID.

Se você combinar buscas tradicionais e vetoriais, os filtros são aplicados antes da busca vetorial, garantindo que você receba exatamente a quantidade de resultados solicitada. Isso difere do filtro depois da busca, quando a contagem de resultados pode variar.

Você pode atualizar ou excluir dados e seus vetores livremente, mesmo enquanto lê do banco.

GraphQL

Você pode interagir com o Weaviate usando suas APIs, que incluem uma API RESTful e uma API GraphQL. As bibliotecas cliente de todas as linguagens são compatíveis com esses recursos de API.

GraphQL é uma linguagem de consultas para APIs que permite solicitar exatamente os dados de que você precisa. Ela oferece uma forma mais eficiente e flexível de interagir com bancos de dados em comparação a métodos tradicionais como REST.

A interface GraphQL foi escolhida por vários motivos, incluindo:

  • Permite conectar dados no Weaviate por meio de referências cruzadas, tornando uma linguagem de consulta orientada a grafos como GraphQL altamente efetiva.
  • Evita over-fetching ou under-fetching de dados, entregando apenas as informações específicas solicitadas, o que melhora a performance.
  • Simplifica o processo e reduz a chance de erros.

Criando uma classe no Weaviate

Cada objeto do Weaviate pertence a uma classe. Você pode criar a classe manualmente ou usar o Auto-schema do Weaviate para gerá-la. Ao criar a classe manualmente, você tem mais controle sobre o modelo de dados.

Para criar uma classe usando a biblioteca cliente em Python:

class_name = "Item description"
class_object = {"class": class_name}
client.schema.create_class(class_object)  

Normalmente, você também vai especificar configurações adicionais. Um exemplo mais realista, retirado do Weaviate.io, seria:

{
"class": "Article",
"vectorizer": "text2vec-cohere",
"vectorIndexConfig": {
"distance": "cosine",
},
"moduleConfig": {
"generative-openai": {}
},
"properties": [
{
"name": "title",
"dataType": ["text"]
},
{
"name": "chunk",
"dataType": ["text"]
},
{
"name": "chunk_no",
"dataType": ["int"]
},
{
"name": "url",
"dataType": ["text"],
"tokenization": "field"
},
],
}

Note que um modelo de vetorização text2vec-cohere foi definido, bem como a métrica de distância cosine. Observe também como as propriedades são definidas como uma lista de dicionários.

Criando um objeto no Weaviate

O objeto pertence a uma classe. Objetos podem omitir propriedades da classe e também adicionar novas propriedades. Abaixo está um exemplo de inclusão de um objeto na classe Article.

uuid = client.data_object.create({
'question': 'question here ...',
'answer': 'answer here ...'
}, 'Article')

Você pode, opcionalmente, atribuir um vetor para representar cada objeto. Se não definir um vetor, o Weaviate usará seu vetorizador padrão.

uuid = client.data_object.create(
data_object={
'question': 'question here ...',
'answer': 'answer here ...',
},
class_name='Article',
vector=[0.12345] * 1536

Exemplo de ponta a ponta: como criar e usar um banco vetorial no Weaviate com o cliente Python

Este é um exemplo que mostra como criar uma classe e depois adicionar um objeto à classe usando o cliente Python do Weaviate. Antes, você precisa instalar o cliente Python com pip.

!pip install -U weaviate-client

Para trabalhar com o Weaviate, você precisa de uma instância funcional do Weaviate. Há duas formas de usá-lo: utilizando uma instância totalmente gerenciada e hospedada no serviço em nuvem do Weaviate ou usando o Weaviate Embedded, que executa a instância em segundo plano no seu app.

# For using embedded
import weaviate
from weaviate.embedded import EmbeddedOptions
import json
import os


client = weaviate.Client(
    embedded_options=EmbeddedOptions(),
    additional_headers = {
        "X-OpenAI-Api-Key": "YOUR_OPENAI_KEY"
    }
)

Criar uma classe é bem direto:

class_obj = {
    "class": "Question",
    "vectorizer": "text2vec-openai",      
"moduleConfig": {
        "text2vec-openai": {},
        "generative-openai": {}
    }
}


client.schema.create_class(class_obj)

Se o vetorizador for definido como None, você precisará fornecer os vetores manualmente como uma lista.

Agora podemos adicionar objetos à classe Question criada por meio do processo de importação em lote. Vamos usar o conjunto Jeopardy Q&A em formato JSON. Ele se parece com isto:

Fonte de dados (Crédito: Weaviate Official)

fonte dos dados (Crédito: Weaviate Official)

# Load data
import requests
url = 'https://raw.githubusercontent.com/weaviate-tutorials/quickstart/main/data/jeopardy_tiny.json'
resp = requests.get(url)
data = json.loads(resp.text)


# Configure a batch process
with client.batch(
    batch_size=100
) as batch:
    # Batch import all Questions
    for i, d in enumerate(data):
        print(f"importing question: {i+1}")


        properties = {
            "answer": d["Answer"],
            "question": d["Question"],
            "category": d["Category"],
        }


        client.batch.add_data_object(
            properties,
            "Question",
        )

Este exemplo foi reproduzido com base na documentação do Weaviate.

Boas práticas e dicas do Weaviate

Vamos ver algumas dicas úteis para usar o Weaviate com eficiência. Seja ao projetar seu esquema, importar dados ou otimizar consultas, estas boas práticas vão ajudar você a extrair o máximo das capacidades do Weaviate.

Design de esquema

  • Projete seu esquema para ser flexível e escalável. Assim, você poderá adicionar novas propriedades e alterar as existentes sem precisar modificar todo o esquema.
  • Use identificadores únicos para cada entidade e ação. Isso facilita as consultas e evita duplicidades.
  • Use tipos semânticos para definir as propriedades de entidades e ações. Isso facilita as consultas e garante consistência em todo o esquema.

Importação de dados

  • Use a importação em lote para inserir dados com eficiência. Assim, você adiciona grandes volumes de uma só vez e evita problemas de desempenho.
  • Use a API RESTful para adicionar dados. Isso permite automatizar a importação e integrá-la a outras ferramentas.
  • Use formatos de dados compatíveis, como JSON ou CSV. Isso garante a importação correta e evita erros.

Otimização de consultas

  • Use a interface GraphQL do Weaviate para consultar os dados. Assim, você realiza consultas complexas e filtra informações com base em critérios específicos.
  • Use paginação para limitar a quantidade de dados retornada por cada consulta. Isso melhora a performance e reduz a carga no servidor.
  • Use cache para armazenar dados acessados com frequência. Isso melhora o desempenho e diminui o número de consultas necessárias para recuperar dados.

ChromaDB é outro banco vetorial open source bastante popular na comunidade de ciência de dados. Com o Chroma DB, você gerencia documentos de texto com facilidade, converte texto em embeddings e realiza buscas por similaridade. Para saber mais sobre o ChromaDB, confira o tutorial do Chroma DB.

Conclusão

Este tutorial do Weaviate oferece um guia completo para entender e usar o Weaviate, um mecanismo de busca vetorial open source, cloud-native e em tempo real. O conteúdo aborda desde o básico sobre o que é o Weaviate e como ele difere dos bancos tradicionais até os detalhes de configuração e uso eficaz.

O destaque do Weaviate é lidar com dados não estruturados por meio de embeddings vetoriais, tornando-o uma ferramenta poderosa para aplicações de machine learning e IA. Sua arquitetura modular traz flexibilidade, permitindo escolher módulos opcionais de acordo com suas necessidades. O conteúdo também aprofunda a importância dos embeddings, explicando como eles transformam dados de alta dimensionalidade em um formato facilmente processado por modelos de IA.

Se quiser continuar aprendendo sobre Weaviate, confira nosso webinar sobre bancos de dados vetoriais para data science com Weaviate em Python.


Moez Ali's photo
Author
Moez Ali
LinkedIn
Twitter

Cientista de dados, fundador e criador do PyCaret

Tópicos
Inteligência Artificial

Comece a trabalhar com IA hoje mesmo!

Curso

Conceitos de IA Generativa

2 h
117.2K
Descubra como usar IA generativa de forma responsável e seu impacto futuro na sociedade.
Ver detalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow
Relacionado

blog

Os 7 melhores bancos de dados vetoriais em 2026

Um guia completo com os melhores bancos de dados vetoriais. Domine o armazenamento de dados de alta dimensão, decifrar informações não estruturadas e aproveitar as incorporações vetoriais para aplicações de IA.
Moez Ali's photo

Moez Ali

14 min

Tutorial

Tutorial pgvector: Integrar a Pesquisa Vetorial no PostgreSQL

Descubra como melhorar o PostgreSQL com recursos de pesquisa vetorial usando o pgvector. Este tutorial te mostra como instalar, usar as funções básicas e integrar com ferramentas de IA.
Moez Ali's photo

Moez Ali

10 min

cursor ai code editor

Tutorial

AI do cursor: Um guia com 10 exemplos práticos

Saiba como instalar o Cursor AI no Windows, macOS e Linux e descubra como usá-lo em 10 casos de uso diferentes.

Tutorial

Tutorial da API de assistentes da OpenAI

Uma visão geral abrangente da API Assistants com nosso artigo, que oferece uma análise aprofundada de seus recursos, usos no setor, orientação de configuração e práticas recomendadas para maximizar seu potencial em vários aplicativos de negócios.
Zoumana Keita 's photo

Zoumana Keita

14 min

Tutorial

Introdução ao Text Embeddings com a API OpenAI

Explore nosso guia sobre como usar a API OpenAI para criar incorporações de texto. Descubra suas aplicações na classificação de textos, recuperação de informações e detecção de similaridade semântica.
Zoumana Keita 's photo

Zoumana Keita

7 min

Tutorial

Visão GPT-4: Um guia abrangente para iniciantes

Este tutorial apresentará tudo o que você precisa saber sobre o GPT-4 Vision, desde o acesso a ele, passando por exemplos práticos do mundo real, até suas limitações.
Arunn Thevapalan's photo

Arunn Thevapalan

12 min

Ver MaisVer Mais