mem0ai/mem0 · error · ValueError

Filter operator {op!r} for key {key!r} requires a list value

Error message

Filter operator {op!r} for key {key!r} requires a list value, got {type(op_value).__name__}

What it means

Error "Filter operator {op!r} for key {key!r} requires a list value, got {type(op_value).__name__}" thrown in mem0ai/mem0.

Source

Thrown at mem0/vector_stores/pgvector.py:93

                    not_groups.append("(" + " AND ".join(sub_conds) + ")")
                    params.extend(sub_params)
            if not_groups:
                conditions.append("NOT (" + " OR ".join(not_groups) + ")")
            continue

        if value == "*":
            conditions.append("payload ? %s")
            params.append(key)
            continue

        if isinstance(value, dict):
            for op, op_value in value.items():
                if op not in OPERATOR_SQL_MAP:
                    raise ValueError(f"Unsupported filter operator: {op}")
                template, is_numeric = OPERATOR_SQL_MAP[op]
                if op in ("in", "nin"):
                    if not isinstance(op_value, list):
                        raise ValueError(
                            f"Filter operator {op!r} for key {key!r} requires a list value, got {type(op_value).__name__}"
                        )
                    str_list = [str(v) for v in op_value]
                    conditions.append(template)
                    params.extend([key, str_list])
                elif op in ("contains", "icontains"):
                    escaped = str(op_value).replace("\\", "\\\\").replace("%", "\\%").replace("_", "\\_")
                    conditions.append(template + " ESCAPE '\\'")
                    params.extend([key, f"%{escaped}%"])
                else:
                    conditions.append(template)
                    if is_numeric:
                        params.extend([key, float(op_value)])
                    else:
                        params.extend([key, str(op_value)])
        elif isinstance(value, list):
            conditions.append("payload->>%s = ANY(%s)")
            params.extend([key, [str(v) for v in value]])

View on GitHub (pinned to 001c235229)

Solutions

  1. Pass a list value for this filter operator (e.g. {'in': ['a','b']}).

When it happens

Trigger: Thrown at mem0/vector_stores/pgvector.py:93 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/294b7b3f7707675d. Report an issue: GitHub.