aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/nodes/ChatBox/vectorstore
diff options
context:
space:
mode:
authorA.J. Shulman <Shulman.aj@gmail.com>2024-08-30 13:47:30 -0400
committerA.J. Shulman <Shulman.aj@gmail.com>2024-08-30 13:47:30 -0400
commit9594247dfd645516600d8fa5dfd875cbbd6aca13 (patch)
treeb7b8cd10e3da057e1d2feed4062f8f875be28d27 /src/client/views/nodes/ChatBox/vectorstore
parent3a1d859359b462fc9a9f1c001d6681a8d886f2b6 (diff)
tried to add progress bar to chatbox but not showing up
Diffstat (limited to 'src/client/views/nodes/ChatBox/vectorstore')
-rw-r--r--src/client/views/nodes/ChatBox/vectorstore/Vectorstore.ts60
1 files changed, 42 insertions, 18 deletions
diff --git a/src/client/views/nodes/ChatBox/vectorstore/Vectorstore.ts b/src/client/views/nodes/ChatBox/vectorstore/Vectorstore.ts
index 4383bb72d..388574bff 100644
--- a/src/client/views/nodes/ChatBox/vectorstore/Vectorstore.ts
+++ b/src/client/views/nodes/ChatBox/vectorstore/Vectorstore.ts
@@ -60,10 +60,11 @@ export class Vectorstore {
this.index = this.pinecone.Index(this.indexName);
}
- async addAIDoc(doc: Doc) {
+ async addAIDoc(doc: Doc, progressCallback: (progress: number, step: string) => void) {
console.log('Adding AI Document:', doc);
const ai_document_status: string = StrCast(doc.ai_document_status);
- if (ai_document_status !== undefined && ai_document_status !== null && ai_document_status !== '' && ai_document_status !== ' ' && ai_document_status !== '{}') {
+
+ if (ai_document_status !== undefined && ai_document_status !== null && ai_document_status.trim() !== '' && ai_document_status !== '{}') {
if (ai_document_status === 'IN PROGRESS') {
console.log('Already in progress.');
return;
@@ -72,31 +73,54 @@ export class Vectorstore {
} else {
doc.ai_document_status = 'PROGRESS';
console.log(doc);
- console.log(PDFCast(doc.data)?.url?.pathname);
- console.log(CsvCast(doc.data)?.url?.pathname);
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 !== undefined || local_file_path !== null || 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(document_json);
- await this.indexDocument(JSON.parse(JSON.stringify(document_json, (key, value) => (value === null || value === undefined ? undefined : value))));
- console.log(`Document added: ${document_json.file_name}`);
- doc.summary = document_json.summary;
- doc.ai_doc_id = document_json.doc_id;
- this._doc_ids.push(document_json.doc_id);
- doc.ai_purpose = document_json.purpose;
- if (doc.vectorstore_id === undefined || doc.vectorstore_id === null || doc.vectorstore_id === '' || doc.vectorstore_id === '[]') {
+
+ if (local_file_path) {
+ // Start the document creation process
+ const response = await Networking.PostToServer('/createDocument', { file_path: local_file_path });
+ const jobId = response.job_id;
+
+ // Poll the server for progress updates
+ let result: any = null;
+
+ while (!result) {
+ await new Promise(resolve => setTimeout(resolve, 5000)); // Polling interval
+
+ const progressResponse = JSON.parse(await Networking.FetchFromServer(`/getProgress/${jobId}`));
+ if (progressResponse) {
+ const progress = progressResponse.progress;
+ const step = progressResponse.step;
+ progressCallback(progress, step);
+ }
+
+ const resultResponse = JSON.parse(await Networking.FetchFromServer(`/getResult/${jobId}`));
+ if (resultResponse.status === 200) {
+ result = resultResponse.data;
+ }
+ }
+
+ // Process the final document result
+ console.log('Document JSON:', result);
+ this.documents.push(result);
+ await this.indexDocument(JSON.parse(JSON.stringify(result, (key, value) => (value === null || value === undefined ? undefined : value))));
+ console.log(`Document added: ${result.file_name}`);
+ doc.summary = result.summary;
+ doc.ai_doc_id = result.doc_id;
+ this._doc_ids.push(result.doc_id);
+ doc.ai_purpose = result.purpose;
+
+ if (!doc.vectorstore_id) {
doc.vectorstore_id = JSON.stringify([this._id]);
} else {
doc.vectorstore_id = JSON.stringify(JSON.parse(StrCast(doc.vectorstore_id)).concat([this._id]));
}
- if (doc.chunk_simpl === undefined || doc.chunk_simpl === null || doc.chunk_simpl === '' || doc.chunk_simpl === '[]') {
+
+ if (!doc.chunk_simpl) {
doc.chunk_simpl = JSON.stringify({ chunks: [] });
}
- document_json.chunks.forEach((chunk: RAGChunk) => {
+ result.chunks.forEach((chunk: RAGChunk) => {
const chunkToAdd = {
chunkId: chunk.id,
startPage: chunk.metadata.start_page,