Skip to content

Commit

Permalink
feat: remove knowledgebase should remove data in vectorstore
Browse files Browse the repository at this point in the history
Signed-off-by: Abirdcfly <[email protected]>
  • Loading branch information
Abirdcfly committed Dec 11, 2023
1 parent 4f7ca5c commit b135904
Showing 1 changed file with 23 additions and 1 deletion.
24 changes: 23 additions & 1 deletion controllers/knowledgebase_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ func (r *KnowledgeBaseReconciler) Reconcile(ctx context.Context, req ctrl.Reques
// indicated by the deletion timestamp being set.
if kb.GetDeletionTimestamp() != nil && controllerutil.ContainsFinalizer(kb, arcadiav1alpha1.Finalizer) {
log.Info("Performing Finalizer Operations for KnowledgeBase before delete CR")
// TODO perform the finalizer operations here, for example: remove vectorstore data?
r.reconcileDelete(ctx, log, kb)
log.Info("Removing Finalizer for KnowledgeBase after successfully performing the operations")
controllerutil.RemoveFinalizer(kb, arcadiav1alpha1.Finalizer)
if err = r.Update(ctx, kb); err != nil {
Expand Down Expand Up @@ -498,3 +498,25 @@ func (r *KnowledgeBaseReconciler) handleFile(ctx context.Context, log logr.Logge
log.Info("handle file succeeded")
return nil
}

func (r *KnowledgeBaseReconciler) reconcileDelete(ctx context.Context, log logr.Logger, kb *arcadiav1alpha1.KnowledgeBase) {
vectorStore := &arcadiav1alpha1.VectorStore{}
if err := r.Get(ctx, types.NamespacedName{Name: kb.Spec.VectorStore.Name, Namespace: kb.Spec.VectorStore.GetNamespace()}, vectorStore); err != nil {
log.Error(err, "reconcile delete: get vector store error, may leave garbage data")
return
}
switch vectorStore.Spec.Type() { // nolint: gocritic
case arcadiav1alpha1.VectorStoreTypeChroma:
s, err := chroma.New(
chroma.WithChromaURL(vectorStore.Spec.Enpoint.URL),
chroma.WithDistanceFunction(vectorStore.Spec.Chroma.DistanceFunction),
chroma.WithNameSpace(kb.VectorStoreCollectionName()),
)
if err != nil {
log.Error(err, "reconcile delete: init vector store error, may leave garbage data")
}
if err = s.RemoveCollection(); err != nil {
log.Error(err, "reconcile delete: remove vector store error, may leave garbage data")
}
}
}

0 comments on commit b135904

Please sign in to comment.