mod builder;
pub mod index_settings;
mod store;
pub use builder::OpenSearchVectorStoreBuilder;
pub use store::OpenSearchVectorStore;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum SpaceType {
#[default]
CosineSimilarity,
L2,
InnerProduct,
}
impl SpaceType {
pub fn as_str(&self) -> &'static str {
match self {
Self::CosineSimilarity => "cosinesimil",
Self::L2 => "l2",
Self::InnerProduct => "innerproduct",
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum Engine {
#[default]
Lucene,
Nmslib,
Faiss,
}
impl Engine {
pub fn as_str(&self) -> &'static str {
match self {
Self::Lucene => "lucene",
Self::Nmslib => "nmslib",
Self::Faiss => "faiss",
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_space_type_as_str() {
assert_eq!(SpaceType::CosineSimilarity.as_str(), "cosinesimil");
assert_eq!(SpaceType::L2.as_str(), "l2");
assert_eq!(SpaceType::InnerProduct.as_str(), "innerproduct");
}
#[test]
fn test_space_type_default() {
assert_eq!(SpaceType::default(), SpaceType::CosineSimilarity);
}
#[test]
fn test_engine_as_str() {
assert_eq!(Engine::Lucene.as_str(), "lucene");
assert_eq!(Engine::Nmslib.as_str(), "nmslib");
assert_eq!(Engine::Faiss.as_str(), "faiss");
}
#[test]
fn test_engine_default() {
assert_eq!(Engine::default(), Engine::Lucene);
}
}