Must filters require all specified conditions to be true. Use must filters when you need strict requirements, such as filtering by user permissions, availability status, or regulatory constraints.
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: category must equal "electronics" AND price < $100
filter = FilterBuilder()\
.must(Field("category").eq("electronics"))\
.must(Field("price").lt(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}, Score: {result.score}")
print(f"Category: {result.payload['category']}")
print(f"Price: ${result.payload['price']}")
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.