mem0ai/mem0 · error · ValueError
Vector at index {idx} has dimension {len(vec)}, but the inde
Error message
Vector at index {idx} has dimension {len(vec)}, but the index '{self.collection_name}' expects dimension {self.embedding_model_dims}. Ensure your embedding model's output dimensions match the vector store configuration. What it means
insert() verifies each vector's length against embedding_model_dims (the dimension the index was created with). A mismatch means the embedding model or its dimensions setting changed relative to the index schema — OpenSearch's knn_vector field has a fixed dimension, so the write would fail server-side anyway.
Source
Thrown at mem0/vector_stores/opensearch.py:175
ids = [str(i) for i in range(len(vectors))]
if payloads is None:
payloads = [{} for _ in range(len(vectors))]
for idx, vec in enumerate(vectors):
if vec is None:
raise ValueError(
f"Vector at index {idx} is null. "
f"This usually means the embedding model failed to generate an embedding. "
f"Check that your embedding model is configured correctly and returning valid vectors."
)
if len(vec) == 0:
raise ValueError(
f"Vector at index {idx} is empty. "
f"Expected a vector of dimension {self.embedding_model_dims}, got an empty vector."
)
if len(vec) != self.embedding_model_dims:
raise ValueError(
f"Vector at index {idx} has dimension {len(vec)}, "
f"but the index '{self.collection_name}' expects dimension {self.embedding_model_dims}. "
f"Ensure your embedding model's output dimensions match the vector store configuration."
)
results = []
for i, (vec, id_) in enumerate(zip(vectors, ids)):
body = {
"vector_field": vec,
"payload": payloads[i],
"id": id_,
}
try:
self.client.index(index=self.collection_name, body=body)
results.append(
OutputData(
id=id_,View on GitHub (pinned to 001c235229)
Solutions
- Align dims: set embedding and vector_store dimension configs to the model's true output size
- If the index was created with the wrong dimension, delete and recreate it (data must be re-embedded)
- Pin the embedding model version in config so dimension cannot drift silently
Example fix
# before
embedding={"provider":"openai","config":{"model":"text-embedding-3-small"}}, # 1536
vector_store={"provider":"opensearch","config":{"embedding_model_dims":768}}
# after
embedding={"provider":"openai","config":{"model":"text-embedding-3-small"}},
vector_store={"provider":"opensearch","config":{"embedding_model_dims":1536}} Defensive patterns
Strategy: type-guard
Validate before calling
DIMS = 1536 # must equal index embedding_model_dims
bad = [i for i, v in enumerate(vectors) if len(v) != DIMS]
if bad:
raise ValueError(f"dimension mismatch at {bad}; expected {DIMS}")
store.insert(vectors=vectors, payloads=payloads, ids=ids) Type guard
def dims_match(vectors, dims: int) -> bool:
return all(v is not None and len(v) == dims for v in vectors) Try / catch
try:
store.insert(vectors, payloads, ids)
except ValueError as e:
if "has dimension" in str(e):
raise ConfigError("embedding model dims != index dims; recreate index or fix config")
raise Prevention
- Set embedding and vector_store dims from one shared config value
- Recreate (delete + rebuild) the index whenever the embedding model changes
- Add a startup assertion comparing model output size to embedding_model_dims
When it happens
Trigger: Index created with dims=1536 (OpenAI ada) but inserting vectors from a 768-dim model (e.g. sentence-transformers), or vice versa; config drift where embedding.model.dimensions no longer matches vector_store.embedding_model_dims; switching embedding providers without recreating the index.
Common situations: Changing LLM/embedding provider in config while reusing an existing index; local dev with a small model against a prod-configured index; copying config between environments with different models.
Related errors
- Update vector has dimension {len(vector)}, but the index '{s
- Baidu Mochow table '${label}' stores ${dimension}-dimensiona
- Vector at index ${index} has dimension ${vector.length}, but
- embedding_model_dims must be provided either during initiali
- Databricks storage-optimized endpoints require dimensions di
AI-assisted analysis of mem0ai/mem0@001c235229 (2026-08-15).
Data as JSON: /api/errors/664ca7d3ab557dc2.
Report an issue: GitHub.