@@ -22,6 +22,8 @@ import { QueryVector, QueryVectorBuilder } from '@_types/Knn'
2222import { float , integer } from '@_types/Numeric'
2323import { Sort , SortResults } from '@_types/sort'
2424import { QueryContainer } from './query_dsl/abstractions'
25+ import { Id } from './common'
26+ import { UserDefinedValue } from '@spec_utils/UserDefinedValue'
2527
2628/**
2729 * @variants container
@@ -33,6 +35,8 @@ export class RetrieverContainer {
3335 knn ?: KnnRetriever
3436 /** A retriever that produces top documents from reciprocal rank fusion (RRF). */
3537 rrf ?: RRFRetriever
38+ /** A retriever that replaces the functionality of a rule query. */
39+ rule ?: RuleRetriever
3640}
3741
3842export class RetrieverBase {
@@ -78,3 +82,14 @@ export class RRFRetriever extends RetrieverBase {
7882 /** This value determines the size of the individual result sets per query. */
7983 rank_window_size ?: integer
8084}
85+
86+ export class RuleRetriever extends RetrieverBase {
87+ /** The ruleset IDs containing the rules this retriever is evaluating against. */
88+ ruleset_ids : Id [ ]
89+ /** The match criteria that will determine if a rule in the provided rulesets should be applied. */
90+ match_criteria : UserDefinedValue
91+ /** The retriever whose results rules should be applied to. */
92+ retriever : RetrieverContainer
93+ /** This value determines the size of the individual result set. */
94+ rank_window_size ?: integer
95+ }
0 commit comments