diff --git a/packages/core/src/indices/vectorStore/VectorStoreIndex.ts b/packages/core/src/indices/vectorStore/VectorStoreIndex.ts
index d3153b358a7d3061c5fe4f0cc42282868da1ed4c..61479f669df5c9eba8b16814a88054f684a464a3 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);