Solve Empty Text Vector Store with MM vector stores. Update MM docs
diff --git a/docs/module_guides/models/multi_modal.md b/docs/module_guides/models/multi_modal.md
index b51dcec4e022e..166164bdf70d5 100644
--- a/docs/module_guides/models/multi_modal.md
+++ b/docs/module_guides/models/multi_modal.md
@@ -47,17 +47,23 @@ from llama_index import (
 # Create a local Qdrant vector store
 client = qdrant_client.QdrantClient(path="qdrant_mm_db")
 
+# if you only need image_store for image retrieval,
+# you can remove text_sotre
 text_store = QdrantVectorStore(
     client=client, collection_name="text_collection"
 )
 image_store = QdrantVectorStore(
     client=client, collection_name="image_collection"
 )
+
+# if you only need image_store for image retrieval,
+# don't need to pass text_store for StorageContext
 storage_context = StorageContext.from_defaults(vector_store=text_store)
+# storage_context = StorageContext.from_defaults()
 
-# Create the MultiModal index
+# Load text and image documents from local folder
 documents = SimpleDirectoryReader("./data_folder/").load_data()
-
+# Create the MultiModal index
 index = MultiModalVectorStoreIndex.from_documents(
     documents, storage_context=storage_context, image_vector_store=image_store
 )
@@ -140,7 +146,7 @@ Below table lists some vector stores supporting Multi-Modal use cases. Our Llama
 
 ## Multi-Modal LLM Modules
 
-We support integrations with GPT-4V, LLaVA, Fuyu-8B, CLIP, and more.
+We support integrations with GPT4-V, CLIP (OpenAI), BLIP (Salesforce), and Replicate (LLaVA, Fuyu-8B, MiniGPT-4, CogVLM), and more.
 
 ```{toctree}
 ---
diff --git a/llama_index/indices/multi_modal/retriever.py b/llama_index/indices/multi_modal/retriever.py
index 3d7ad8bea3036..284a4a41fe556 100644
--- a/llama_index/indices/multi_modal/retriever.py
+++ b/llama_index/indices/multi_modal/retriever.py
@@ -117,10 +117,16 @@ def _retrieve(
         self,
         query_bundle: QueryBundle,
     ) -> List[NodeWithScore]:
-        res = self._text_retrieve(query_bundle)
-        # using text to image retrievel here for image retrieval
-        # users can also use image_to_image retrieval
-        res.extend(self._text_to_image_retrieve(query_bundle))
+        res = []
+        # If text vector store is not empty, retrieve text nodes
+        # If text vector store is empty, please create index without text vector store
+        if self._vector_store.stores_text:
+            res.extend(self._text_retrieve(query_bundle))
+
+        # If image vector store is not empty, retrieve text nodes
+        # If image vector store is empty, please create index without image vector store
+        if self._image_vector_store.stores_text:
+            res.extend(self._text_to_image_retrieve(query_bundle))
         return res
 
     def _text_retrieve(

# Description

* fix the MM vector store with only image store issue. Enable user only query image vector index without text vector index
* update MM doc to reflect in the guideline. so user can only query image vector index

Fixes # (issue)

## Type of Change

Please delete options that are not relevant.

- [x] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] This change requires a documentation update

# How Has This Been Tested?

Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

- [x] Added new unit/integration tests
- [ ] Added new notebook (that tests end-to-end)
- [ ] I stared at the code and made sure it makes sense

# Suggested Checklist:

- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] I have added Google Colab support for the newly added notebooks.
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] I ran `make format; make lint` to appease the lint gods
