File size: 2,239 Bytes
24f3fb6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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")