{"record":{"id":"a460f2600e15c262","repo":"microsoft/semantic-kernel","slug":"chroma-only-supports-one-vector-field-but-len-se","errorCode":null,"errorMessage":"Chroma only supports one vector field, but {len(self.definition.vector_fields)} were provided.","messagePattern":"Chroma only supports one vector field, but (.+?) were provided\\.","errorType":"exception","errorClass":"VectorStoreModelValidationError","httpStatus":null,"severity":"error","filePath":"python/semantic_kernel/connectors/chroma.py","lineNumber":197,"sourceCode":"\n        self.client.create_collection(name=self.collection_name, embedding_function=self.embedding_func, **kwargs)\n\n    @override\n    async def ensure_collection_deleted(self, **kwargs: Any) -> None:\n        \"\"\"Delete the collection.\"\"\"\n        try:\n            self.client.delete_collection(name=self.collection_name)\n        except ValueError:\n            logger.info(f\"Collection {self.collection_name} could not be deleted because it doesn't exist.\")\n        except Exception as e:\n            raise VectorStoreOperationException(\n                f\"Failed to delete collection {self.collection_name} with error: {e}\"\n            ) from e\n\n    def _validate_data_model(self):\n        super()._validate_data_model()\n        if len(self.definition.vector_fields) > 1:\n            raise VectorStoreModelValidationError(\n                f\"Chroma only supports one vector field, but {len(self.definition.vector_fields)} were provided.\"\n            )\n\n    @override\n    def _serialize_dicts_to_store_models(self, records: Sequence[dict[str, Any]], **kwargs: Any) -> Sequence[Any]:\n        vector_field = self.definition.vector_fields[0]\n        id_field_name = self.definition.key_name\n        store_models = []\n        for record in records:\n            store_model = {\n                \"id\": record[id_field_name],\n                \"metadata\": {\n                    k: v\n                    for k, v in record.items()\n                    if k not in [id_field_name, vector_field.storage_name or vector_field.name]\n                },\n            }\n            if self.embedding_func:","sourceCodeStart":179,"sourceCodeEnd":215,"githubUrl":"https://github.com/microsoft/semantic-kernel/blob/c028a0c7dc4f0814cdcbaba9d998f187a41197bf/python/semantic_kernel/connectors/chroma.py#L179-L215","documentation":"A VectorStoreModelValidationError raised in _validate_data_model() when the collection definition declares more than one vector field. Chroma only supports a single embedding space per collection, so this is a hard constraint enforced during model validation (called at collection init / bind time).","triggerScenarios":"Defining a VectorStoreCollectionDefinition or record model with two or more VectorStoreRecordVectorField entries and instantiating a ChromaCollection bound to it.","commonSituations":"Multi-vector schemas (e.g. storing a dense and a sparse vector, or embeddings from two models) that work in the in-memory connector but are ported to Chroma; merging two record definitions during refactoring.","solutions":["Reduce the data model to a single VectorStoreRecordVectorField for use with Chroma.","If you need multiple vectors per record, split records across separate Chroma collections (one per vector) keyed by the same id, or use a connector that supports multiple vector fields."],"exampleFix":"// before\n@vectorstoremodel\nclass Doc:\n    id: str\n    dense: VectorStoreRecordVectorField(dimensions=1536)\n    sparse: VectorStoreRecordVectorField(dimensions=300)\n// after\n# keep only one vector field for Chroma\n@vectorstoremodel\nclass Doc:\n    id: str\n    dense: VectorStoreRecordVectorField(dimensions=1536)","handlingStrategy":"validation","validationCode":"assert len(definition.vector_fields) <= 1, (\n    f\"Chroma supports 1 vector field, got {len(definition.vector_fields)}\"\n)","typeGuard":"def has_single_vector_field(definition) -> bool:\n    return len(definition.vector_fields) == 1","tryCatchPattern":"from semantic_kernel.exceptions.vector_store_exceptions import VectorStoreModelValidationError\ntry:\n    ChromaCollection(record_type=Doc, ...)\nexcept VectorStoreModelValidationError as e:\n    if \"only supports one vector field\" in str(e):\n        # split the model across collections\n        ...","preventionTips":["Design Chroma models with exactly one VectorStoreRecordVectorField.","For multi-vector needs, use one collection per vector keyed by the same id."],"tags":["chroma","vector-store","data-model","validation"],"backgroundTag":null,"analyzedSha":"c028a0c7dc4f0814cdcbaba9d998f187a41197bf","analyzedAt":"2026-08-13T13:48:05.040Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}