Просмотр исходного кода

WIP: deleteObsoleteVectorStoreFile

Shun Miyazawa 1 год назад
Родитель
Сommit
82be5a5a6f
1 измененных файлов с 15 добавлено и 0 удалено
  1. 15 0
      apps/app/src/features/openai/server/services/openai.ts

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

@@ -38,6 +38,7 @@ export interface IOpenaiService {
   deleteExpiredThreads(limit: number, apiCallInterval: number): Promise<void>;
   deleteExpiredThreads(limit: number, apiCallInterval: number): Promise<void>;
   createVectorStoreFile(pages: PageDocument[]): Promise<void>;
   createVectorStoreFile(pages: PageDocument[]): Promise<void>;
   deleteVectorStoreFile(pageId: Types.ObjectId): Promise<void>;
   deleteVectorStoreFile(pageId: Types.ObjectId): Promise<void>;
+  deleteObsoleteVectorStoreFile(limit: number, apiCallInterval: number): Promise<void>;
   rebuildVectorStoreAll(): Promise<void>;
   rebuildVectorStoreAll(): Promise<void>;
   rebuildVectorStore(page: HydratedDocument<PageDocument>): Promise<void>;
   rebuildVectorStore(page: HydratedDocument<PageDocument>): Promise<void>;
 }
 }
@@ -260,6 +261,20 @@ class OpenaiService implements IOpenaiService {
     await vectorStoreFileRelation.save();
     await vectorStoreFileRelation.save();
   }
   }
 
 
+  async deleteObsoleteVectorStoreFile(limit: number, apiCallInterval: number): Promise<void> {
+    const deletedVectorStores = await VectorStoreModel.find({ isDeleted: true });
+
+    if (deletedVectorStores == null) {
+      return;
+    }
+
+    const obsoleteVectorStoreFiles = VectorStoreFileRelationModel.find(
+      { vectorStoreRelationId: { $in: deletedVectorStores.map(vectorStore => vectorStore._id) } },
+    ).limit(limit);
+
+
+  }
+
   async rebuildVectorStoreAll() {
   async rebuildVectorStoreAll() {
     await this.deleteVectorStore(VectorStoreScopeType.PUBLIC);
     await this.deleteVectorStore(VectorStoreScopeType.PUBLIC);