Metadata Specification
Document metadata must be of the typedict[str, str | list[str]]. For example, you could attach the following JSON object as document metadata,
Metadata Filtering
Basic Usage
In order to filter, you can use the operators$eq, $ne, $gt, $gte, $lt, $lte. These operators represent โequalsโ, โnot equalsโ, โgreater thanโ, โgreater than or equal toโ, โless thanโ, and โless than or equal toโ, respectively. Here is an example of a few filters,
$in and $nin for โinโ and โnot inโ operations.
If you provide a filter query and a document does not contain that attribute, then that attribute will be considered
null for that document. In other words, $eq, $gt, $gte, $lt, $lte will all always evaluate to false. But, $neq will always evaluate to true, because null is not equal to any string. Be careful to not have any typos in your query attribute name, or you may not match any documents!Lists of Strings
When using a โlist of stringsโ metadata attribute, the attribute name must start withlist:. For example, you can set list:tags to be a list of tags for a blog article document.
List of strings can only be used with the operators $in, $nin. These operators will execute โset intersectionโ. Meaning, a in b is true if and only if a and b have at least one element in common. Here are a few examples,
Boolean Operators
If you want to combine filters, you can use$and, $or as boolean operators. These boolean operators will take in an array of filters. They can also be used recursively to create a tree of boolean logic.