Skip to main content

qdrant_client/builders/
relevance_feedback_input_builder.rs

1use crate::qdrant::*;
2
3#[must_use]
4#[derive(Clone)]
5pub struct RelevanceFeedbackInputBuilder {
6    /// The original query vector
7    pub(crate) target: VectorInput,
8    /// Previous results scored by the feedback provider
9    pub(crate) feedback: Vec<FeedbackItem>,
10    /// Formula and trained coefficients to use
11    pub(crate) strategy: Option<FeedbackStrategy>,
12}
13
14impl RelevanceFeedbackInputBuilder {
15    /// Create a new builder with a target vector.
16    ///
17    /// # Arguments
18    ///
19    /// * `target` - The original query vector to search around.
20    ///
21    /// # Examples
22    ///
23    /// ```
24    /// use qdrant_client::qdrant::{RelevanceFeedbackInputBuilder, VectorInput};
25    ///
26    /// let builder = RelevanceFeedbackInputBuilder::new(VectorInput::new_dense(vec![0.1, 0.2, 0.3]));
27    /// ```
28    pub fn new(target: impl Into<VectorInput>) -> Self {
29        Self {
30            target: target.into(),
31            feedback: Vec::new(),
32            strategy: None,
33        }
34    }
35
36    /// Add a single feedback item.
37    pub fn add_feedback(mut self, item: impl Into<FeedbackItem>) -> Self {
38        self.feedback.push(item.into());
39        self
40    }
41
42    /// Set the feedback strategy.
43    pub fn strategy(mut self, value: impl Into<FeedbackStrategy>) -> Self {
44        self.strategy = Some(value.into());
45        self
46    }
47
48    /// Builds the desired type. Can often be omitted.
49    pub fn build(self) -> RelevanceFeedbackInput {
50        RelevanceFeedbackInput {
51            target: Some(self.target),
52            feedback: self.feedback,
53            strategy: self.strategy,
54        }
55    }
56}
57
58impl From<RelevanceFeedbackInputBuilder> for RelevanceFeedbackInput {
59    fn from(value: RelevanceFeedbackInputBuilder) -> Self {
60        value.build()
61    }
62}