diff --git a/src/llama_stack/core/routers/vector_io.py b/src/llama_stack/core/routers/vector_io.py index 78b38ba95..2e2b8cbca 100644 --- a/src/llama_stack/core/routers/vector_io.py +++ b/src/llama_stack/core/routers/vector_io.py @@ -20,6 +20,8 @@ from llama_stack.apis.vector_io import ( SearchRankingOptions, VectorIO, VectorStoreChunkingStrategy, + VectorStoreChunkingStrategyStatic, + VectorStoreChunkingStrategyStaticConfig, VectorStoreDeleteResponse, VectorStoreFileBatchObject, VectorStoreFileContentsResponse, @@ -167,6 +169,13 @@ class VectorIORouter(VectorIO): if embedding_dimension is not None: params.model_extra["embedding_dimension"] = embedding_dimension + # Set chunking strategy explicitly if not provided + if params.chunking_strategy is None or params.chunking_strategy.type == "auto": + # actualize the chunking strategy to static + params.chunking_strategy = VectorStoreChunkingStrategyStatic( + static=VectorStoreChunkingStrategyStaticConfig() + ) + return await provider.openai_create_vector_store(params) async def openai_list_vector_stores( diff --git a/src/llama_stack/providers/utils/memory/openai_vector_store_mixin.py b/src/llama_stack/providers/utils/memory/openai_vector_store_mixin.py index f3c9a3140..d047d9d12 100644 --- a/src/llama_stack/providers/utils/memory/openai_vector_store_mixin.py +++ b/src/llama_stack/providers/utils/memory/openai_vector_store_mixin.py @@ -26,6 +26,7 @@ from llama_stack.apis.vector_io import ( VectorStoreChunkingStrategy, VectorStoreChunkingStrategyAuto, VectorStoreChunkingStrategyStatic, + VectorStoreChunkingStrategyStaticConfig, VectorStoreContent, VectorStoreDeleteResponse, VectorStoreFileBatchObject, @@ -414,6 +415,10 @@ class OpenAIVectorStoreMixin(ABC): in_progress=0, total=0, ) + if not params.chunking_strategy or params.chunking_strategy.type == "auto": + chunking_strategy = VectorStoreChunkingStrategyStatic(static=VectorStoreChunkingStrategyStaticConfig()) + else: + chunking_strategy = params.chunking_strategy store_info: dict[str, Any] = { "id": vector_store_id, "object": "vector_store", @@ -426,7 +431,7 @@ class OpenAIVectorStoreMixin(ABC): "expires_at": None, "last_active_at": created_at, "file_ids": [], - "chunking_strategy": params.chunking_strategy, + "chunking_strategy": chunking_strategy.model_dump(), } # Add provider information to metadata if provided diff --git a/tests/integration/vector_io/test_openai_vector_stores.py b/tests/integration/vector_io/test_openai_vector_stores.py index b05728ae2..97ce4abe8 100644 --- a/tests/integration/vector_io/test_openai_vector_stores.py +++ b/tests/integration/vector_io/test_openai_vector_stores.py @@ -679,7 +679,7 @@ def test_openai_vector_store_attach_file( assert file_attach_response.id == file.id assert file_attach_response.vector_store_id == vector_store.id assert file_attach_response.status == "completed" - assert file_attach_response.chunking_strategy.type == "auto" + assert file_attach_response.chunking_strategy.type == "static" assert file_attach_response.created_at > 0 assert not file_attach_response.last_error @@ -815,8 +815,8 @@ def test_openai_vector_store_list_files( assert set(file_ids) == {file.id for file in files_list.data} assert files_list.data[0].object == "vector_store.file" assert files_list.data[0].vector_store_id == vector_store.id - assert files_list.data[0].status == "completed" - assert files_list.data[0].chunking_strategy.type == "auto" + assert files_list.data[0].status in ["completed", "in_progress"] + assert files_list.data[0].chunking_strategy.type == "static" assert files_list.data[0].created_at > 0 assert files_list.first_id == files_list.data[0].id assert not files_list.data[0].last_error