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

  1. Align dims: set embedding and vector_store dimension configs to the model's true output size
  2. If the index was created with the wrong dimension, delete and recreate it (data must be re-embedded)
  3. 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

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


AI-assisted analysis of mem0ai/mem0@001c235229 (2026-08-15). Data as JSON: /api/errors/664ca7d3ab557dc2. Report an issue: GitHub.