Filtrado de metadatos con Zilliz Cloud Pipelines
Una pregunta común que escucho es: “¿Necesito una base de datos SQL normal además de mi base de datos vectorial?” Esta pregunta puede ser necesaria si incluyes información adicional con los datos no estructurados. Además, puedes filtrar los datos con fines empresariales antes de realizar una búsqueda de similitud semántica. Por ejemplo:
En un contexto legal, es posible que necesites buscar fragmentos de texto solo de tu base de datos de contratos o de un contrato específico.
En retail, es posible que quieras limitar tu búsqueda a una talla particular de zapatos de hombre.
En búsqueda de imágenes, es posible que quieras encontrar pósteres de películas estrenadas durante 2010-2016, con puntuaciones de IMDB superiores a 7.0.
Volviendo a la pregunta anterior, mi respuesta es “No, no tienes que preocuparte por ello cuando usas la base de datos vectorial Milvus o Zilliz Cloud, el Milvus totalmente gestionado.” Con Milvus, puedes realizar búsquedas híbridas vectoriales y escalares para lograr una mayor precisión.
En las siguientes secciones, analizaremos el filtrado escalar o de metadatos y cómo puedes realizar filtrado de metadatos en Zilliz Cloud. Este blog continúa mi blog anterior sobre cómo empezar con RAG en solo 5 minutos. Puedes encontrar su código en este notebook y desplazarte hacia abajo hasta la celda #27.
¿Cómo entender el filtrado de metadatos en Milvus?
La base de datos vectorial Milvus te permite realizar búsquedas vectoriales aplicando expresiones booleanas y limitándolas con condiciones sobre los atributos de tus datos. Los atributos pueden ser cualquier campo excepto el vector de embedding de datos no estructurados. Además, el filtrado de metadatos coexiste con la búsqueda vectorial en Milvus. Puedes usar cualquier campo que no sea el campo de vector de embedding en la expresión de filtro y usar el índice vectorial para buscar en el campo de vector de embedding. Milvus gestiona automáticamente ambas operaciones cuando especificas una expresión de filtro en tu comando de búsqueda.
¿Cómo realizar filtrado de metadatos en Zilliz Cloud?
Para empezar a iterar rápidamente, usaré Zilliz Cloud (Free Tier), el Milvus totalmente gestionado, en esta guía. Aloja tu base de datos en un servidor cloud serverless, pero aún puedes interactuar con ella localmente haciendo llamadas a la API de PyMilvus. También usaré Zilliz Cloud Pipelines, una función integrada, para codificar datos no estructurados en embeddings vectoriales y agilizar las operaciones.
Los datos a continuación provienen de nuestras páginas de documentación de Milvus Documentation.
Paso 1: Crear una colección (tabla de base de datos) y pipelines
Sube tus datos a S3 o GCS.
Abre otra ventana del navegador en https://cloud.zilliz.com/ y crea un clúster “Starter”.
- Añade el nombre de la colección y haz clic en “Create Collection and Cluster”.
Nota: Cuando creas tu primer clúster de Zilliz Cloud, también creas una nueva colección de forma predeterminada. Cuando uses Zilliz Cloud Pipelines, crearás otra colección nueva.
- Navega por el menú del lado izquierdo hasta Pipelines y sigue los pasos guiados para subir tus datos.
a. Comienza con “Ingestion Pipeline.”
b. Selecciona el nombre de tu clúster, añade los nombres de la colección y del pipeline, y haz clic en “Add a Function.”
c. Agrega un nombre y haz clic en “Add”. En este paso del pipeline, no puedes modificar nada.
d. Opcional: Haz clic en “Add a Function” de nuevo
e. Opcional: Nombra el paso del campo de metadatos, el campo de metadatos y el tipo. Haz clic en “Add”.
- Haz clic en “Create Ingestion Pipeline”. Ahora, has creado un nuevo Ingestion Pipeline y una nueva Collection.
Haz clic en “Create Deletion and Search Pipelines” para crear pipelines de eliminación y búsqueda.
Para encontrar el pipeline “Ingestion,” haz clic en el icono Run > debajo de “Actions.”
- Apunta a tus datos. En AWS, la forma más sencilla es una URL prefirmada temporal. Selecciona cuándo quieres compartirla y luego copia la URL prefirmada.
- Pega la URL prefirmada y haz clic en “Run.”
- Actualiza tu navegador y comprueba si la nueva colección y el esquema son correctos.
Consulta en la consola web o usando llamadas a la API.
Paso 2. Buscar en la consola web
Encuentra el Pipeline “Search” debajo de Actions > haz clic en el icono Run.
En la interfaz de usuario, escribe tu pregunta y haz clic en “Run.”
Edita el “filter” usando una expresión booleana. Deberías ver que el filtro se aplicó a los resultados de búsqueda.
¡Eso es todo! Puedes usar expresiones booleanas para filtrar la búsqueda usando cualquier campo que no sea el vector de embedding de datos no estructurados. El campo de vector de embedding se busca usando el índice vectorial AUTOINDEX en Pipelines.
Además, en Pipelines, los embeddings se normalizan para que las métricas de IP y distancia coseno funcionen de manera equivalente. El modelo de embedding predeterminado usado en Pipelines, por el momento, es bge-large-en-v1.5.
Paso 3. Buscar mediante API
También podrías buscar usando llamadas a la API (el código Python está en este notebook; desplázate hacia abajo hasta Cell#27. )
Necesitarás dos cosas.
Token de API de Zilliz
Pipeline-ID
Puedes obtener el Token de API desde la pantalla principal del Cluster.
Para obtener el Pipeline-ID, encuentra el Pipeline “Search,” mira en la columna “Pipeline-ID” y haz clic en el icono de copiar. Pega el Pipeline ID en la URL de tu llamada a la 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)
¡Eso es todo! Ahora has aprendido cómo realizar una búsqueda con filtro en Zilliz Cloud mediante API.
Resumen
Al igual que unir datos en una base de datos SQL para permitirte realizar consultas SQL, el filtrado de metadatos te permite realizar búsquedas híbridas vectoriales y escalares en Milvus o Zilliz Cloud para obtener resultados más precisos que se adapten a tus necesidades específicas. Puedes limitar tu búsqueda con ciertas condiciones especificando expresiones booleanas que filtren los campos escalares o el campo de clave primaria. Puedes usar cualquier campo, excepto el vector de embeddings, en la expresión de filtro y buscar en el campo de vector de embeddings usando el índice vectorial. Milvus o Zilliz Cloud gestiona automáticamente ambas operaciones cuando especificas una expresión de filtro en tu comando de búsqueda.
El código completo de esta demo está en este notebook; desplázate hacia abajo hasta Cell#27. Pruébalo.
Sigue leyendo

Build Multimodal Search for 3D Assets with Tripo and Zilliz Cloud
Generate 3D assets with Tripo, then search them by text, image, and metadata with multimodal embeddings and Zilliz Cloud.

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.

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.



