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
- 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.