diff --git a/llama_stack/providers/remote/vector_io/milvus/milvus.py b/llama_stack/providers/remote/vector_io/milvus/milvus.py index 381f38208..3130ae656 100644 --- a/llama_stack/providers/remote/vector_io/milvus/milvus.py +++ b/llama_stack/providers/remote/vector_io/milvus/milvus.py @@ -8,6 +8,7 @@ import asyncio import json import logging import os +import re from typing import Any from numpy.typing import NDArray @@ -43,6 +44,14 @@ OPENAI_VECTOR_STORES_FILES_PREFIX = f"openai_vector_stores_files:milvus:{VERSION OPENAI_VECTOR_STORES_FILES_CONTENTS_PREFIX = f"openai_vector_stores_files_contents:milvus:{VERSION}::" +def sanitize_collection_name(name: str) -> str: + """ + Sanitize collection name to ensure it only contains numbers, letters, and underscores. + Any other characters are replaced with underscores. + """ + return re.sub(r"[^a-zA-Z0-9_]", "_", name) + + class MilvusIndex(EmbeddingIndex): def __init__( self, client: MilvusClient, collection_name: str, consistency_level="Strong", kvstore: KVStore | None = None diff --git a/llama_stack/providers/utils/memory/openai_vector_store_mixin.py b/llama_stack/providers/utils/memory/openai_vector_store_mixin.py index 7c97ff7f6..696bb837b 100644 --- a/llama_stack/providers/utils/memory/openai_vector_store_mixin.py +++ b/llama_stack/providers/utils/memory/openai_vector_store_mixin.py @@ -147,7 +147,7 @@ class OpenAIVectorStoreMixin(ABC): provider_vector_db_id: str | None = None, ) -> VectorStoreObject: """Creates a vector store.""" - store_id = name or str(uuid.uuid4()) + store_id = f"vs_{str(uuid.uuid4())}" created_at = int(time.time()) if provider_id is None: @@ -186,7 +186,7 @@ class OpenAIVectorStoreMixin(ABC): "id": store_id, "object": "vector_store", "created_at": created_at, - "name": store_id, + "name": name, "usage_bytes": 0, "file_counts": file_counts.model_dump(), "status": status,