mem0ai/mem0 · error · ValueError

Invalid metadata key '{metadata_key}'. Only letters, numbers

Error message

Invalid metadata key '{metadata_key}'. Only letters, numbers, underscores, nesting via '.', and array wildcards '[*]' are allowed.

What it means

Error "Invalid metadata key '{metadata_key}'. Only letters, numbers, underscores, nesting via '.', and array wildcards '[*]' are allowed." thrown in mem0ai/mem0.

Source

Thrown at mem0/vector_stores/oracledb.py:40

logger = logging.getLogger(__name__)


class OutputData(BaseModel):
    """Standard output structure returned from vector operations."""

    id: Optional[str]
    score: Optional[float]
    payload: Optional[Dict[str, Any]]


# Allow letters, digits, underscore, dot, brackets, comma, *, space (for 'to')
METADATA_PATTERN = re.compile(r"[a-zA-Z0-9_\.\[\],\s\*]+")


def _validate_metadata_key(metadata_key: str) -> None:
    if not METADATA_PATTERN.fullmatch(metadata_key):
        raise ValueError(
            f"Invalid metadata key '{metadata_key}'. "
            "Only letters, numbers, underscores, nesting via '.', "
            "and array wildcards '[*]' are allowed."
        )


_SCORE_FROM_DISTANCE = {
    "COSINE": lambda d: max(0.0, min(1.0, 1.0 - d)),
    "EUCLIDEAN": lambda d: 1.0 / (1.0 + max(0.0, d)),
    "EUCLIDEAN_SQUARED": lambda d: 1.0 / (1.0 + math.sqrt(max(0.0, d))),
    "HAMMING": lambda d: 1.0 / (1.0 + max(0.0, d)),
    "MANHATTAN": lambda d: 1.0 / (1.0 + max(0.0, d)),
    "DOT": lambda d: -d,
}


def _convert_distance_to_score(distance: float, metric: str) -> float:
    try:

View on GitHub (pinned to 001c235229)

Solutions

  1. Use metadata keys with only letters, numbers, underscores, '.' for nesting, and '[*]' for array wildcards.

When it happens

Trigger: Thrown at mem0/vector_stores/oracledb.py:40 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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