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

Refactor createVectorStore method to accept a name parameter for dynamic vector store creation

Shun Miyazawa 1 год назад
Родитель
Сommit
b0a65dc73c

+ 2 - 2
apps/app/src/features/openai/server/services/client-delegator/azure-openai-client-delegator.ts

@@ -38,8 +38,8 @@ export class AzureOpenaiClientDelegator implements IOpenaiClientDelegator {
     return this.client.beta.threads.del(threadId);
   }
 
-  async createVectorStore(): Promise<OpenAI.Beta.VectorStores.VectorStore> {
-    return this.client.beta.vectorStores.create({ name: 'growi-vector-store' });
+  async createVectorStore(name: string): Promise<OpenAI.Beta.VectorStores.VectorStore> {
+    return this.client.beta.vectorStores.create({ name: `growi-vector-store-for-${name}` });
   }
 
   async retrieveVectorStore(vectorStoreId: string): Promise<OpenAI.Beta.VectorStores.VectorStore> {

+ 1 - 1
apps/app/src/features/openai/server/services/client-delegator/interfaces.ts

@@ -6,7 +6,7 @@ export interface IOpenaiClientDelegator {
   retrieveThread(threadId: string): Promise<OpenAI.Beta.Threads.Thread>
   deleteThread(threadId: string): Promise<OpenAI.Beta.Threads.ThreadDeleted>
   retrieveVectorStore(vectorStoreId: string): Promise<OpenAI.Beta.VectorStores.VectorStore>
-  createVectorStore(): Promise<OpenAI.Beta.VectorStores.VectorStore>
+  createVectorStore(name: string): Promise<OpenAI.Beta.VectorStores.VectorStore>
   deleteVectorStore(vectorStoreId: string): Promise<OpenAI.Beta.VectorStores.VectorStoreDeleted>
   uploadFile(file: Uploadable): Promise<OpenAI.Files.FileObject>
   createVectorStoreFileBatch(vectorStoreId: string, fileIds: string[]): Promise<OpenAI.Beta.VectorStores.FileBatches.VectorStoreFileBatch>

+ 2 - 2
apps/app/src/features/openai/server/services/client-delegator/openai-client-delegator.ts

@@ -41,8 +41,8 @@ export class OpenaiClientDelegator implements IOpenaiClientDelegator {
     return this.client.beta.threads.del(threadId);
   }
 
-  async createVectorStore(): Promise<OpenAI.Beta.VectorStores.VectorStore> {
-    return this.client.beta.vectorStores.create({ name: 'growi-vector-store' });
+  async createVectorStore(name: string): Promise<OpenAI.Beta.VectorStores.VectorStore> {
+    return this.client.beta.vectorStores.create({ name: `growi-vector-store-for-${name}` });
   }
 
   async retrieveVectorStore(vectorStoreId: string): Promise<OpenAI.Beta.VectorStores.VectorStore> {

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

@@ -148,9 +148,9 @@ class OpenaiService implements IOpenaiService {
   //   return newVectorStoreDocument;
   // }
 
-  private async createVectorStore(): Promise<VectorStoreDocument> {
+  private async createVectorStore(name: string): Promise<VectorStoreDocument> {
     try {
-      const newVectorStore = await this.client.createVectorStore();
+      const newVectorStore = await this.client.createVectorStore(name);
 
       const newVectorStoreDocument = await VectorStoreModel.create({
         vectorStoreId: newVectorStore.id,
@@ -399,7 +399,7 @@ class OpenaiService implements IOpenaiService {
       .cursor({ batchSize: BATCH_SIZE });
     const batchStream = createBatchStream(BATCH_SIZE);
 
-    const vectorStoreRelation = await this.createVectorStore();
+    const vectorStoreRelation = await this.createVectorStore(data.name);
     const createVectorStoreFile = this.createVectorStoreFile.bind(this);
     const createVectorStoreFileStream = new Transform({
       objectMode: true,