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