Support Qdrant collection API variants
This commit is contained in:
+21
-10
@@ -64,6 +64,25 @@ def get_embedding_size() -> int:
|
||||
return 384
|
||||
|
||||
|
||||
def create_collection(client: Any, collection_name: str, size: int, distance: Any) -> None:
|
||||
"""Create a Qdrant collection across qdrant-client keyword changes."""
|
||||
vector_params = VectorParams(size=size, distance=distance)
|
||||
try:
|
||||
client.create_collection(
|
||||
collection_name=collection_name,
|
||||
vectors_config=vector_params,
|
||||
wait=True,
|
||||
)
|
||||
except TypeError as exc:
|
||||
if "vectors_config" not in str(exc):
|
||||
raise
|
||||
client.create_collection(
|
||||
collection_name=collection_name,
|
||||
vectors=vector_params,
|
||||
wait=True,
|
||||
)
|
||||
|
||||
|
||||
async def ensure_collection(vector_size: Optional[int] = None) -> Dict[str, Any]:
|
||||
"""
|
||||
Ensure the Qdrant collection exists with proper schema.
|
||||
@@ -91,11 +110,7 @@ async def ensure_collection(vector_size: Optional[int] = None) -> Dict[str, Any]
|
||||
|
||||
if not collection_exists:
|
||||
# Create new collection
|
||||
client.create_collection(
|
||||
collection_name=_collection_name,
|
||||
vectors=VectorParams(size=size, distance=distance),
|
||||
wait=True
|
||||
)
|
||||
create_collection(client, _collection_name, size, distance)
|
||||
|
||||
return {
|
||||
"success": True,
|
||||
@@ -112,11 +127,7 @@ async def ensure_collection(vector_size: Optional[int] = None) -> Dict[str, Any]
|
||||
if current_size != size:
|
||||
# Collection exists with wrong size - delete and recreate
|
||||
client.delete_collection(_collection_name)
|
||||
client.create_collection(
|
||||
collection_name=_collection_name,
|
||||
vectors=VectorParams(size=size, distance=distance),
|
||||
wait=True
|
||||
)
|
||||
create_collection(client, _collection_name, size, distance)
|
||||
|
||||
return {
|
||||
"success": True,
|
||||
|
||||
Reference in New Issue
Block a user