From f1cdfc1d02488c4a513fbf67f729f702526a345d Mon Sep 17 00:00:00 2001 From: "A.J. Shulman" Date: Thu, 11 Jul 2024 12:06:04 -0400 Subject: not working well (files don't get filename immediately_ --- .../nodes/ChatBox/vectorstore/VectorstoreUpload.ts | 45 +++++++++++++++++----- 1 file changed, 35 insertions(+), 10 deletions(-) (limited to 'src/client/views/nodes/ChatBox/vectorstore') diff --git a/src/client/views/nodes/ChatBox/vectorstore/VectorstoreUpload.ts b/src/client/views/nodes/ChatBox/vectorstore/VectorstoreUpload.ts index 1f483ad61..5e8e6b23a 100644 --- a/src/client/views/nodes/ChatBox/vectorstore/VectorstoreUpload.ts +++ b/src/client/views/nodes/ChatBox/vectorstore/VectorstoreUpload.ts @@ -3,7 +3,11 @@ import { CohereClient } from 'cohere-ai'; import { EmbedResponse } from 'cohere-ai/api'; import dotenv from 'dotenv'; -import { Chunk, AI_Document } from '../types'; +import { Chunk, AI_Document, convertToAIDocument } from '../types'; +import { Doc } from '../../../../../fields/Doc'; +import { DocData } from '../../../../../fields/DocSymbols'; +import { CsvCast, PDFCast, StrCast } from '../../../../../fields/Types'; +import { Networking } from '../../../../Network'; dotenv.config(); @@ -12,7 +16,7 @@ export class Vectorstore { private index!: Index; private cohere: CohereClient; private indexName: string = 'pdf-chatbot'; - private documents: AI_Document[] = []; + documents: AI_Document[] = []; constructor() { const pineconeApiKey = process.env.PINECONE_API_KEY; @@ -49,10 +53,35 @@ export class Vectorstore { this.index = this.pinecone.Index(this.indexName); } - async addDocument(document: AI_Document) { - this.documents.push(document); - await this.indexDocument(document); - console.log(`Document added: ${document.file_name}`); + async addAIDocs(visible_docs: Doc[]) { + console.log('All Docs:', visible_docs); + visible_docs?.forEach(async doc => { + await this.addAIDoc(doc); + }); + } + + async addAIDoc(doc: Doc) { + if (doc[DocData]?.ai_document) { + this.documents.push(convertToAIDocument(JSON.parse(StrCast(doc[DocData].ai_document)))); + console.log(`Document already added: ${doc[DocData].file_name}`); + } else { + console.log(doc); + const local_file_path: string = CsvCast(doc.data)?.url?.pathname ?? PDFCast(doc.data)?.url?.pathname; + console.log('Local File Path:', local_file_path); + if (local_file_path) { + const { document_json } = await Networking.PostToServer('/createDocument', { file_path: local_file_path }); + console.log('Document JSON:', document_json); + const ai_document: AI_Document = convertToAIDocument(document_json); + this.documents.push(ai_document); + await this.indexDocument(ai_document); + console.log(`Document added: ${ai_document.file_name}`); + doc[DocData].ai_document = JSON.stringify(document_json); + } + } + } + + getSummaries(): string { + return this.documents.map((doc, index) => `${index + 1}) ${doc.summary}`).join('\n') + '\n'; } private async indexDocument(document: AI_Document) { @@ -111,8 +140,4 @@ export class Vectorstore { return []; } } - - getSummaries(): string { - return this.documents.map((doc, index) => `${index + 1}) ${doc.summary}`).join('\n') + '\n'; - } } -- cgit v1.2.3-70-g09d2