Explorar o código

Relocate VectorStoreFile's deletion logic to OpenAI service

Shun Miyazawa hai 1 ano
pai
achega
4d7b13a0f7

+ 12 - 0
apps/app/src/features/openai/server/services/openai.ts

@@ -68,6 +68,7 @@ export interface IOpenaiService {
   getVectorStoreRelationsByPageIds(pageId: Types.ObjectId[]): Promise<VectorStoreDocument[]>;
   createVectorStoreFile(vectorStoreRelation: VectorStoreDocument, pages: PageDocument[]): Promise<void>;
   deleteVectorStoreFile(vectorStoreRelationId: Types.ObjectId, pageId: Types.ObjectId): Promise<void>;
+  deleteVectorStoreFilesByPageIds(pageIds: Types.ObjectId[]): Promise<void>;
   deleteObsoleteVectorStoreFile(limit: number, apiCallInterval: number): Promise<void>; // for CronJob
   // rebuildVectorStoreAll(): Promise<void>;
   updateVectorStore(page: HydratedDocument<PageDocument>): Promise<void>;
@@ -390,6 +391,17 @@ class OpenaiService implements IOpenaiService {
     await vectorStoreFileRelation.save();
   }
 
+  async deleteVectorStoreFilesByPageIds(pageIds: Types.ObjectId[]): Promise<void> {
+    const vectorStoreRelations = await this.getVectorStoreRelationsByPageIds(pageIds);
+    if (vectorStoreRelations != null && vectorStoreRelations.length !== 0) {
+      for await (const pageId of pageIds) {
+        const deleteVectorStoreFilePromises = vectorStoreRelations
+          .map(vectorStoreRelation => this.deleteVectorStoreFile(vectorStoreRelation._id, pageId));
+        await Promise.allSettled(deleteVectorStoreFilePromises);
+      }
+    }
+  }
+
   async deleteObsoleteVectorStoreFile(limit: number, apiCallInterval: number): Promise<void> {
     // Retrieves all VectorStore documents that are marked as deleted
     const deletedVectorStoreRelations = await VectorStoreModel.find({ isDeleted: true });

+ 1 - 10
apps/app/src/server/service/page/index.ts

@@ -1900,16 +1900,7 @@ class PageService implements IPageService {
     if (isAiEnabled()) {
       const { getOpenaiService } = await import('~/features/openai/server/services/openai');
       const openaiService = getOpenaiService();
-      if (openaiService != null) {
-        const vectorStoreRelations = await openaiService.getVectorStoreRelationsByPageIds(pageIds);
-        if (vectorStoreRelations != null && vectorStoreRelations.length !== 0) {
-          for await (const pageId of pageIds) {
-            const deleteVectorStoreFilePromises = vectorStoreRelations
-              .map(vectorStoreRelation => openaiService.deleteVectorStoreFile(vectorStoreRelation._id, pageId));
-            await Promise.allSettled(deleteVectorStoreFilePromises);
-          }
-        }
-      }
+      await openaiService?.deleteVectorStoreFilesByPageIds(pageIds);
     }
   }