Skip to main content
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.