{"record":{"id":"a320517ac02272db","repo":"microsoft/semantic-kernel","slug":"vector-dimension-must-be-a-positive-integer","errorCode":null,"errorMessage":"Vector dimension must be a positive integer","messagePattern":"Vector dimension must be a positive integer","errorType":"exception","errorClass":"MemoryConnectorInitializationError","httpStatus":null,"severity":"error","filePath":"python/semantic_kernel/connectors/memory_stores/redis/redis_memory_store.py","lineNumber":103,"sourceCode":"            vector_distance_metric (str): Metric for measuring vector distances, defaults to COSINE\n            vector_type (str): Vector type, defaults to FLOAT32\n            vector_index_algorithm (str): Indexing algorithm for vectors, defaults to HNSW\n            query_dialect (int): Query dialect, must be 2 or greater for vector similarity searching, defaults to 2\n            env_file_path (str | None): Use the environment settings file as a fallback to\n                environment variables, defaults to False\n            env_file_encoding (str | None): Encoding of the environment settings file, defaults to \"utf-8\"\n        \"\"\"\n        try:\n            redis_settings = RedisSettings(\n                connection_string=connection_string,\n                env_file_path=env_file_path,\n                env_file_encoding=env_file_encoding,\n            )\n        except ValidationError as ex:\n            raise MemoryConnectorInitializationError(\"Failed to create Redis settings.\", ex) from ex\n\n        if vector_size <= 0:\n            raise MemoryConnectorInitializationError(\"Vector dimension must be a positive integer\")\n\n        self._database = redis.Redis.from_url(redis_settings.connection_string.get_secret_value())\n        self._ft = self._database.ft\n\n        self._query_dialect = query_dialect\n        self._vector_distance_metric = vector_distance_metric\n        self._vector_index_algorithm = vector_index_algorithm\n        self._vector_type_str = vector_type\n        self._vector_type = np.float32 if vector_type == \"FLOAT32\" else np.float64\n        self._vector_size = vector_size\n\n    async def close(self):\n        \"\"\"Closes the Redis database connection.\"\"\"\n        logger.info(\"Closing Redis connection\")\n        self._database.close()\n\n    async def create_collection(self, collection_name: str) -> None:\n        \"\"\"Creates a collection.","sourceCodeStart":85,"sourceCodeEnd":121,"githubUrl":"https://github.com/microsoft/semantic-kernel/blob/c028a0c7dc4f0814cdcbaba9d998f187a41197bf/python/semantic_kernel/connectors/memory_stores/redis/redis_memory_store.py#L85-L121","documentation":"Raised by RedisMemoryStore.__init__() when vector_size <= 0, before the Redis client is created. MemoryConnectorInitializationError with literal message 'Vector dimension must be a positive integer'. vector_size defaults to 1536 but is overridden by the caller.","triggerScenarios":"Constructing RedisMemoryStore(connection_string=..., vector_size=N) with N <= 0; commonly when N is computed from an unset config value.","commonSituations":"Unset embedding-dimension setting coerced to 0; negative value from a misparsed env var; logic that derives vector_size from a failed model probe.","solutions":["Pass a positive vector_size matching the embedding model (e.g. 1536 for ada-002).","Validate config: assert vector_size > 0 before constructing the store.","Default to the embedding generator's documented dimension.","Fix the upstream source of the value (env var, settings)."],"exampleFix":"// before\nstore = RedisMemoryStore(conn_str, vector_size=int(os.getenv('DIM') or 0))\n// after\ndim = int(os.getenv('DIM') or 1536)\nassert dim > 0\nstore = RedisMemoryStore(conn_str, vector_size=dim)","handlingStrategy":"validation","validationCode":"assert isinstance(vector_size, int) and vector_size > 0, 'vector_size must be positive'\nstore = RedisMemoryStore(connection_string=conn, vector_size=vector_size)","typeGuard":"def valid_vector_size(n) -> bool:\n    return isinstance(n, int) and n > 0","tryCatchPattern":null,"preventionTips":["Default vector_size to the embedding model's real dimension (1536), never 0.","Validate env-sourced ints before construction.","Fail in config loading rather than at RedisMemoryStore init."],"tags":["redis","memory-store","dimensionality","configuration","memory-connector-initialization-error"],"backgroundTag":null,"analyzedSha":"c028a0c7dc4f0814cdcbaba9d998f187a41197bf","analyzedAt":"2026-08-13T13:48:05.040Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}