import numpy as np
from bitpolar_embeddings.qdrant import BitPolarQdrantIndex
print("=== BitPolar + Qdrant Two-Phase Search ===\n")
try:
from qdrant_client import QdrantClient
client = QdrantClient(":memory:")
index = BitPolarQdrantIndex(
client=client,
collection_name="demo",
dim=128,
bits=4,
oversampling_factor=3, )
index.create_collection()
n = 500
vectors = [np.random.randn(128).astype(np.float32) for _ in range(n)]
index.upsert_vectors(
ids=list(range(n)),
vectors=vectors,
payloads=[{"label": f"vec_{i}"} for i in range(n)],
)
print(f"Indexed {n} vectors with BitPolar compression")
query = np.random.randn(128).astype(np.float32)
results = index.search(query, top_k=5, use_bitpolar_rerank=True)
print(f"\nTop 5 results (HNSW + BitPolar re-ranking):")
for r in results:
print(f" ID={r['id']}, score={r['score']:.4f}, label={r['payload'].get('label', '?')}")
results_no_rerank = index.search(query, top_k=5, use_bitpolar_rerank=False)
print(f"\nTop 5 results (HNSW only, no re-ranking):")
for r in results_no_rerank:
print(f" ID={r['id']}, score={r['score']:.4f}")
except ImportError:
print("qdrant-client not installed — skipping")
print("Install with: pip install qdrant-client")