mirror of
https://github.com/meilisearch/meilisearch.git
synced 2025-09-09 22:26:29 +00:00
get_vector_store returns an option, handles it in Index::settings
This commit is contained in:
@ -989,7 +989,10 @@ pub fn settings(
|
||||
facet_search: Setting::Set(facet_search),
|
||||
prefix_search: Setting::Set(prefix_search.unwrap_or_default()),
|
||||
chat: Setting::Set(chat),
|
||||
vector_store: Setting::Set(vector_store),
|
||||
vector_store: match vector_store {
|
||||
Some(vector_store) => Setting::Set(vector_store),
|
||||
None => Setting::Reset,
|
||||
},
|
||||
_kind: PhantomData,
|
||||
};
|
||||
|
||||
|
@ -469,12 +469,11 @@ impl Index {
|
||||
)?)
|
||||
}
|
||||
|
||||
pub fn get_vector_store(&self, rtxn: &RoTxn<'_>) -> Result<VectorStoreBackend> {
|
||||
pub fn get_vector_store(&self, rtxn: &RoTxn<'_>) -> Result<Option<VectorStoreBackend>> {
|
||||
Ok(self
|
||||
.main
|
||||
.remap_types::<Str, SerdeJson<VectorStoreBackend>>()
|
||||
.get(rtxn, main_key::VECTOR_STORE_BACKEND)?
|
||||
.unwrap_or_default())
|
||||
.get(rtxn, main_key::VECTOR_STORE_BACKEND)?)
|
||||
}
|
||||
|
||||
pub(crate) fn delete_vector_store(&self, wtxn: &mut RwTxn<'_>) -> Result<bool> {
|
||||
@ -1799,7 +1798,7 @@ impl Index {
|
||||
) -> Result<BTreeMap<String, EmbeddingsWithMetadata>> {
|
||||
let mut res = BTreeMap::new();
|
||||
let embedders = self.embedding_configs();
|
||||
let backend = self.get_vector_store(rtxn)?;
|
||||
let backend = self.get_vector_store(rtxn)?.unwrap_or_default();
|
||||
|
||||
for config in embedders.embedding_configs(rtxn)? {
|
||||
let embedder_info = embedders.embedder_info(rtxn, &config.name)?.unwrap();
|
||||
@ -1828,7 +1827,7 @@ impl Index {
|
||||
pub fn vector_store_stats(&self, rtxn: &RoTxn<'_>) -> Result<VectorStoreStats> {
|
||||
let mut stats = VectorStoreStats::default();
|
||||
let embedding_configs = self.embedding_configs();
|
||||
let backend = self.get_vector_store(rtxn)?;
|
||||
let backend = self.get_vector_store(rtxn)?.unwrap_or_default();
|
||||
|
||||
for config in embedding_configs.embedding_configs(rtxn)? {
|
||||
let embedder_id = embedding_configs.embedder_id(rtxn, &config.name)?.unwrap();
|
||||
|
@ -82,7 +82,7 @@ fn evaluate_inner(
|
||||
embedding_configs: &[IndexEmbeddingConfig],
|
||||
filter: &VectorFilter<'_>,
|
||||
) -> crate::Result<RoaringBitmap> {
|
||||
let backend = index.get_vector_store(rtxn)?;
|
||||
let backend = index.get_vector_store(rtxn)?.unwrap_or_default();
|
||||
let embedder_name = embedder.value();
|
||||
let available_embedders =
|
||||
|| embedding_configs.iter().map(|c| c.name.clone()).collect::<Vec<_>>();
|
||||
|
@ -54,7 +54,7 @@ impl<Q: RankingRuleQueryTrait> VectorSort<Q> {
|
||||
vector_candidates: &RoaringBitmap,
|
||||
) -> Result<()> {
|
||||
let target = &self.target;
|
||||
let backend = ctx.index.get_vector_store(ctx.txn)?;
|
||||
let backend = ctx.index.get_vector_store(ctx.txn)?.unwrap_or_default();
|
||||
|
||||
let before = Instant::now();
|
||||
let reader =
|
||||
|
@ -72,7 +72,7 @@ impl<'a> Similar<'a> {
|
||||
crate::UserError::InvalidSimilarEmbedder(self.embedder_name.to_owned())
|
||||
})?;
|
||||
|
||||
let backend = self.index.get_vector_store(self.rtxn)?;
|
||||
let backend = self.index.get_vector_store(self.rtxn)?.unwrap_or_default();
|
||||
|
||||
let reader =
|
||||
VectorStore::new(backend, self.index.vector_store, embedder_index, self.quantized);
|
||||
|
@ -485,7 +485,7 @@ where
|
||||
|
||||
// If an embedder wasn't used in the typedchunk but must be binary quantized
|
||||
// we should insert it in `dimension`
|
||||
let backend = self.index.get_vector_store(self.wtxn)?;
|
||||
let backend = self.index.get_vector_store(self.wtxn)?.unwrap_or_default();
|
||||
for (name, action) in settings_diff.embedding_config_updates.iter() {
|
||||
if action.is_being_quantized && !dimension.contains_key(name.as_str()) {
|
||||
let index = self.index.embedding_configs().embedder_id(self.wtxn, name)?.ok_or(
|
||||
|
@ -834,7 +834,7 @@ impl<'a, 'i> Transform<'a, 'i> {
|
||||
None
|
||||
};
|
||||
|
||||
let backend = self.index.get_vector_store(wtxn)?;
|
||||
let backend = self.index.get_vector_store(wtxn)?.unwrap_or_default();
|
||||
let readers: BTreeMap<&str, (VectorStore, &RoaringBitmap)> = settings_diff
|
||||
.embedding_config_updates
|
||||
.iter()
|
||||
|
@ -619,7 +619,7 @@ pub(crate) fn write_typed_chunk_into_index(
|
||||
let _entered = span.enter();
|
||||
|
||||
let embedders = index.embedding_configs();
|
||||
let backend = index.get_vector_store(wtxn)?;
|
||||
let backend = index.get_vector_store(wtxn)?.unwrap_or_default();
|
||||
|
||||
let mut remove_vectors_builder = MergerBuilder::new(KeepFirst);
|
||||
let mut manual_vectors_builder = MergerBuilder::new(KeepFirst);
|
||||
|
@ -131,7 +131,7 @@ where
|
||||
let global_fields_ids_map = GlobalFieldsIdsMap::new(&new_fields_ids_map);
|
||||
|
||||
let vector_arroy = index.vector_store;
|
||||
let backend = index.get_vector_store(wtxn)?;
|
||||
let backend = index.get_vector_store(wtxn)?.unwrap_or_default();
|
||||
let vector_stores: Result<HashMap<_, _>> = embedders
|
||||
.inner_as_ref()
|
||||
.iter()
|
||||
@ -348,7 +348,7 @@ fn vector_stores_from_embedder_actions<'indexer>(
|
||||
index_embedder_category_ids: &'indexer std::collections::HashMap<String, u8>,
|
||||
) -> Result<HashMap<u8, (&'indexer str, &'indexer Embedder, VectorStore, usize)>> {
|
||||
let vector_arroy = index.vector_store;
|
||||
let backend = index.get_vector_store(rtxn)?;
|
||||
let backend = index.get_vector_store(rtxn)?.unwrap_or_default();
|
||||
|
||||
embedders
|
||||
.inner_as_ref()
|
||||
@ -390,7 +390,7 @@ fn delete_old_embedders_and_fragments<SD>(
|
||||
where
|
||||
SD: SettingsDelta,
|
||||
{
|
||||
let backend = index.get_vector_store(wtxn)?;
|
||||
let backend = index.get_vector_store(wtxn)?.unwrap_or_default();
|
||||
for action in settings_delta.embedder_actions().values() {
|
||||
let Some(WriteBackToDocuments { embedder_id, .. }) = action.write_back() else {
|
||||
continue;
|
||||
|
@ -120,7 +120,7 @@ impl<'t> VectorDocumentFromDb<'t> {
|
||||
config: &IndexEmbeddingConfig,
|
||||
status: &EmbeddingStatus,
|
||||
) -> Result<VectorEntry<'t>> {
|
||||
let backend = self.index.get_vector_store(self.rtxn)?;
|
||||
let backend = self.index.get_vector_store(self.rtxn)?.unwrap_or_default();
|
||||
let reader = VectorStore::new(
|
||||
backend,
|
||||
self.index.vector_store,
|
||||
|
@ -1506,7 +1506,7 @@ impl<'a, 't, 'i> Settings<'a, 't, 'i> {
|
||||
where
|
||||
MSP: Fn() -> bool + Sync,
|
||||
{
|
||||
let old_backend = self.index.get_vector_store(self.wtxn)?;
|
||||
let old_backend = self.index.get_vector_store(self.wtxn)?.unwrap_or_default();
|
||||
|
||||
let new_backend = match self.vector_store {
|
||||
Setting::Set(new_backend) => {
|
||||
|
Reference in New Issue
Block a user