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:6574") 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']}")
import { VectorAIClient, FilterBuilder, Field } from '@actian/vectorai-client';
async function main() {
// Connect to VectorAI DB server
const client = new VectorAIClient('localhost:6574');
// Generate query vector
const queryVector = Array.from({ length: 128 }, () => Math.random() * 2 - 1);
// Filter: category must equal "electronics" AND price < $100
const filter = new FilterBuilder()
.must(new Field('category').eq('electronics'))
.must(new Field('price').lt(100.0))
.build();
// Search with filter
const results = await client.points.search('products', queryVector, {
filter: filter,
limit: 10
});
// Display results
for (const result of results) {
console.log(`ID: ${result.id}, Score: ${result.score}`);
console.log(`Category: ${result.payload.category}`);
console.log(`Price: $${result.payload.price}`);
}
}
main().catch(console.error);
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.