Handle Qdrant create_collection wait support
This commit is contained in:
+17
-14
@@ -67,20 +67,23 @@ def get_embedding_size() -> int:
|
||||
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,
|
||||
)
|
||||
variants = (
|
||||
{"vectors_config": vector_params, "wait": True},
|
||||
{"vectors_config": vector_params},
|
||||
{"vectors": vector_params, "wait": True},
|
||||
{"vectors": vector_params},
|
||||
)
|
||||
last_error = None
|
||||
for kwargs in variants:
|
||||
try:
|
||||
client.create_collection(collection_name=collection_name, **kwargs)
|
||||
return
|
||||
except (AssertionError, TypeError, ValueError) as exc:
|
||||
last_error = exc
|
||||
message = str(exc)
|
||||
if not any(key in message for key in ("Unknown arguments", "vectors", "wait")):
|
||||
raise
|
||||
raise RuntimeError(f"Could not create Qdrant collection: {last_error}")
|
||||
|
||||
|
||||
async def ensure_collection(vector_size: Optional[int] = None) -> Dict[str, Any]:
|
||||
|
||||
Reference in New Issue
Block a user