Skip to main content
When a test should only apply to a slice of your data — a subpopulation — you filter the rows it runs on. Historically those filters matched exactly or by keyword. Semantic search filters match by meaning instead: they use embeddings to find rows that are semantically similar to a phrase you provide, even when the wording differs. For example, a filter for billing problems also captures rows like “I was charged twice” or “my invoice looks wrong” — none of which contain the word “billing”.

Creating a semantic filter

  1. In your project, go to Tests and create (or edit) a test.
  2. In the test’s subpopulation filters, choose the column to filter on and select the semantic match type.
  3. Enter the phrase describing the slice you care about.
The test then evaluates only the rows whose content is semantically close to your phrase.

When to use which match type

Semantic filters are most useful for free-text columns — user messages, model outputs, transcripts — where the same intent appears in many phrasings.
Semantic filters compose with your other filters: combine a semantic match with metadata conditions (date ranges, user IDs, tags) to zero in on exactly the slice you want to test.