Filtraggio dei metadati con Zilliz Cloud Pipelines
Una domanda frequente che sento è: “Ho bisogno di un normale database SQL oltre al mio database vettoriale?” Questa domanda può essere necessaria se includi informazioni aggiuntive con i dati non strutturati. Inoltre, puoi filtrare i dati per scopi aziendali prima di eseguire una ricerca per similarità semantica. Ad esempio:
In un contesto legale, potresti dover cercare blocchi di testo solo dal tuo database di contratti o da un contratto specifico.
Nel retail, potresti voler restringere la ricerca a una particolare taglia di scarpe da uomo.
Nella ricerca di immagini, potresti voler trovare poster di film usciti tra il 2010 e il 2016, con punteggi IMDB superiori a 7,0.
Tornando alla domanda sopra, la mia risposta è “No, non devi preoccupartene quando usi il database vettoriale Milvus o Zilliz Cloud, il Milvus completamente gestito.” Con Milvus, puoi eseguire una ricerca ibrida vettoriale e scalare per ottenere una precisione migliore.
Nelle sezioni seguenti, parleremo di filtraggio scalare o dei metadati e di come puoi eseguire il filtraggio dei metadati in Zilliz Cloud. Questo blog continua il mio blog precedente su come iniziare con RAG in soli 5 minuti. Puoi trovare il suo codice in questo notebook e scorrere fino alla Cella #27.
Come comprendere il filtraggio dei metadati in Milvus?
Il database vettoriale Milvus ti consente di eseguire ricerche vettoriali applicando espressioni booleane e limitandole con condizioni sugli attributi dei tuoi dati. Gli attributi possono essere qualsiasi campo tranne il vettore di embedding dei dati non strutturati. Inoltre, il filtraggio dei metadati coesiste con la ricerca vettoriale in Milvus. Puoi utilizzare qualsiasi campo diverso dal campo del vettore di embedding nell’espressione di filtro e usare l’indice vettoriale per cercare nel campo del vettore di embedding. Milvus gestisce automaticamente entrambe le operazioni quando specifichi un’espressione di filtro nel tuo comando di ricerca.
Come eseguire il filtraggio dei metadati in Zilliz Cloud?
Per iniziare a iterare rapidamente, userò Zilliz Cloud (Free Tier), il Milvus completamente gestito, in questa guida. Ospita il tuo database su un server cloud serverless, ma puoi comunque interagire con esso localmente effettuando chiamate API PyMilvus. Userò anche Zilliz Cloud Pipelines, una funzionalità integrata, per codificare i dati non strutturati in embedding vettoriali per operazioni più snelle.
I dati qui sotto provengono dalle nostre pagine di documentazione della Documentazione di Milvus.
Passaggio 1: Crea una collection (tabella del database) e le pipeline
Carica i tuoi dati su S3 o GCS.
Apri un’altra finestra del browser su https://cloud.zilliz.com/ e crea un cluster “Starter”.
- Aggiungi il nome della collection e fai clic su “Create Collection and Cluster”.
Nota: Quando crei il tuo primo cluster Zilliz Cloud, crei anche una nuova collection per impostazione predefinita. Quando usi Zilliz Cloud Pipelines, creerai un’altra nuova collection.
- Naviga tramite il menu sul lato sinistro fino a Pipelines e segui i passaggi guidati per caricare i tuoi dati.
a. Inizia con “Ingestion Pipeline.”
b. Seleziona il nome del tuo cluster, aggiungi i nomi della collection e della pipeline, quindi fai clic su “Add a Function.”
c. Aggiungi un nome e fai clic su “Add”. In questo passaggio della pipeline, non puoi modificare nulla.
d. Facoltativo: fai di nuovo clic su “Add a Function”
e. Facoltativo: assegna un nome al passaggio del campo dei metadati, al campo dei metadati e al tipo. Fai clic su “Add”.
- Fai clic su “Create Ingestion Pipeline”. Ora hai creato una nuova Ingestion Pipeline e una nuova Collection.
Fai clic su “Create Deletion and Search Pipelines” per creare pipeline di eliminazione e ricerca.
Per trovare la pipeline “Ingestion,” fai clic sull’icona Run > sotto “Actions.”
- Punta ai tuoi dati. In AWS, il modo più semplice è un URL prefirmato temporaneo. Seleziona quando vuoi condividerlo, quindi Copy the pre-signed URL.
- Incolla l’URL prefirmato e fai clic su “Run.”
- Aggiorna il browser e verifica se la nuova collection e lo schema sono corretti.
Esegui query nella console web o usando chiamate API.
Passaggio 2. Cerca nella console web
Trova la Pipeline “Search” sotto Actions > fai clic sull’icona Run.
Nell’interfaccia utente, digita la tua domanda e fai clic su “Run.”
Modifica il “filter” usando un’espressione booleana. Dovresti vedere che il filtro è stato applicato ai risultati della ricerca.
Ecco fatto! Puoi usare espressioni booleane per filtrare la ricerca usando qualsiasi campo diverso dal vettore di embedding dei dati non strutturati. Il campo del vettore di embedding viene cercato usando l’indice vettoriale AUTOINDEX in Pipelines.
Inoltre, in Pipelines, gli embedding sono normalizzati in modo che le metriche IP e distanza coseno funzionino in modo equivalente. Il modello di embedding predefinito usato in Pipelines, al momento, è bge-large-en-v1.5.
Passaggio 3. Cerca tramite API
Puoi anche cercare usando chiamate API (il codice Python è in questo notebook; scorri verso il basso fino alla Cell#27. )
Avrai bisogno di due cose.
Token API Zilliz
Pipeline-ID
Puoi ottenere il Token API dalla schermata principale del Cluster.
Per ottenere il Pipeline-ID, trova la Pipeline “Search,” guarda nella colonna “Pipeline-ID” e fai clic sull’icona di copia. Incolla il Pipeline ID nell’URL della tua chiamata 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'"
}
}
# Invia la richiesta POST
response = requests.post(url, headers=headers, json=data)
Ecco fatto! Ora hai imparato come eseguire una ricerca con filtro in Zilliz Cloud tramite API.
Riepilogo
Come l’unione dei dati in un database SQL per consentirti di eseguire query SQL, il filtraggio dei metadati ti permette di eseguire ricerche ibride vettoriali e scalari in Milvus o Zilliz Cloud per ottenere risultati più precisi, adatti alle tue esigenze specifiche. Puoi limitare la ricerca con determinate condizioni specificando espressioni booleane che filtrano i campi scalari o il campo della chiave primaria. Puoi usare qualsiasi campo, tranne il vettore di embedding, nell’espressione di filtro e cercare nel campo del vettore di embedding utilizzando l’indice vettoriale. Milvus o Zilliz Cloud gestisce automaticamente entrambe le operazioni quando specifichi un’espressione di filtro nel comando di ricerca.
Il codice completo di questa demo è in questo notebook; scorri fino alla Cell#27. Provalo.
Continua a leggere

Top 10 Context Engineering Techniques You Should Know for Production RAG
A practical guide to context engineering for production LLM systems, covering RAG, context processing, memory, agents, and multimodal context.

AI Agents Are Quietly Transforming E-Commerce — Here’s How
Discover how AI agents transform e-commerce with autonomous decision-making, enhanced product discovery, and vector search capabilities for today's retailers.

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.



