fix: rebuild FAISS index on vector deletion (#4178)

This commit is contained in:
Br1an
2026-03-28 20:56:39 +05:30
committed by GitHub
parent ae8e03c6b7
commit 27a6e7863e
2 changed files with 30 additions and 5 deletions
+16 -1
View File
@@ -309,8 +309,23 @@ class FAISS(VectorStoreBase):
break
if index_to_delete is not None:
# Reconstruct remaining vectors and rebuild the FAISS index
remaining_vectors = []
new_index_to_id = {}
new_idx = 0
for old_idx in sorted(self.index_to_id.keys()):
if old_idx == index_to_delete:
continue
remaining_vectors.append(self.index.reconstruct(int(old_idx)))
new_index_to_id[new_idx] = self.index_to_id[old_idx]
new_idx += 1
self.index.reset()
if remaining_vectors:
self.index.add(np.array(remaining_vectors, dtype=np.float32))
self.docstore.pop(vector_id, None)
self.index_to_id.pop(index_to_delete, None)
self.index_to_id = new_index_to_id
self._save()