import random
from actian_vectorai import VectorAIClient, PointStruct
DIMENSION = 128
COLLECTION = "products"
# Connect to VectorAI DB server
with VectorAIClient("localhost:50051") as client:
random.seed(42) # Reproducible random vectors
# Prepare batch data
products = [
{"name": "Smartphone", "category": "electronics", "price": 699.99, "in_stock": True},
{"name": "Tablet", "category": "electronics", "price": 499.99, "in_stock": True},
{"name": "T-Shirt", "category": "clothing", "price": 29.99, "in_stock": True},
{"name": "Jeans", "category": "clothing", "price": 79.99, "in_stock": False},
{"name": "Coffee Beans", "category": "food", "price": 12.99, "in_stock": True},
{"name": "Energy Bar", "category": "food", "price": 2.99, "in_stock": True},
{"name": "Python Book", "category": "books", "price": 39.99, "in_stock": False},
{"name": "AI Textbook", "category": "books", "price": 89.99, "in_stock": True},
{"name": "Action Figure", "category": "toys", "price": 24.99, "in_stock": True},
{"name": "Board Game", "category": "toys", "price": 49.99, "in_stock": False}
]
# Create points with vectors and payloads
points = [
PointStruct(
id=i + 1, # Point ID
vector=[random.gauss(0, 1) for _ in range(DIMENSION)], # Generate vector
payload=payload # Attach metadata (optional)
)
for i, payload in enumerate(products)
]
# Batch insert all points
client.points.upsert(COLLECTION, points)
print(f"Successfully inserted {len(points)} points")