Adding a must-not condition excludes any result where that condition is true. Use must-not conditions to remove unwanted results, such as filtering out discontinued products or blocked content.
Before you begin, make sure you have a running VectorAI DB instance and a products collection with 128-dimensional vectors and payload fields: category (string) and price (float).
from actian_vectorai import VectorAIClient, FilterBuilder, Field
import random
# Connect to VectorAI DB server
with VectorAIClient("localhost:50051") as client:
# Generate query vector
query_vector = [random.gauss(0, 1) for _ in range(128)]
# Filter: exclude electronics AND exclude expensive items (>= $100)
filter = FilterBuilder()\
.must_not(Field("category").eq("electronics"))\
.must_not(Field("price").gte(100.0))\
.build()
# Search with filter
results = client.points.search(
"products", # Collection name
vector=query_vector, # Query vector
limit=10, # Maximum results
filter=filter # Apply filter
)
# Display results
for result in results:
print(f"ID: {result.id}")
print(f"Category: {result.payload['category']}")
print(f"Price: ${result.payload['price']}")
print("-" * 50)
Each result includes these fields:
id: The unique identifier of the matching point.
score: Similarity score based on vector distance.
payload: Full metadata dictionary for the matching point.