Filtragem de metadados com Zilliz Cloud Pipelines
Uma pergunta comum que ouço é: “Preciso de um banco de dados SQL regular além do meu banco de dados vetorial?” Essa pergunta pode ser necessária se você incluir informações adicionais com os dados não estruturados. Além disso, você pode filtrar os dados para fins de negócios antes de realizar uma busca por similaridade semântica. Por exemplo:
Em um contexto jurídico, você pode precisar buscar trechos de texto apenas no seu banco de dados de contratos ou em um contrato específico.
No varejo, você pode querer restringir sua busca a um tamanho específico de calçados masculinos.
Na busca de imagens, você pode querer encontrar pôsteres de filmes lançados entre 2010-2016, com pontuações no IMDB superiores a 7,0.
Voltando à pergunta acima, minha resposta é “Não, você não precisa se preocupar com isso ao usar o banco de dados vetorial Milvus ou o Zilliz Cloud, o Milvus totalmente gerenciado.” Com o Milvus, você pode realizar busca híbrida vetorial e escalar para alcançar melhor precisão.
Nas seções a seguir, discutiremos a filtragem escalar ou de metadados e como você pode realizar a filtragem de metadados no Zilliz Cloud. Este blog dá continuidade ao meu blog anterior sobre como começar com RAG em apenas 5 minutos. Você pode encontrar o código dele neste notebook e rolar para baixo até a Célula #27.
Como entender a Filtragem de Metadados no Milvus?
O banco de dados vetorial Milvus permite que você realize buscas vetoriais aplicando expressões booleanas e limitando-as com condições sobre os atributos dos seus dados. Os atributos podem ser qualquer campo, exceto o vetor de embedding dos dados não estruturados. Além disso, a filtragem de metadados coexiste com a busca vetorial no Milvus. Você pode usar qualquer campo além do campo do vetor de embedding na expressão de filtro e usar índice vetorial para buscar no campo do vetor de embedding. O Milvus lida automaticamente com ambas as operações quando você especifica uma expressão de filtro no seu comando de busca.
Como realizar a Filtragem de Metadados no Zilliz Cloud?
Para começar a iterar rapidamente, usarei o Zilliz Cloud (Free Tier), o Milvus totalmente gerenciado, neste guia. Ele hospeda seu banco de dados em um servidor de nuvem serverless, mas você ainda pode interagir com ele localmente fazendo chamadas à API PyMilvus. Também usarei o Zilliz Cloud Pipelines, um recurso integrado, para codificar dados não estruturados em embeddings vetoriais para operações simplificadas.
Os dados abaixo são das nossas páginas de documentação da Documentação do Milvus.
Etapa 1: Crie uma coleção (tabela de banco de dados) e pipelines
Envie seus dados para o S3 ou GCS.
Abra outra janela do navegador em https://cloud.zilliz.com/ e crie um Cluster “Starter”.
- Adicione o nome da coleção e clique em “Create Collection and Cluster”.
Observação: Quando você cria seu primeiro cluster do Zilliz Cloud, também cria uma nova coleção por padrão. Ao usar o Zilliz Cloud Pipelines, você criará outra nova coleção.
- Navegue pelo menu do lado esquerdo até Pipelines e siga as etapas guiadas para enviar seus dados.
a. Comece com “Ingestion Pipeline.”
b. Selecione o nome do seu cluster, adicione os nomes da coleção e do pipeline e clique em “Add a Function.”
c. Adicione um nome e clique em “Add”. Nesta etapa do pipeline, você não pode modificar nada.
d. Opcional: Clique em “Add a Function” novamente
e. Opcional: Nomeie a etapa do campo de metadados, o campo de metadados e o tipo. Clique em “Add”.
- Clique em “Create Ingestion Pipeline”. Agora, você criou um novo Ingestion Pipeline e uma nova Collection.
Clique em “Create Deletion and Search Pipelines” para criar pipelines de exclusão e pesquisa.
Para encontrar o pipeline “Ingestion,” clique no ícone Run > em “Actions.”
- Aponte para seus dados. Na AWS, a maneira mais fácil é uma URL pré-assinada temporária. Selecione quando deseja compartilhá-la e, em seguida, Copie a URL pré-assinada.
- Cole a URL pré-assinada e clique em “Run.”
- Atualize seu navegador e verifique se a nova collection e o schema estão corretos.
Consulte no console web ou usando chamadas de API.
Etapa 2. Pesquisar no console web
Encontre o Pipeline “Search” em Actions > clique no ícone Run.
Na UI, digite sua pergunta e clique em “Run.”
Edite o “filter” usando uma expressão booleana. Você deve ver que o filtro foi aplicado aos resultados da pesquisa.
É isso! Você pode usar expressões booleanas para filtrar a pesquisa usando qualquer campo que não seja o vetor de embedding de dados não estruturados. O campo de vetor de embedding é pesquisado usando o índice vetorial AUTOINDEX em Pipelines.
Além disso, em Pipelines, os embeddings são normalizados para que as métricas IP e distância de cosseno funcionem de forma equivalente. O modelo de embedding padrão usado em Pipelines, no momento, é bge-large-en-v1.5.
Etapa 3. Pesquisar via API
Você também pode pesquisar usando chamadas de API (o código Python está neste notebook; role para baixo até Cell#27. )
Você precisará de duas coisas.
Token de API da Zilliz
Pipeline-ID
Você pode obter o Token de API na tela principal do Cluster.
Para obter o Pipeline-ID, encontre o Pipeline “Search,” procure na coluna “Pipeline-ID” e clique no ícone de copiar. Cole o Pipeline ID na URL da sua chamada de API.
import requests, json
url = "https://controller.api.gcp-us-west1.zillizcloud.com/v1/pipelines/pipe-xxxx/run"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {TOKEN}",
}
data = {
"data": {
"query_text": SAMPLE_QUESTION
},
"params": {
"limit": TOP_K,
"offset": 0,
# Any of these fields can be used in filter expression.
"outputFields": ["chunk_text", "chunk_id", "doc_name", "source"],
"filter": "doc_name == 'param.html'"
}
}
# Send the POST request
response = requests.post(url, headers=headers, json=data)
É isso! Agora, você aprendeu como realizar uma busca com filtro no Zilliz Cloud via API.
Resumo
Assim como juntar dados em um banco de dados SQL para permitir que você realize consultas SQL, a filtragem de metadados permite que você realize buscas híbridas vetoriais e escalares no Milvus ou no Zilliz Cloud para obter resultados mais precisos que atendam às suas necessidades específicas. Você pode limitar sua busca com determinadas condições especificando expressões booleanas que filtram os campos escalares ou o campo de chave primária. Você pode usar qualquer campo, exceto o vetor de embedding, na expressão de filtro e pesquisar o campo do vetor de embedding usando o índice vetorial. O Milvus ou o Zilliz Cloud lida automaticamente com ambas as operações quando você especifica uma expressão de filtro no seu comando de busca.
O código completo desta demonstração está neste notebook; role para baixo até a Célula#27. Experimente.
Continue lendo

Introducing Business Critical Plan: Enterprise-Grade Security and Compliance for Mission-Critical AI Applications
Discover Zilliz Cloud’s Business Critical Plan—offering advanced security, compliance, and uptime for mission-critical AI and vector database workloads.

VidTok: Rethinking Video Processing with Compact Tokenization
VidTok tokenizes videos to reduce redundancy while preserving spatial and temporal details for efficient processing.

Selecting the Right ETL Tools for Unstructured Data to Prepare for AI
Learn the right ETL tools for unstructured data to power AI. Explore key challenges, tool comparisons, and integrations with Milvus for vector search.



