pub struct Representation { /* private fields */ }Expand description
Identity of the encoder that produced a vector feature.
Implementations§
Source§impl Representation
impl Representation
Sourcepub fn new(
encoder: impl Into<String>,
encoder_revision: impl Into<String>,
dimension: usize,
normalized: bool,
) -> Result<Self>
pub fn new( encoder: impl Into<String>, encoder_revision: impl Into<String>, dimension: usize, normalized: bool, ) -> Result<Self>
A representation with empty templates.
Examples found in repository?
examples/stored_maxsim.rs (line 77)
76fn main() -> Result<()> {
77 let representation = Representation::new("toy-encoder", "1", DIMENSION, true)?;
78 let directory = std::env::temp_dir().join(format!("lateweave-example-{}", std::process::id()));
79 let path = directory.join("vectors");
80
81 // The indexing side: one token per word, the axis standing in for what
82 // a real encoder produces.
83 let mut writer =
84 VectorStoreWriter::create(&path, Encoding::Float32, "fruit", representation.clone())?;
85 let embeddings = [unit(0), unit(2), unit(1), unit(2), unit(0), unit(3)].concat();
86 writer.append(["a", "b", "c"], &embeddings, DIMENSION, &[2, 2, 2], None)?;
87 writer.commit()?;
88
89 // The serving side.
90 let gatherer = TermGatherer {
91 requires: BTreeMap::new(),
92 documents: vec![("a", "red apple"), ("b", "green apple"), ("c", "red car")],
93 indexed_at: SystemTime::now(),
94 };
95 let store = Arc::new(VectorStore::open(&path)?) as Arc<dyn MultiVectorSource>;
96 let reranker = MaxSimReranker::new([store], DEFAULT_FEATURE)?;
97 let pipeline = SearchPipeline::new(Arc::new(gatherer), Some(Arc::new(reranker)));
98
99 let query = Query::new("apple").with_feature(
100 DEFAULT_FEATURE,
101 Feature::lazy(representation, || {
102 TokenMatrix::new(unit(1).to_vec(), DIMENSION)
103 }),
104 );
105 let request = SearchRequest::new(10, 2).with_budget(ResourceBudget::new(4096, 64, Some(1))?);
106
107 let print = |label: &str| -> Result<()> {
108 let result = pipeline.search(&query, &request)?;
109 println!("{label}:");
110 for document in &result.documents {
111 println!(
112 " #{} {:?} score {}",
113 document.rank, document.key, document.score
114 );
115 }
116 println!(" {:?}", result.diagnostics);
117 Ok(())
118 };
119 print("before the delete")?;
120
121 // The indexing side deletes "b" from the vectors; the gatherer still
122 // finds it, and the pipeline drops it.
123 writer.delete(["b"]);
124 writer.commit()?;
125 print("after the delete")?;
126
127 std::fs::remove_dir_all(directory)?;
128 Ok(())
129}pub fn with_templates( self, query_template: impl Into<String>, document_template: impl Into<String>, ) -> Self
pub fn encoder(&self) -> &str
pub fn encoder_revision(&self) -> &str
pub fn dimension(&self) -> usize
pub fn normalized(&self) -> bool
pub fn query_template(&self) -> &str
pub fn document_template(&self) -> &str
Sourcepub fn assert_compatible(&self, other: &Self) -> Result<()>
pub fn assert_compatible(&self, other: &Self) -> Result<()>
Fails with Error::IncompatibleQuery naming every differing field.
Trait Implementations§
Source§impl Clone for Representation
impl Clone for Representation
Source§impl Debug for Representation
impl Debug for Representation
Source§impl<'de> Deserialize<'de> for Representation
impl<'de> Deserialize<'de> for Representation
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl Eq for Representation
Source§impl Hash for Representation
impl Hash for Representation
Source§impl PartialEq for Representation
impl PartialEq for Representation
Source§impl Serialize for Representation
impl Serialize for Representation
impl StructuralPartialEq for Representation
Auto Trait Implementations§
impl Freeze for Representation
impl RefUnwindSafe for Representation
impl Send for Representation
impl Sync for Representation
impl Unpin for Representation
impl UnsafeUnpin for Representation
impl UnwindSafe for Representation
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more