diff --git a/.changeset/healthy-penguins-pretend.md b/.changeset/healthy-penguins-pretend.md
new file mode 100644
index 0000000000000000000000000000000000000000..531e2f8bcc8e0a6c00754eb34e845f3b4019023c
--- /dev/null
+++ b/.changeset/healthy-penguins-pretend.md
@@ -0,0 +1,5 @@
+---
+"llamaindex": patch
+---
+
+fixed removeRefDocNode and persist store on delete
diff --git a/packages/core/src/storage/docStore/KVDocumentStore.ts b/packages/core/src/storage/docStore/KVDocumentStore.ts
index a14c1c5cda348162e4c996ba7142a0815cddb46f..c18d233c1fad966874719a351491095093ebdc75 100644
--- a/packages/core/src/storage/docStore/KVDocumentStore.ts
+++ b/packages/core/src/storage/docStore/KVDocumentStore.ts
@@ -1,4 +1,4 @@
-import _, * as lodash from "lodash";
+import _ from "lodash";
 import type { BaseNode } from "../../Node.js";
 import { ObjectType } from "../../Node.js";
 import { DEFAULT_NAMESPACE } from "../constants.js";
@@ -123,10 +123,10 @@ export class KVDocumentStore extends BaseDocumentStore {
 
     const refDocInfo = await this.kvstore.get(refDocId, this.refDocCollection);
     if (!_.isNil(refDocInfo)) {
-      lodash.pull(refDocInfo.docIds, docId);
+      !_.pull(refDocInfo.nodeIds, docId);
 
-      if (refDocInfo.docIds.length > 0) {
-        this.kvstore.put(refDocId, refDocInfo.toDict(), this.refDocCollection);
+      if (refDocInfo.nodeIds.length > 0) {
+        this.kvstore.put(refDocId, refDocInfo, this.refDocCollection);
       }
       this.kvstore.delete(refDocId, this.metadataCollection);
     }
diff --git a/packages/core/src/storage/kvStore/SimpleKVStore.ts b/packages/core/src/storage/kvStore/SimpleKVStore.ts
index b0ba190d5d9caf7f1377fe59dcfd305c8c3933b1..5af9d719aefaa5243459d6efcf0c302687d1fc9a 100644
--- a/packages/core/src/storage/kvStore/SimpleKVStore.ts
+++ b/packages/core/src/storage/kvStore/SimpleKVStore.ts
@@ -54,6 +54,9 @@ export class SimpleKVStore extends BaseKVStore {
   ): Promise<boolean> {
     if (key in this.data[collection]) {
       delete this.data[collection][key];
+      if (this.persistPath) {
+        await this.persist(this.persistPath, this.fs);
+      }
       return true;
     }
     return false;
diff --git a/packages/core/src/storage/vectorStore/SimpleVectorStore.ts b/packages/core/src/storage/vectorStore/SimpleVectorStore.ts
index 355838b2b949150139aa99a2124ede3b0e4c8a36..6caa439f4ae20abdd44e4c3082248d33cedd1eaa 100644
--- a/packages/core/src/storage/vectorStore/SimpleVectorStore.ts
+++ b/packages/core/src/storage/vectorStore/SimpleVectorStore.ts
@@ -82,6 +82,9 @@ export class SimpleVectorStore implements VectorStore {
       delete this.data.embeddingDict[textId];
       delete this.data.textIdToRefDocId[textId];
     }
+    if (this.persistPath) {
+      await this.persist(this.persistPath, this.fs);
+    }
     return Promise.resolve();
   }