{"record":{"id":"91b8c262ab605bbe","repo":"mem0ai/mem0","slug":"existing-record-vector-id-has-no-vector-data","errorCode":null,"errorMessage":"Existing record {vector_id} has no vector data","messagePattern":"Existing record (.+?) has no vector data","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"mem0/vector_stores/milvus.py","lineNumber":297,"sourceCode":"        self.client.delete(collection_name=self.collection_name, ids=[vector_id])\n\n    def update(self, vector_id=None, vector=None, payload=None):\n        \"\"\"\n        Update a vector and its payload.\n\n        Args:\n            vector_id (str): ID of the vector to update.\n            vector (List[float], optional): Updated vector.\n            payload (Dict, optional): Updated payload.\n        \"\"\"\n        if vector is None or payload is None:\n            existing = self.client.get(collection_name=self.collection_name, ids=vector_id)\n            if not existing:\n                raise ValueError(f\"Vector with id {vector_id} not found in collection {self.collection_name}\")\n            if vector is None:\n                vector = existing[0].get(\"vectors\")\n                if vector is None:\n                    raise ValueError(f\"Existing record {vector_id} has no vector data\")\n            if payload is None:\n                payload = existing[0].get(\"metadata\")\n\n        schema = {\"id\": vector_id, \"vectors\": vector, \"metadata\": payload}\n        if self._has_bm25_schema:\n            text = \"\"\n            if payload:\n                text = (payload.get(\"text_lemmatized\") or payload.get(\"data\", \"\"))[:65535]\n            schema[\"text\"] = text\n        self.client.upsert(collection_name=self.collection_name, data=schema)\n\n    def get(self, vector_id) -> Optional[OutputData]:\n        \"\"\"\n        Retrieve a vector by ID.\n\n        Args:\n            vector_id (str): ID of the vector to retrieve.\n","sourceCodeStart":279,"sourceCodeEnd":315,"githubUrl":"https://github.com/mem0ai/mem0/blob/001c235229be8795e3834520467bd0d661ed8f34/mem0/vector_stores/milvus.py#L279-L315","documentation":"Thrown by MilvusVectorStore.update() when the caller omitted the vector and the existing Milvus record it just fetched has no 'vectors' field. The update path needs the old embedding to re-upsert the full schema, so a record stored without an embedding cannot be updated this way.","triggerScenarios":"Calling update(vector_id=X, vector=None, payload={...}) on a record that was inserted with a null/missing vector (e.g. a BM25-only or payload-only row), or on a schema where the vector field is nullable and was skipped at insert time.","commonSituations":"Collections created for hybrid/BM25 search where some rows carry only text; data migrated or hand-inserted into Milvus without embeddings; embeddings that silently failed to generate at insert time.","solutions":["Pass the vector explicitly: update(vector_id=X, vector=<freshly embedded vector>, payload=new_payload)","Regenerate the embedding for the source text and re-insert the record properly with both vector and payload","Audit how the record got in without a vector (insert path or manual write) and fix that writer"],"exampleFix":"// before\nstore.update(vector_id=vid, payload=new_payload)  # record has no vector\n\n// after\nvec = embedder.embed(new_payload[\"data\"])\nstore.update(vector_id=vid, vector=vec, payload=new_payload)","handlingStrategy":"validation","validationCode":"record = milvus_store.get(vector_id)\nif record is None or record.payload is None:\n    raise ValueError(\"record missing; re-insert instead of update\")\nif vector is None:\n    vector = record.payload.get(\"embedding\") or embedder.embed(text)\n    if not vector:\n        raise ValueError(\"cannot reconstruct embedding; supply vector explicitly\")\nstore.update(vector_id=vector_id, vector=vector, payload=payload)","typeGuard":"def has_embedding(rec) -> bool:\n    return rec is not None and rec.vector is not None and len(rec.vector) > 0","tryCatchPattern":"try:\n    store.update(vector_id=vid, payload=p)\nexcept ValueError as e:\n    if \"has no vector data\" in str(e):\n        store.update(vector_id=vid, vector=embedder.embed(p[\"data\"]), payload=p)\n    else:\n        raise","preventionTips":["Always insert records with both vector and payload","Pass vector explicitly on update when you have the source text available","Reject writes that produce None embeddings at insert time"],"tags":["milvus","vector-store","missing-embedding"],"backgroundTag":null,"analyzedSha":"001c235229be8795e3834520467bd0d661ed8f34","analyzedAt":"2026-08-15T01:55:42.685Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}