Skip to main content
Chroma supports powerful filtering capabilities to narrow down query results based on metadata values and document content.

Where Clause Syntax

The where parameter filters results based on metadata values.

Basic Equality

Comparison Operators

Comparison operators ($gt, $gte, $lt, $lte) only work with numeric values (int or float).

Inclusion Operators

Array Operators

Use $contains and $not_contains to filter based on array metadata:

Logical Operators

AND Operator

Combine multiple conditions (all must be true):

OR Operator

Match any condition:

Nested Logical Operators

Combine AND and OR:

WhereDocument Clause

The where_document parameter filters based on document content.

Contains Operator

Regex Matching

Logical Operators with Documents

Combining Where and WhereDocument

Use both filters together:

Real-World Examples

Content Moderation

Document Archive

Multi-tag Filtering

Performance Tips

Index Metadata Fields

Chroma automatically indexes metadata fields, but keep metadata simple:

Prefer Metadata Filters

Metadata filters are faster than document filters:

Limit Results

Combine filters with limits:

Common Pitfalls

Case Sensitivity

Filters are case-sensitive:

Type Matching

Ensure types match:

Empty Results

Advanced Filtering

Dynamic Filter Building

Pagination with Filters