object-memory / qdrant_utils /migrate_vector_db.py
russ4stall
fresh history
24f3fb6
from qdrant_client import QdrantClient
from core.clients import get_qdrant
from core.config import QDRANT_COLLECTION
from qdrant_client.http.models import PointStruct
client = get_qdrant()
collection_name = QDRANT_COLLECTION
# 2. Recreate with named vectors
from qdrant_client.http.models import VectorParams, Distance, VectorParamsDiff
from qdrant_client.models import CreateAliasOperation, CreateAlias, DeleteAliasOperation
#new_collection_name = f"{collection_name}_v2"
#client.create_collection(
# collection_name=new_collection_name,
# vectors_config={
# "clip_text_embedding": VectorParams(size=512, distance=Distance.COSINE),
# "clip_image_embedding": VectorParams(size=512, distance=Distance.COSINE),
# "dinov2_embedding": VectorParams(size=1024, distance=Distance.COSINE)
# }
#)
# Step 1: Create a temporary alias for the old collection
client.update_collection_aliases(
change_aliases_operations=[
CreateAliasOperation(
create_alias=CreateAlias(
collection_name="object_collection",
alias_name="object_collection_v1"
)
)
]
)
print("βœ“ Created temporary alias: 'object_collection_v1' points to old collection")
# Step 2: Delete the old collection (now accessible via object_collection_old)
client.delete_collection("object_collection")
print("βœ“ Deleted old collection (still accessible as 'object_collection_v1')")
# Step 3: Create the main alias pointing to your new collection
client.update_collection_aliases(
change_aliases_operations=[
CreateAliasOperation(
create_alias=CreateAlias(
collection_name="object_collection_v2",
alias_name="object_collection"
)
)
]
)
print("βœ“ Created main alias: 'object_collection' now points to 'object_collection_v2'")
# Step 4: Clean up - delete the temporary alias (optional)
#client.update_collection_aliases(
# change_aliases_operations=[
# DeleteAliasOperation(
# delete_alias="object_collection_old"
# )
# ]
#)
#print("βœ“ Cleaned up temporary alias")
print("\nπŸŽ‰ Swap complete! 'object_collection' now uses your new collection with DINOv2 support")