{"record":{"id":"6cdccac2ef7307d5","repo":"mem0ai/mem0","slug":"vector-at-index-idx-is-empty-expected-a-vector","errorCode":null,"errorMessage":"Vector at index {idx} is empty. Expected a vector of dimension {self.embedding_model_dims}, got an empty vector.","messagePattern":"Vector at index (.+?) is empty\\. Expected a vector of dimension (.+?), got an empty vector\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"mem0/vector_stores/opensearch.py","lineNumber":170,"sourceCode":"    def insert(\n        self, vectors: List[List[float]], payloads: Optional[List[Dict]] = None, ids: Optional[List[str]] = None\n    ) -> List[OutputData]:\n        \"\"\"Insert vectors into the index.\"\"\"\n        if not ids:\n            ids = [str(i) for i in range(len(vectors))]\n\n        if payloads is None:\n            payloads = [{} for _ in range(len(vectors))]\n\n        for idx, vec in enumerate(vectors):\n            if vec is None:\n                raise ValueError(\n                    f\"Vector at index {idx} is null. \"\n                    f\"This usually means the embedding model failed to generate an embedding. \"\n                    f\"Check that your embedding model is configured correctly and returning valid vectors.\"\n                )\n            if len(vec) == 0:\n                raise ValueError(\n                    f\"Vector at index {idx} is empty. \"\n                    f\"Expected a vector of dimension {self.embedding_model_dims}, got an empty vector.\"\n                )\n            if len(vec) != self.embedding_model_dims:\n                raise ValueError(\n                    f\"Vector at index {idx} has dimension {len(vec)}, \"\n                    f\"but the index '{self.collection_name}' expects dimension {self.embedding_model_dims}. \"\n                    f\"Ensure your embedding model's output dimensions match the vector store configuration.\"\n                )\n\n        results = []\n        for i, (vec, id_) in enumerate(zip(vectors, ids)):\n            body = {\n                \"vector_field\": vec,\n                \"payload\": payloads[i],\n                \"id\": id_,\n            }\n            try:","sourceCodeStart":152,"sourceCodeEnd":188,"githubUrl":"https://github.com/mem0ai/mem0/blob/001c235229be8795e3834520467bd0d661ed8f34/mem0/vector_stores/opensearch.py#L152-L188","documentation":"insert() rejects vectors whose length is 0. An empty list is structurally a vector of dimension 0, which cannot match the index's configured embedding_model_dims, so the store fails fast with a message naming the expected dimension rather than letting OpenSearch reject the bulk write.","triggerScenarios":"Passing vectors=[[]] — an embedder that returned an empty list (some tokenizers do for whitespace-only input), or a slicing bug producing empty rows.","commonSituations":"Empty/whitespace strings reaching the embedding pipeline; embedding stubs in tests returning []; off-by-one batching that truncates a vector.","solutions":["Filter out empty inputs before embedding: skip blank documents","Make the embedder raise on empty input instead of returning []","Pre-validate vector shapes with the guard below"],"exampleFix":"# before\nvectors = [embed(t) for t in texts]  # embed(\" \") -> []\nstore.insert(vectors, payloads, ids)\n\n# after\ntexts = [t for t in texts if t and t.strip()]\nvectors = [embed(t) for t in texts]\nstore.insert(vectors, payloads, ids)","handlingStrategy":"validation","validationCode":"texts = [t for t in texts if t and t.strip()]\nvectors = [embedder.embed(t) for t in texts]\nassert all(len(v) > 0 for v in vectors), \"empty vector produced\"\nstore.insert(vectors=vectors, payloads=payloads[:len(texts)], ids=ids[:len(texts)])","typeGuard":"def has_no_empty_vectors(vectors) -> bool:\n    return all(v is not None and len(v) > 0 for v in vectors)","tryCatchPattern":"try:\n    store.insert(vectors, payloads, ids)\nexcept ValueError as e:\n    if \"is empty\" in str(e):\n        keep = [i for i, v in enumerate(vectors) if len(v) > 0]\n        store.insert([vectors[i] for i in keep], [payloads[i] for i in keep], [ids[i] for i in keep])\n    else:\n        raise","preventionTips":["Strip blank/whitespace documents before embedding","Embedder contract: raise on empty input, never return []","Unit-test the embedder with edge-case inputs (empty string, whitespace, unicode-only)"],"tags":["opensearch","embeddings","validation"],"backgroundTag":null,"analyzedSha":"001c235229be8795e3834520467bd0d661ed8f34","analyzedAt":"2026-08-15T01:55:42.685Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}