{"record":{"id":"dea3ffb408eb34de","repo":"cocoindex-io/cocoindex","slug":"invalid-vector-dimension-vector-schema-size-dea3ff","errorCode":null,"errorMessage":"Invalid vector dimension: {vector_schema.size}","messagePattern":"Invalid vector dimension: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/cocoindex/connectors/neo4j/_target.py","lineNumber":315,"sourceCode":"async def _get_type_mapping(\n    python_type: Any, *, vector_schema: res_schema.VectorSchema | None = None\n) -> _TypeMapping:\n    type_info = analyze_type_info(python_type)\n\n    for annotation in type_info.annotations:\n        if isinstance(annotation, Neo4jType):\n            return _TypeMapping(annotation.neo4j_type, annotation.encoder)\n\n    base_type = type_info.base_type\n\n    if base_type in _LEAF_TYPE_MAPPINGS:\n        return _LEAF_TYPE_MAPPINGS[base_type]\n\n    if base_type is np.ndarray:\n        if vector_schema is None:\n            raise ValueError(\"VectorSchemaProvider is required for NumPy ndarray type.\")\n        if vector_schema.size <= 0:\n            raise ValueError(f\"Invalid vector dimension: {vector_schema.size}\")\n        return _TypeMapping(\n            neo4j_type=\"LIST<FLOAT>\",\n            encoder=_ndarray_to_list,\n        )\n    elif vector_schema is not None:\n        raise ValueError(\n            \"VectorSchemaProvider is only supported for NumPy ndarray type. \"\n            f\"Got type: {python_type}\"\n        )\n\n    if isinstance(type_info.variant, (SequenceType,)):\n        return _ARRAY_MAPPING\n    if isinstance(type_info.variant, (MappingType, RecordType, UnionType, AnyType)):\n        return _OBJECT_MAPPING\n\n    return _OBJECT_MAPPING\n\n","sourceCodeStart":297,"sourceCodeEnd":333,"githubUrl":"https://github.com/cocoindex-io/cocoindex/blob/e84aa99b3292c5270a4b313b2a7137ad9ce8ab3b/python/cocoindex/connectors/neo4j/_target.py#L297-L333","documentation":"This ValueError is raised by _get_type_mapping when a VectorSchemaProvider is supplied for an np.ndarray column but its size is zero or negative. Neo4j LIST<FLOAT> mapping requires a positive vector dimension. It complements the missing-provider check on the preceding line.","triggerScenarios":"Constructing VectorSchemaProvider(size=0) or a negative size — e.g. dimension read from an uninitialized embedding model config, a defaulted 0, or computed dimension that evaluated to 0.","commonSituations":"Embedding dimension not yet known at schema-build time (placeholder 0); config file with a missing/zero 'dimensions' value; programmatically deriving size from an empty shape.","solutions":["Construct the provider with the real embedding dimension, e.g. VectorSchemaProvider(size=384).","Validate size > 0 where the dimension is loaded from config.","Ensure the embedding model is initialized so its dimension is known before schema construction."],"exampleFix":"// before\nVectorSchemaProvider(size=0)\n// after\nVectorSchemaProvider(size=1536)","handlingStrategy":"validation","validationCode":"if vector_schema is not None and vector_schema.size <= 0:\n    raise ValueError(\"VectorSchemaProvider size must be > 0 (set the embedding dimension)\")","typeGuard":null,"tryCatchPattern":"try:\n    schema = await TableSchema.from_class(Record, column_overrides=overrides)\nexcept ValueError as e:\n    raise RuntimeError(\"vector dimension misconfigured; check EMBED_DIM\") from e","preventionTips":["Initialize the embedding model before constructing schema overrides","Fail fast at config load if dimensions is missing or 0","Use a single named constant for the embedding dimension"],"tags":["neo4j","vector","validation","dimension"],"backgroundTag":"value-out-of-range","analyzedSha":"e84aa99b3292c5270a4b313b2a7137ad9ce8ab3b","analyzedAt":"2026-09-08T15:59:19.997Z","contentChangedAt":"2026-09-08T15:59:19.997Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}