{"id":115087,"date":"2025-02-28T10:48:08","date_gmt":"2025-02-28T10:48:08","guid":{"rendered":"https:\/\/peraltafinancing.com\/analytics\/enhancing-rag-systems-with-nomic-embeddings\/"},"modified":"2025-02-28T10:48:08","modified_gmt":"2025-02-28T10:48:08","slug":"enhancing-rag-systems-with-nomic-embeddings","status":"publish","type":"post","link":"https:\/\/fivemor.com\/?p=115087","title":{"rendered":"Enhancing RAG Systems with Nomic Embeddings"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div id=\"article-start\">\n<p>The intersection of <a href=\"https:\/\/www.analyticsvidhya.com\/blog\/2021\/09\/introduction-to-artificial-intelligence-for-beginners\/\" target=\"_blank\" rel=\"noreferrer noopener\">artificial intelligence<\/a> and data processing has evolved significantly with the rise of multimodal <a href=\"https:\/\/www.analyticsvidhya.com\/blog\/2023\/09\/retrieval-augmented-generation-rag-in-ai\/\" target=\"_blank\" rel=\"noreferrer noopener\">Retrieval-Augmented Generation<\/a> systems. Multimodal RAG goes beyond traditional models that focus only on text. It integrates various data types like text, images, audio, and video. This allows for more nuanced and context-aware responses. A key innovation is Nomic vision embeddings. They create a unified space for both visual and textual data. This enables seamless interaction across different formats. By using advanced models to generate high-quality embeddings, multimodal RAG improves information retrieval. It bridges the gap between different content forms. The result is richer and more informative user experiences.<\/p>\n<h4 class=\"wp-block-heading\" id=\"h-learning-objectives\">Learning Objectives<\/h4>\n<ul class=\"wp-block-list\">\n<li>Understand the fundamentals of multimodal Retrieval-Augmented Generation systems and their advantages over traditional RAG.<\/li>\n<li>Explore the role of Nomic Vision Embeddings in creating a unified embedding space for text and images.<\/li>\n<li>Compare Nomic Vision Embeddings with CLIP models and analyze their performance benchmarks.<\/li>\n<li>Implement a multimodal RAG system in Python using Nomic Vision and Text Embeddings.<\/li>\n<li>Learn how to extract and process textual and visual data from PDFs for multimodal retrieval. <\/li>\n<\/ul>\n<p><em><strong>This article was published as a part of the\u00a0<\/strong><\/em><a href=\"https:\/\/www.analyticsvidhya.com\/datahack\/blogathon\" target=\"_blank\" rel=\"noreferrer noopener\"><em><strong>Data Science Blogathon.<\/strong><\/em><\/a><\/p>\n<h2 class=\"wp-block-heading\" id=\"h-what-is-multimodal-rag\">What is Multimodal RAG?<\/h2>\n<p>Multimodal RAG represents a significant advancement in artificial intelligence. It is build upon traditional RAG systems by incorporating diverse data types such as text, images, audio, and video. Unlike conventional RAG systems that primarily process textual information, multimodal RAG is designed to handle and integrate multiple forms of data simultaneously. This capability allows for more comprehensive understanding and generation of responses that are context-aware across different modalities. <\/p>\n<p><strong>Key Components of Multimodal RAG<\/strong><\/p>\n<ul class=\"wp-block-list\">\n<li><b>Data Ingestion: <\/b>The process begins with ingesting various types of data through specialized processors for each format. This ensures that the system can validate, clean, and normalize incoming data while preserving its essential characteristics<\/li>\n<li><b>Vector Representation:<\/b> Different modalities are processed using respective neural networks (e.g., CLIP for images or BERT for text) to generate unified vector representations or embeddings.\u00a0These embeddings maintain semantic relationships across different modalities.<\/li>\n<li><b>Vector Database Storage:<\/b> The generated embeddings are stored in vector databases optimized with indexing techniques like HNSW or FAISS for efficient retrieval<\/li>\n<li><b>Query Processing:<\/b> Incoming queries are analyzed and transformed into the same vector space as the stored data to determine relevant modalities and generate appropriate embeddings for search<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\" id=\"h-nomic-vision-embeddings\">Nomic Vision Embeddings<\/h2>\n<p>A significant innovation in this field of multimodal embeddings is the incorporation of Nomic vision embeddings, which create a cohesive embedding space for both visual and textual data.\u00a0<\/p>\n<p><a href=\"https:\/\/huggingface.co\/nomic-ai\/nomic-embed-vision-v1.5\" target=\"_blank\" rel=\"nofollow noopener\">Nomic Embed Vision v1 and v1.5\u00a0<\/a>are both high-quality vision embedding models developed by Nomic AI, designed to share the same latent space as their corresponding text embedding models,\u00a0Nomic Embed Text v1 and v1.5, respectively.\u00a0It operates within the same space as Nomic Embed Text, making it well-suited for multimodal tasks such as text-to-image retrieval. With a vision encoder comprising only 92M parameters, Nomic Embed Vision is well-suited for high-volume production applications, complementing the 137M parameters of Nomic Embed Text.<\/p>\n<p><strong>CLIP models suffer in unimodal tasks<\/strong><\/p>\n<p>Multimodal models such as CLIP demonstrate remarkable zero-shot capabilities across different modalities. However, CLIP\u2019s text encoders struggle with tasks beyond image retrieval, as seen in benchmarks like MTEB, which evaluates the effectiveness of text embedding models. Nomic Embed Vision aims to address these limitations by aligning a vision encoder with the existing Nomic Embed Text latent space.<\/p>\n<p>To tackle the issue of underperformance on unimodal tasks, such as semantic similarity, Nomic Embed Vision, a vision encoder, was trained alongside Nomic Embed Text, a long-context text encoder. The training method involved freezing the text encoder and training the vision encoder on image-text pairs. This approach not only produced optimal results but also ensured backward compatibility with the embeddings from Nomic Embed Text.<\/p>\n<h2 class=\"wp-block-heading\" id=\"h-performance-benchmarks-of-nomic-vision-embeddings\">Performance Benchmarks of Nomic Vision Embeddings<\/h2>\n<p>As mentioned earlier, existing multimodal models such as CLIP exhibit impressive zero-shot capabilities across different modalities. However, the performance of CLIP\u2019s text encoders is subpar outside of tasks like image retrieval, as evidenced by benchmarks like MTEB, which evaluates the quality of text embedding models. Nomic Embed Vision is specifically designed to address these shortcomings by aligning a vision encoder with the existing Nomic Embed Text latent space. This alignment results in a unified multimodal latent space that delivers strong performance on image, text, and multimodal tasks, as demonstrated by the Imagenet Zero-Shot, MTEB, and Datacomp benchmarks.<\/p>\n<h2 class=\"wp-block-heading\" id=\"h-hands-on-python-implementation-of-multimodal-rag-with-nomic-vision-embeddings\">Hands on Python Implementation of MultiModal RAG with Nomic Vision Embeddings<\/h2>\n<p>In this tutorial, we will build a multimodal RAG system that can efficiently retrieve information from a PDF containing both textual and visual content. We will build this on Google Colab using T4 GPU (Free tier).<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-step-1-installing-necessary-libraries\">Step 1: Installing Necessary Libraries<\/h3>\n<p>Install all required Python libraries, including OpenAI, Qdrant, Transformers, Torch, and PyMuPDF.<\/p>\n<pre class=\"wp-block-code\"><code>!pip install openai==1.55.3 httpx==0.27.2 \n!pip install qdrant_client\n!pip install transformers\n!pip install transformers torch pillow\n!pip install --upgrade nltk\n!pip install sentence-transformers\n!pip install --upgrade qdrant-client fastembed Pillow\n!pip install PyMuPDF<\/code><\/pre>\n<h3 class=\"wp-block-heading\" id=\"h-step-2-setting-openai-api-key-and-importing-necessary-libraries\">Step 2: Setting OpenAI API key and Importing Necessary Libraries<\/h3>\n<p>Set up the OpenAI API key and import essential libraries like PyMuPDF, PIL, LangChain, and OpenAI.<\/p>\n<pre class=\"wp-block-code\"><code>from openai import ChatCompletion\nimport openai\nimport os\nfrom openai import AzureOpenAI\nfrom PIL import Image\nimport torch\nimport numpy as np\nimport fitz  # PyMuPDF\nimport os\nimport time\nfrom langchain_text_splitters import RecursiveCharacterTextSplitter\nfrom langchain_core.messages import HumanMessage\nfrom langchain_openai import ChatOpenAI\nfrom openai import ChatCompletion\nimport openai\nimport base64\nfrom base64 import b64decode\n\nos.environ[\"OPENAI_API_KEY\"] = ''<\/code><\/pre>\n<p>Set up the OpenAI API key and import essential libraries like PyMuPDF, PIL, LangChain, and OpenAI.<\/p>\n<pre class=\"wp-block-code\"><code>#images\n\ndef extract_images_from_pdf(pdf_path, output_folder):\n    pdf_document = fitz.open(pdf_path)\n    os.makedirs(output_folder, exist_ok=True)\n    #Iterating throught the pages in the PDF\n    for page_number in range(len(pdf_document)):\n        page = pdf_document[page_number]\n        #Function For Getting Images From the PDF Pages\n        images = page.get_images(full=True)\n\n        for image_index, img in enumerate(images):\n            xref = img[0]\n            base_image = pdf_document.extract_image(xref)\n            image_bytes = base_image[\"image\"]\n            image_ext = base_image[\"ext\"]\n            image_filename = f\"page_{page_number+1}_image_{image_index+1}.{image_ext}\"\n            image_path = os.path.join(output_folder, image_filename)\n            with open(image_path, \"wb\") as image_file:\n                image_file.write(image_bytes)\n    pdf_document.close()<\/code><\/pre>\n<p>Use PyMuPDF to extract text from all pages of the PDF and store it in a list.<\/p>\n<pre class=\"wp-block-code\"><code>def extract_text_pdf(path):\n    \"\"\"Extracts text from a PDF using PyMuPDF.\"\"\"\n    doc = fitz.open(path)\n    text_results = []\n    for page in doc:\n        text = page.get_text()\n        text_results.append(text)\n    return text_results<\/code><\/pre>\n<h3 class=\"wp-block-heading\" id=\"h-step-5-saving-extracted-text-and-images-from-pdf\">Step 5: Saving Extracted Text and Images From PDF<\/h3>\n<p>Save images in the \u201ctest\u201d directory and extract text for further processing.<\/p>\n<pre class=\"wp-block-code\"><code>def get_contents(pdf_path, output_directory):\n  \"\"\"Extracts text and images from a PDF, saves images, and returns text and elapsed time.\"\"\"\n\n  extract_images_from_pdf(pdf_path, output_directory)\n  text_results=extract_text_pdf(pdf_path)\n  return(text_results)\n  \npdf_path = \"\/content\/retailcoffee.pdf\"\noutput_directory = \"\/content\/test\"\ntext_results=get_contents(pdf_path, output_directory)<\/code><\/pre>\n<p>We use this <a href=\"https:\/\/www.e3s-conferences.org\/articles\/e3sconf\/pdf\/2021\/68\/e3sconf_netid21_03030.pdf\" target=\"_blank\" rel=\"nofollow noopener\">PDF <\/a>that has both text and images or charts to test the multimodal RAG.\u00a0<\/p>\n<p>We save the images extracted from the PDF using the\u00a0PyMuPDF library in the \u201ctest\u201d directory. In the next steps, create embeddings of these images so as to be able to retrieve information from them in future based on a user query.<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-step-6-chunking-text-data-for-rag\">Step 6. Chunking Text Data For RAG<\/h3>\n<p>Split extracted text into smaller chunks using LangChain\u2019s RecursiveCharacterTextSplitter.<\/p>\n<pre class=\"wp-block-code\"><code>text_splitter = RecursiveCharacterTextSplitter(\n        chunk_size=2048,\n        chunk_overlap=50,\n        length_function=len,\n        is_separator_regex=False,\n        separators=[\n            \"\\n\\n\",\n            \"\\n\",\n            \" \",\n            \".\",\n            \",\",\n            \"\\u200b\",  # Zero-width space\n            \"\\uff0c\",  # Fullwidth comma\n            \"\\u3001\",  # Ideographic comma\n            \"\\uff0e\",  # Fullwidth full stop\n            \"\\u3002\",  # Ideographic full stop\n            \"\",\n        ],\n    )\n\ndoc_texts = text_splitter.create_documents(text_results)<\/code><\/pre>\n<h3 class=\"wp-block-heading\" id=\"h-step-7-loading-nomic-text-embedding-model-and-nomic-vision-embedding-model\">Step 7: Loading Nomic Text Embedding Model and\u00a0Nomic Vision Embedding Model<\/h3>\n<p>Load Nomic\u2019s text and vision embedding models using Hugging Face\u2019s Transformers library.<\/p>\n<pre class=\"wp-block-code\"><code>from transformers import AutoTokenizer, AutoModel\n\n# Load the tokenizer and model\ntext_tokenizer = AutoTokenizer.from_pretrained(\"nomic-ai\/nomic-embed-text-v1.5\", trust_remote_code=True)\ntext_model = AutoModel.from_pretrained(\"nomic-ai\/nomic-embed-text-v1.5\", trust_remote_code=True)\n\ndef text_embeddings(text):\n    inputs = text_tokenizer(text, return_tensors=\"pt\", padding=True, truncation=True)\n    outputs = text_model(**inputs)\n    embeddings = outputs.last_hidden_state.mean(dim=1)\n    return embeddings[0].detach().numpy()\n    \nfrom transformers import AutoModel, AutoProcessor\nfrom PIL import Image\nimport torch\nmodel = AutoModel.from_pretrained(\"nomic-ai\/nomic-embed-vision-v1.5\", trust_remote_code=True)\nprocessor = AutoProcessor.from_pretrained(\"nomic-ai\/nomic-embed-vision-v1.5\")<\/code><\/pre>\n<h3 class=\"wp-block-heading\" id=\"h-step-8-generating-text-and-image-embeddings-for-our-data\">Step 8: Generating Text and Image Embeddings For Our Data<\/h3>\n<p>Convert text and images into vector embeddings for efficient retrieval.<\/p>\n<pre class=\"wp-block-code\"><code>#Text Embeddins\ntexts_embeded = [text_embeddings(document.page_content) for document in doc_texts]\n\n#Image Embeddings\nimage_embeddings = []\nfor img in image_files:\n    try:\n        image = Image.open(os.path.join(output_directory, img))\n        inputs = processor(images=image, return_tensors=\"pt\")\n        with torch.no_grad():\n            outputs = model(**inputs)\n        embeddings = outputs.last_hidden_state\n        if embeddings.size(0) &gt; 0:  # Ensure the batch size is non-zero\n\n            image_embedding = embeddings.mean(dim=1).squeeze().cpu().numpy()\n            image_embeddings.append(image_embedding)\n        else:\n            print(f\"No Embeddings For {img}\")\n\n    except Exception as e:\n        print(e)\n\n#SIZE OF Text &amp; Image Embeddings\ntext_embeddings_size=len(texts_embeded[0])\nimage_embeddings_size=len(image_embeddings[0])<\/code><\/pre>\n<h3 class=\"wp-block-heading\" id=\"h-step-9-storing-text-embeddings-in-qdrant\">Step 9: Storing Text Embeddings in Qdrant\u00a0<\/h3>\n<p>Qdrant\u00a0is\u00a0an open-source vector database and\u00a0search engine\u00a0designed to efficiently store, manage, and query high-dimensional vectors.We save our embeddings in this vector DB.<\/p>\n<pre class=\"wp-block-code\"><code>from qdrant_client import QdrantClient, models\n\nclient = QdrantClient(\":memory:\")\n\nif not client.collection_exists(\"text1\"): #creating a Collection\n client.create_collection(\n        collection_name =\"text1\",\n      vectors_config=models.VectorParams(\n        size=text_embeddings_size,  # Vector size is defined by used model\n        distance=models.Distance.COSINE,\n    ),\n )\n \n client.upload_points(\n    collection_name=\"text1\",\n    points=[\n        models.PointStruct(\n            id=str(uuid.uuid4()),\n            vector=np.array(texts_embeded[idx]),\n            payload={\n                \"metadata\": doc.metadata,\n                \"content\": doc.page_content\n            }\n        )\n        for idx, doc in enumerate(doc_texts)\n    ]\n)<\/code><\/pre>\n<h3 class=\"wp-block-heading\" id=\"h-step-10-storing-image-embeddings-in-qdrant\">Step 10: Storing Image Embeddings in Qdrant\u00a0<\/h3>\n<p>Save image embeddings in a separate Qdrant collection for multimodal retrieval.<\/p>\n<pre class=\"wp-block-code\"><code>if not client.collection_exists(\"images1\"):\n    client.create_collection(\n        collection_name=\"images1\",\n        vectors_config=models.VectorParams(\n        size=image_embeddings_size,  # Vector size is defined by used model\n        distance=models.Distance.COSINE,\n    ),\n  )\n  \n# Ensure that image_embeddings are not empty\nif len(image_embeddings) &gt; 0:\n    client.upload_points(\n        collection_name=\"images1\",\n        points=[\n            models.PointStruct(\n                id=str(uuid.uuid4()),  # unique id\n                vector= np.array(image_embeddings[idx])  ,\n                payload={\"image_path\": output_directory+'\/'+str(image_files[idx])}  # Image path as metadata\n            )\n            for idx in range(len(image_embeddings))  \n    )\nelse:\n    print(\"No embeddings found\")\n<\/code><\/pre>\n<h3 class=\"wp-block-heading\" id=\"h-step-11-creating-a-multimodal-retriever-for-retrieving-images-and-text\">Step 11: Creating a MultiModal Retriever For Retrieving Images and Text<\/h3>\n<p>Retrieve the most relevant text and image embeddings based on a user query.<\/p>\n<pre class=\"wp-block-code\"><code>def MultiModalRetriever(query):\n\n    query = text_embeddings(query)\n\n    # Retrieve text hits\n    text_hits = client.query_points(\n        collection_name=\"text1\",\n        query=query,\n        limit=3,3\n    ).points\n    # Retrieve image hits\n    Image_hits = client.query_points(\n        collection_name=\"images1\",\n        query=query,\n        limit=5,\n    ).points\n\n    return text_hits, Image_hits\n<\/code><\/pre>\n<h3 class=\"wp-block-heading\" id=\"h-step-12-creating-a-multimodal-rag-using-langchain\">Step 12: Creating a MultiModal RAG using LangChain<\/h3>\n<p>Use LangChain to process retrieved text and images, generating context-aware responses using GPT-4o.<\/p>\n<pre class=\"wp-block-code\"><code>def MultiModalRAG(context,images,user_query,model):  \n    # Helper function to encode an image as a base64 string\n    def encode_image(image_path):\n        if image_path:\n            with open(image_path, \"rb\") as image_file:\n                return base64.b64encode(image_file.read()).decode()\n        return None\n\n\n    image_paths = images   \n    #three images based on retrived images\n    img_base64 = encode_image(image_paths[0])        \n    img_base641 = encode_image(image_paths[1])  \n    img_base642 = encode_image(image_paths[2])  \n\n    message = HumanMessage(\n            content=[\n                {\"type\": \"text\", \"text\": \"BASED ON RETRIEVED CONTEXT %s ONLY, ANSWER THE FOLLOWING QUERY %s. Context can be tables, texts or Images\"%(context,user_query)},\n                {\n                    \"type\": \"image_url\",\n                    \"image_url\": {\"url\": f\"data:image\/jpeg;base64,{img_base64}\"},\n                },\n                {\n                    \"type\": \"image_url\",\n                    \"image_url\": {\"url\": f\"data:image\/jpeg;base64,{img_base641}\"},\n                },\n                {\n                    \"type\": \"image_url\",\n                    \"image_url\": {\"url\": f\"data:image\/jpeg;base64,{img_base642}\"},\n                },\n            ],)\n\n    model = ChatOpenAI(model=model)    \n    response = model.invoke([message])\n    return response.content\n\n\ndef RAG(query):\n  text_hits, Image_hits=MultiModalRetriever(query)\n\n  retrieved_images=[i.payload['image_path'] for i in Image_hits]\n  print(retrieved_images)\n  answer=MultiModalRAG(text_hits,retrieved_images,query,\"gpt-4o\")\n  return(answer)<\/code><\/pre>\n<h2 class=\"wp-block-heading\" id=\"h-querying-the-model\">Querying the Model<\/h2>\n<p>Let us now query our multimodal RAG system with different queries to test its multimodal capability,\u00a0<\/p>\n<pre class=\"wp-block-code\"><code>RAG(\"Revenue of Starbucks in billion dollars of Food in 2020?\")<\/code><\/pre>\n<p><b>Output<\/b>:<\/p>\n<pre class=\"wp-block-preformatted\">'Based on the chart showing Starbucks' revenue by product for 2020, the revenue from<br\/>food is approximately $3 billion.'<\/pre>\n<p>The response to this query is only present in the following chart (Fig 4) in the <a href=\"https:\/\/www.e3s-conferences.org\/articles\/e3sconf\/pdf\/2021\/68\/e3sconf_netid21_03030.pdf\" target=\"_blank\" rel=\"nofollow noopener\">PDF <\/a>and not in any text. So our, multimodal RAG is able to retrieve this information accurately.<\/p>\n<figure class=\"wp-block-image size-full figure  mt-2 mb-2 d-table mx-auto\"><img loading=\"lazy\" decoding=\"async\" width=\"565\" height=\"364\" src=\"https:\/\/cdn.analyticsvidhya.com\/wp-content\/uploads\/2025\/02\/image_88_7KLzHqg.webp\" alt=\"response to query\" class=\"wp-image-223638\" srcset=\"https:\/\/cdn.analyticsvidhya.com\/wp-content\/uploads\/2025\/02\/image_88_7KLzHqg.webp 565w, https:\/\/cdn.analyticsvidhya.com\/wp-content\/uploads\/2025\/02\/image_88_7KLzHqg-300x193.webp 300w, https:\/\/cdn.analyticsvidhya.com\/wp-content\/uploads\/2025\/02\/image_88_7KLzHqg-150x97.webp 150w\" sizes=\"auto, (max-width: 565px) 100vw, 565px\"\/><\/figure>\n<pre class=\"wp-block-preformatted\">RAG(\"Explain what the Ansoff Matrix is for Starbucks.\")<\/pre>\n<p><b>Output<\/b>:<\/p>\n<pre class=\"wp-block-preformatted\"><br\/>'The Ansoff Matrix is a strategic tool that helps businesses like Starbucks analyze<br\/>their growth strategies. For Starbucks, it can be broken down as follows: <br\/>1. **Market Penetration:** Starbu cks focuses on increasing sales of existing<br\/>products in current markets. This includes enhancing the customer experience, leveraging their mobile app for convenience, and promoting existing offerings.<br\/>2. **Product Development:** Starbucks introduces new products for existing markets. Examples include launching new beverage options or introducing meatless breakfast<br\/>items to adapt to changing consumer preferences.<br\/>3. **Market Development:** This involves Starbucks expanding into new geographical<br\/>locations or market segments with existing products. It selects high-traffic<br\/>locations and creates a consistent brand image and store experience to attract customers.<br\/>4. **Diversification:** Introducing entirely new products to new markets. This could<br\/>involve Starbuck s exploring areas like offering alcoholic beverages to attract <br\/>different customer demographics. <br\/>Overall, the Ansoff Matrix helps Starbucks strategically plan how to grow and adapt<br\/>in various market conditions by focusing on either current or new products and <br\/>markets.<\/pre>\n<p>The response to this query as well is only present in the following diagram (Fig 3) in the <a href=\"https:\/\/www.e3s-conferences.org\/articles\/e3sconf\/pdf\/2021\/68\/e3sconf_netid21_03030.pdf\" target=\"_blank\" rel=\"nofollow noopener\">PDF <\/a>and not in any text. So our, multimodal RAG is able to retrieve this information accurately.<\/p>\n<figure class=\"wp-block-image size-full is-resized figure  mt-2 mb-2 d-table mx-auto\"><img loading=\"lazy\" decoding=\"async\" width=\"547\" height=\"493\" src=\"https:\/\/cdn.analyticsvidhya.com\/wp-content\/uploads\/2025\/02\/image_90.webp\" alt=\"output\" class=\"wp-image-223645\" style=\"width:388px;height:auto\" srcset=\"https:\/\/cdn.analyticsvidhya.com\/wp-content\/uploads\/2025\/02\/image_90.webp 547w, https:\/\/cdn.analyticsvidhya.com\/wp-content\/uploads\/2025\/02\/image_90-300x270.webp 300w, https:\/\/cdn.analyticsvidhya.com\/wp-content\/uploads\/2025\/02\/image_90-150x135.webp 150w\" sizes=\"auto, (max-width: 547px) 100vw, 547px\"\/><\/figure>\n<pre class=\"wp-block-preformatted\">RAG(\"Global coffee consumption in 2017\")<\/pre>\n<p><b>Output<\/b>:<\/p>\n<pre class=\"wp-block-preformatted\"><br\/>'The global coffee consumption in 2017 was 161.37 million bags.'<\/pre>\n<p>The response to this query as well is only present in the following chart (Fig 1) in the <a href=\"https:\/\/www.e3s-conferences.org\/articles\/e3sconf\/pdf\/2021\/68\/e3sconf_netid21_03030.pdf\" target=\"_blank\" rel=\"nofollow noopener\">PDF <\/a>and not in any text. So our, multimodal RAG is able to retrieve this information accurately.<\/p>\n<figure class=\"wp-block-image size-full figure mt-2 mb-2 d-table mx-auto\"><img loading=\"lazy\" decoding=\"async\" width=\"544\" height=\"307\" src=\"https:\/\/cdn.analyticsvidhya.com\/wp-content\/uploads\/2025\/02\/image_53WBphV.webp\" alt=\"coffee consumption\" class=\"wp-image-223648\" srcset=\"https:\/\/cdn.analyticsvidhya.com\/wp-content\/uploads\/2025\/02\/image_53WBphV.webp 544w, https:\/\/cdn.analyticsvidhya.com\/wp-content\/uploads\/2025\/02\/image_53WBphV-300x169.webp 300w, https:\/\/cdn.analyticsvidhya.com\/wp-content\/uploads\/2025\/02\/image_53WBphV-150x85.webp 150w\" sizes=\"auto, (max-width: 544px) 100vw, 544px\"\/><\/figure>\n<h2 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusion<\/h2>\n<p>The integration of Nomic vision embeddings into multimodal RAG systems represents a major leap in AI, allowing seamless interaction between visual and textual data for enhanced understanding and response generation. By overcoming limitations seen in models like CLIP, Nomic Embed Vision offers a unified embedding space, boosting performance on multimodal tasks. This development paves the way for richer, more context-aware user experiences in high-volume production environments.<\/p>\n<h4 class=\"wp-block-heading\" id=\"h-key-takeaways\">Key Takeaways<\/h4>\n<ul class=\"wp-block-list\">\n<li>Multimodal Retrieval-Augmented Generation (RAG) systems integrate various data types, such as text, images, audio, and video, enabling more context-aware and nuanced outputs compared to traditional RAG systems focused on text alone.<\/li>\n<li>Nomic vision embeddings play a key role by unifying visual and textual data into a single embedding space, enhancing the system\u2019s ability to retrieve and synthesize information across multiple modalities.<\/li>\n<li>The multimodal RAG system processes data through specialized ingestion, vector representation, and storage techniques, ensuring efficient retrieval and meaningful responses across diverse content formats.<\/li>\n<li>While CLIP models excel in zero-shot capabilities, they struggle with unimodal tasks like semantic similarity. Nomic Embed Vision addresses this by aligning vision and text encoders, improving performance on a wide range of tasks.<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\" id=\"h-frequently-asked-questions\">Frequently Asked Questions<\/h2>\n<div class=\"schema-faq wp-block-yoast-faq-block\">\n<div class=\"schema-faq-section\" id=\"faq-question-1740649610163\"><strong class=\"schema-faq-question\">Q1. <b>What is Multimodal RAG?<\/b><\/strong> <\/p>\n<p class=\"schema-faq-answer\">A. Multimodal Retrieval-Augmented Generation (RAG) is an advanced AI architecture designed to process and synthesize data from various modalities, including text, images, audio, and video, enabling more context-aware and nuanced outputs. Unlike traditional RAG systems that focus primarily on text, multimodal RAG integrates multiple data types for more comprehensive understanding and response generation.<\/p>\n<\/p><\/div>\n<div class=\"schema-faq-section\" id=\"faq-question-1740649622135\"><strong class=\"schema-faq-question\">Q2. <b>How do Nomic Vision Embeddings enhance Multimodal RAG systems?<\/b><\/strong> <\/p>\n<p class=\"schema-faq-answer\">A. Nomic vision embeddings create a unified embedding space for both visual and textual data, allowing seamless interaction between different formats. This integration improves the system\u2019s ability to retrieve and process information across modalities, resulting in richer and more informative user experiences.<\/p>\n<\/p><\/div>\n<div class=\"schema-faq-section\" id=\"faq-question-1740649635907\"><strong class=\"schema-faq-question\">Q3. <b>What is the main advantage of Nomic Embed Vision in multimodal tasks?<\/b><\/strong> <\/p>\n<p class=\"schema-faq-answer\">A. Nomic Embed Vision is designed to integrate both image and text comprehension in a shared latent space, making it highly suitable for tasks such as text-to-image retrieval. Its 92M parameter vision encoder complements the 137M parameter Nomic Embed Text, making it ideal for high-volume production environments.<\/p>\n<\/p><\/div>\n<div class=\"schema-faq-section\" id=\"faq-question-1740649649949\"><strong class=\"schema-faq-question\">Q4. <b>How does Nomic Embed Vision overcome the limitations of CLIP models?<\/b><\/strong> <\/p>\n<p class=\"schema-faq-answer\">A. CLIP models demonstrate strong zero-shot capabilities but struggle with unimodal tasks like semantic similarity. Nomic Embed Vision addresses this by aligning its vision encoder with the Nomic Embed Text latent space, ensuring better performance on a wider range of tasks, including unimodal tasks.<\/p>\n<\/p><\/div>\n<div class=\"schema-faq-section\" id=\"faq-question-1740649662940\"><strong class=\"schema-faq-question\">Q5. <b>What are the key benchmarks that demonstrate Nomic Vision Embeddings\u2019 performance?<\/b><\/strong> <\/p>\n<p class=\"schema-faq-answer\">A. Nomic Embed Vision has been benchmarked against Imagenet Zero-Shot, MTEB, and Datacomp, showing strong performance across image, text, and multimodal tasks. These benchmarks highlight its ability to bridge the gap between different data types while maintaining high accuracy and efficiency.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<p><strong>The media shown in this article is not owned by Analytics Vidhya and is used at the Author\u2019s discretion.<\/strong><\/p>\n<div class=\"border-top py-3 author-info my-4\">\n<div class=\"author-card d-flex align-items-center\">\n<div class=\"flex-shrink-0 overflow-hidden\">\n                                    <a href=\"https:\/\/www.analyticsvidhya.com\/blog\/author\/mimi6\/\" class=\"text-decoration-none active-avatar\"><br \/>\n                                                                       <img decoding=\"async\" src=\"https:\/\/av-eks-lekhak.s3.amazonaws.com\/media\/lekhak-profile-images\/converted_image_ZkJo4gb.webp\" width=\"48\" height=\"48\" alt=\"Nibedita Dutta\" loading=\"lazy\" class=\"rounded-circle\"\/><\/p>\n<p>                                <\/a>\n                                <\/div>\n<\/p><\/div>\n<p>Nibedita completed her master\u2019s in Chemical Engineering from IIT Kharagpur in 2014 and is currently working as a Senior Data Scientist. In her current capacity, she works on building intelligent ML-based solutions to improve business processes.               <\/p>\n<\/p><\/div>\n<\/p><\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>The intersection of artificial intelligence and data processing has evolved significantly with the rise of multimodal Retrieval-Augmented Generation systems. Multimodal RAG goes beyond traditional models that focus only on text. It integrates various data types like text, images, audio, and video. This allows for more nuanced and context-aware responses. A key innovation is Nomic vision [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":115088,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12033],"tags":[5815,51215,16626,51214,32726,11355],"dealstore":[],"offerexpiration":[],"class_list":["post-115087","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-analytics","tag-blogathon","tag-embeddings","tag-enhancing","tag-nomic","tag-rag","tag-systems"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Enhancing RAG Systems with Nomic Embeddings - Som2ny Network<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fivemor.com\/?p=115087\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Enhancing RAG Systems with Nomic Embeddings - Som2ny Network\" \/>\n<meta property=\"og:description\" content=\"The intersection of artificial intelligence and data processing has evolved significantly with the rise of multimodal Retrieval-Augmented Generation systems. Multimodal RAG goes beyond traditional models that focus only on text. It integrates various data types like text, images, audio, and video. This allows for more nuanced and context-aware responses. A key innovation is Nomic vision [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fivemor.com\/?p=115087\" \/>\n<meta property=\"og:site_name\" content=\"Som2ny Network\" \/>\n<meta property=\"article:published_time\" content=\"2025-02-28T10:48:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/Integrating-Vision-and-Text-Enhancing-RAG-Systems-with-Nomic-Embeddings.webp.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"872\" \/>\n\t<meta property=\"og:image:height\" content=\"473\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fivemor.com\/?p=115087#article\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/?p=115087\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371\"},\"headline\":\"Enhancing RAG Systems with Nomic Embeddings\",\"datePublished\":\"2025-02-28T10:48:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fivemor.com\/?p=115087\"},\"wordCount\":1737,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fivemor.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/?p=115087#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/Integrating-Vision-and-Text-Enhancing-RAG-Systems-with-Nomic-Embeddings.webp.webp\",\"keywords\":[\"Blogathon\",\"Embeddings\",\"Enhancing\",\"Nomic\",\"RAG\",\"Systems\"],\"articleSection\":[\"Analytics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fivemor.com\/?p=115087#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fivemor.com\/?p=115087\",\"url\":\"https:\/\/fivemor.com\/?p=115087\",\"name\":\"Enhancing RAG Systems with Nomic Embeddings - Som2ny Network\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fivemor.com\/?p=115087#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/?p=115087#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/Integrating-Vision-and-Text-Enhancing-RAG-Systems-with-Nomic-Embeddings.webp.webp\",\"datePublished\":\"2025-02-28T10:48:08+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fivemor.com\/?p=115087#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fivemor.com\/?p=115087\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/?p=115087#primaryimage\",\"url\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/Integrating-Vision-and-Text-Enhancing-RAG-Systems-with-Nomic-Embeddings.webp.webp\",\"contentUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/Integrating-Vision-and-Text-Enhancing-RAG-Systems-with-Nomic-Embeddings.webp.webp\",\"width\":872,\"height\":473},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fivemor.com\/?p=115087#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fivemor.com\/?bp_activities=1\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Enhancing RAG Systems with Nomic Embeddings\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fivemor.com\/#website\",\"url\":\"https:\/\/fivemor.com\/\",\"name\":\"Som2ny Network\",\"description\":\"Daily Deals\",\"publisher\":{\"@id\":\"https:\/\/fivemor.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fivemor.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/fivemor.com\/#organization\",\"name\":\"Som2ny Network\",\"url\":\"https:\/\/fivemor.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png\",\"contentUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png\",\"width\":300,\"height\":86,\"caption\":\"Som2ny Network\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/fivemor.com\"],\"url\":\"https:\/\/fivemor.com\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Enhancing RAG Systems with Nomic Embeddings - Som2ny Network","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fivemor.com\/?p=115087","og_locale":"en_US","og_type":"article","og_title":"Enhancing RAG Systems with Nomic Embeddings - Som2ny Network","og_description":"The intersection of artificial intelligence and data processing has evolved significantly with the rise of multimodal Retrieval-Augmented Generation systems. Multimodal RAG goes beyond traditional models that focus only on text. It integrates various data types like text, images, audio, and video. This allows for more nuanced and context-aware responses. A key innovation is Nomic vision [&hellip;]","og_url":"https:\/\/fivemor.com\/?p=115087","og_site_name":"Som2ny Network","article_published_time":"2025-02-28T10:48:08+00:00","og_image":[{"width":872,"height":473,"url":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/Integrating-Vision-and-Text-Enhancing-RAG-Systems-with-Nomic-Embeddings.webp.webp","type":"image\/webp"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fivemor.com\/?p=115087#article","isPartOf":{"@id":"https:\/\/fivemor.com\/?p=115087"},"author":{"name":"admin","@id":"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371"},"headline":"Enhancing RAG Systems with Nomic Embeddings","datePublished":"2025-02-28T10:48:08+00:00","mainEntityOfPage":{"@id":"https:\/\/fivemor.com\/?p=115087"},"wordCount":1737,"commentCount":0,"publisher":{"@id":"https:\/\/fivemor.com\/#organization"},"image":{"@id":"https:\/\/fivemor.com\/?p=115087#primaryimage"},"thumbnailUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/Integrating-Vision-and-Text-Enhancing-RAG-Systems-with-Nomic-Embeddings.webp.webp","keywords":["Blogathon","Embeddings","Enhancing","Nomic","RAG","Systems"],"articleSection":["Analytics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fivemor.com\/?p=115087#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fivemor.com\/?p=115087","url":"https:\/\/fivemor.com\/?p=115087","name":"Enhancing RAG Systems with Nomic Embeddings - Som2ny Network","isPartOf":{"@id":"https:\/\/fivemor.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fivemor.com\/?p=115087#primaryimage"},"image":{"@id":"https:\/\/fivemor.com\/?p=115087#primaryimage"},"thumbnailUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/Integrating-Vision-and-Text-Enhancing-RAG-Systems-with-Nomic-Embeddings.webp.webp","datePublished":"2025-02-28T10:48:08+00:00","breadcrumb":{"@id":"https:\/\/fivemor.com\/?p=115087#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fivemor.com\/?p=115087"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/?p=115087#primaryimage","url":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/Integrating-Vision-and-Text-Enhancing-RAG-Systems-with-Nomic-Embeddings.webp.webp","contentUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/Integrating-Vision-and-Text-Enhancing-RAG-Systems-with-Nomic-Embeddings.webp.webp","width":872,"height":473},{"@type":"BreadcrumbList","@id":"https:\/\/fivemor.com\/?p=115087#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fivemor.com\/?bp_activities=1"},{"@type":"ListItem","position":2,"name":"Enhancing RAG Systems with Nomic Embeddings"}]},{"@type":"WebSite","@id":"https:\/\/fivemor.com\/#website","url":"https:\/\/fivemor.com\/","name":"Som2ny Network","description":"Daily Deals","publisher":{"@id":"https:\/\/fivemor.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fivemor.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/fivemor.com\/#organization","name":"Som2ny Network","url":"https:\/\/fivemor.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/#\/schema\/logo\/image\/","url":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png","contentUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png","width":300,"height":86,"caption":"Som2ny Network"},"image":{"@id":"https:\/\/fivemor.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png","caption":"admin"},"sameAs":["https:\/\/fivemor.com"],"url":"https:\/\/fivemor.com\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts\/115087","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=115087"}],"version-history":[{"count":0,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts\/115087\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/media\/115088"}],"wp:attachment":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=115087"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=115087"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=115087"},{"taxonomy":"dealstore","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fdealstore&post=115087"},{"taxonomy":"offerexpiration","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fofferexpiration&post=115087"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}