From a07a94108d6867ce10d1f4e04e63a001252f9452 Mon Sep 17 00:00:00 2001
From: Yi Ding <yi.s.ding@gmail.com>
Date: Fri, 21 Jul 2023 07:49:00 -0700
Subject: [PATCH] more persistence

---
 .../src/indices/vectorStore/VectorStoreIndex.ts    | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/packages/core/src/indices/vectorStore/VectorStoreIndex.ts b/packages/core/src/indices/vectorStore/VectorStoreIndex.ts
index d3153b358..61479f669 100644
--- a/packages/core/src/indices/vectorStore/VectorStoreIndex.ts
+++ b/packages/core/src/indices/vectorStore/VectorStoreIndex.ts
@@ -23,6 +23,7 @@ import {
 } from "../BaseIndex";
 import { BaseRetriever } from "../../Retriever";
 import { ResponseSynthesizer } from "../../ResponseSynthesizer";
+import { BaseDocumentStore } from "../../storage/docStore/types";
 
 /**
  * The VectorStoreIndex, an index that stores the nodes only according to their vector embedings.
@@ -61,7 +62,8 @@ export class VectorStoreIndex extends BaseIndex<IndexDict> {
       indexStruct = await VectorStoreIndex.buildIndexFromNodes(
         options.nodes,
         serviceContext,
-        vectorStore
+        vectorStore,
+        docStore
       );
     }
 
@@ -112,7 +114,8 @@ export class VectorStoreIndex extends BaseIndex<IndexDict> {
   static async buildIndexFromNodes(
     nodes: BaseNode[],
     serviceContext: ServiceContext,
-    vectorStore: VectorStore
+    vectorStore: VectorStore,
+    docStore: BaseDocumentStore
   ): Promise<IndexDict> {
     const embeddingResults = await this.getNodeEmbeddingResults(
       nodes,
@@ -121,6 +124,13 @@ export class VectorStoreIndex extends BaseIndex<IndexDict> {
 
     vectorStore.add(embeddingResults);
 
+    if (!vectorStore.storesText) {
+      await docStore.addDocuments(
+        embeddingResults.map((result) => result.node),
+        true
+      );
+    }
+
     const indexDict = new IndexDict();
     for (const { node } of embeddingResults) {
       indexDict.addNode(node);
-- 
GitLab