{"id":16998,"date":"2025-03-31T14:44:55","date_gmt":"2025-03-31T21:44:55","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=16998"},"modified":"2025-06-13T20:40:17","modified_gmt":"2025-06-14T03:40:17","slug":"extending-rag-excel-couchbase-llamaindex-bedrock","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/","title":{"rendered":"Extending RAG capabilities to Excel with Couchbase, LLamaIndex, and Amazon Bedrock"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">As everything around us is gradually becoming more data-driven, Excel is still integral for businesses, providing the capability to provide invaluable insights from the data in the sheets. However, data scientists and analysts agree that extracting meaningful information from these vast datasets can be extremely time-consuming and requires specialized skill sets. But this is where Generative AI and Large Language Models can help simplify the insights generation process. A major component to help with this process is <a href=\"https:\/\/www.couchbase.com\/blog\/tag\/rag-retrieval-augmented-generation\/\">Retrieval Augmented Generation (RAG)<\/a>.\u00a0<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p><span style=\"font-weight: 400;\">RAG is a powerful technique that aids the accuracy of large language models by enabling the model to have access to external facts through information retrieval. Typically, large language models (LLMs) take a user\u2019s input and deliver responses based on information the LLM has been trained on (which can sometimes be outdated or incorrect). RAG combines this information with supplemental data like a company\u2019s knowledge base or relevant documents, enabling it to deliver factually accurate, contextually relevant responses.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This blog will guide you on how to build a RAG system specifically tailored for ingesting Excel data and generating insights. We&#8217;ll leverage LlamaIndex and LlamaParse to transform the spreadsheets into a searchable knowledge base and store this data in Couchbase Vector Search for fast retrieval of relevant context based on a user\u2019s query and then leverage <a href=\"https:\/\/aws.amazon.com\/bedrock\/\">Amazon Bedrock<\/a> for the LLM response.\u00a0<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">What is LLamaIndex and LLamaParse<\/span><\/h2>\n<p><span style=\"font-weight: 400;\"><a href=\"https:\/\/docs.llamaindex.ai\/en\/stable\/api_reference\/storage\/vector_store\/couchbase\/\">LlamaIndex<\/a> is an open-source orchestration framework designed to help developers build AI applications with large language models (LLMs). It helps to bridge the gap between custom data sources and LLMs. LLamaIndex gives capability to users to ingest data from various sources such as files or vector databases, and then it indexes this data into intermediate representations. LLamaIndex gives the capability to query this data in natural language and interact with it.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">First, the data gets indexed into a vector index. This creates a searchable knowledge base specific to the domain. During querying, the system searches for relevant information based on the user&#8217;s prompt and then provides this information to the large language model in order to generate a response. <\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p><span style=\"font-weight: 400;\">LlamaParse is a specialized component within the LlamaIndex ecosystem, designed to be a powerful document-parsing platform that streamlines the process of parsing and extracting structured information from complex documents. It has been built to parse and clean data to ensure that users can have high-quality input for LLM use-cases like RAG. LlamaParse supports parsing different types of documents like PDFs, Excel, HTML ,etc.\u00a0<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Building a retrieval augmented generation system with Excel data<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">In this blog, we will create a RAG system utilizing a <\/span><a href=\"https:\/\/www.kaggle.com\/datasets\/anoopjohny\/consumer-complaint-database\"><span style=\"font-weight: 400;\">customer complaints dataset<\/span><\/a><span style=\"font-weight: 400;\"> (from Kaggle). This dataset provides detailed information about consumer complaints spanning various financial products and services. The RAG system powered by Couchbase Vector search will facilitate the extraction of critical information from the data.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A visual representation of the dataset is provided below.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-16999\" style=\"border: 1px solid Gainsboro;\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/03\/complaints-dataset-kaggle-1024x759.png\" alt=\"complaints dataset from kaggle loading into a database\" width=\"900\" height=\"667\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/03\/complaints-dataset-kaggle-1024x759.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/03\/complaints-dataset-kaggle-300x222.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/03\/complaints-dataset-kaggle-768x569.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/03\/complaints-dataset-kaggle-1536x1138.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/03\/complaints-dataset-kaggle-1320x978.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/03\/complaints-dataset-kaggle.png 1999w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<h2><span style=\"font-weight: 400;\">Installing the Required Dependencies and Instantiating LlamaParse<\/span><\/h2>\n<pre class=\"nums:false wrap:true lang:default decode:true \">!pip install llama-index llama-parse llama-index-vector-stores-couchbase llama-index-llms-bedrock fastembed llama-index-embeddings-bedrock<\/pre>\n<p><span style=\"font-weight: 400;\">After installing the dependencies, we will now instantiate LlamaParse with the parsing instruction to parse the Excel file:\u00a0<\/span><\/p>\n<pre class=\"nums:false lang:python decode:true\">from llama_parse import LlamaParse\r\nfrom google.colab import userdata\r\nfrom llama_index.core import SimpleDirectoryReader\r\nimport nest_asyncio\r\n\r\nnest_asyncio.apply()\r\n\r\nparser = LlamaParse(\r\n\u00a0\u00a0\u00a0api_key=userdata.get('LLAMA_CLOUD_API_KEY'),\r\n\u00a0\u00a0\u00a0parsing_instruction = \"\"\"You are parsing a customer complaints dataset.. The column Company contains the company name.\u00a0 Please extract Product, Sub-product, Issue, Consumer complaint narrative, company public response, company, state, zipcode, information from the columns.\"\"\",\r\n\u00a0\u00a0\u00a0result_type=\"markdown\"\r\n)<\/pre>\n<p><span style=\"font-weight: 400;\">When we instantiate the LlamaParse object, we pass <em>parsing_instruction<\/em> and <em>result_type<\/em> as the <em>Parsing<\/em> options.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In <em>result_type<\/em>, we have specified the format of our output. By default, LlamaParse will return results as parsed text. The other available options are <em>markdown<\/em> and <em>JSON<\/em> which returns a structure representing the parsed object. In <em>parsing_instruction<\/em> we can provide additional context to LlamaParse on the data. LlamaParse uses LLMs under the hood, allowing us to give it natural-language instructions about what and how to parse information.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Next, we will load the Excel file and parse it using LlamaParser:<\/span><\/p>\n<pre class=\"nums:false lang:python decode:true \">file_extractor = {\".xlsx\": parser}\r\n\r\ndocuments = SimpleDirectoryReader(input_files=[file_name.xlsx'], file_extractor=file_extractor).load_data()<\/pre>\n<h2><span style=\"font-weight: 400;\">Storing the parsed data using a Couchbase vector index\u00a0<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Before proceeding, ensure that you have an account on Couchbase Capella and that you have set up a vector index inside Couchbase. You can follow the <\/span><a href=\"https:\/\/developer.couchbase.com\/tutorial-bedrock-serverless-pdf-chat#setup-database-configuration\"><span style=\"font-weight: 400;\">following guide<\/span><\/a><span style=\"font-weight: 400;\"> to set up your cluster and the vector index.\u00a0 Once you have the account and index ready, you can proceed further.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The parsed data is stored within the documents variable. Now it will be populated inside of Couchbase. To achieve this, the documents will be converted into <em>VectorStoreIndex<\/em>. This index will subsequently be stored within the Couchbase Vector store by first converting the documents supported by the vector store using the Bedrock Embeddings:\u00a0<\/span><\/p>\n<pre class=\"nums:false lang:python decode:true\">from llama_index.llms.bedrock import Bedrock\r\nfrom llama_index.embeddings.bedrock import BedrockEmbedding\r\nllm = Bedrock(model=\"mistral.mistral-large-2402-v1:0\", region_name=\"us-east-1\")\r\nembeddings = BedrockEmbedding(model=\"amazon.titan-embed-text-v1\")<\/pre>\n<p><span style=\"font-weight: 400;\">We will also connect to the Couchbase instance:\u00a0<\/span><\/p>\n<pre class=\"nums:false lang:python decode:true\">def connect_to_couchbase(connection_string, db_username, db_password):\r\n\u00a0\u00a0\u00a0\u00a0\"\"\"Connect to couchbase\"\"\"\r\n\u00a0\u00a0\u00a0\u00a0from couchbase.cluster import Cluster\r\n\u00a0\u00a0\u00a0\u00a0from couchbase.auth import PasswordAuthenticator\r\n\u00a0\u00a0\u00a0\u00a0from couchbase.options import ClusterOptions\r\n\u00a0\u00a0\u00a0\u00a0from datetime import timedelta\r\n\r\n\u00a0\u00a0\u00a0\u00a0auth = PasswordAuthenticator(db_username, db_password)\r\n\u00a0\u00a0\u00a0\u00a0options = ClusterOptions(auth)\r\n\u00a0\u00a0\u00a0\u00a0connect_string = connection_string\r\n\u00a0\u00a0\u00a0\u00a0cluster = Cluster(connect_string, options)\r\n\r\n\u00a0\u00a0\u00a0\u00a0# Wait until the cluster is ready for use.\r\n\u00a0\u00a0\u00a0\u00a0cluster.wait_until_ready(timedelta(seconds=5))\r\n\r\n\u00a0\u00a0\u00a0\u00a0return cluster<\/pre>\n<p><span style=\"font-weight: 400;\">Now, we will be calling the VectorStoreIndex method to store the index in Couchbase. The VectorStoreIndex takes the documents and splits them up into nodes. It then creates vector embeddings of the text of every node using the specified embedding model, in this case, Bedrock embeddings, which will be ready to be queried by an LLM.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">LlamaIndex offers various file-based node parsers designed to generate nodes according to the specific content type being processed, such as JSON, Markdown, and other formats:<\/span><\/p>\n<pre class=\"nums:false lang:python decode:true\"> index = VectorStoreIndex.from_documents(\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0documents,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0storage_context=storage_context,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0)\r\n\r\n\u00a0\u00a0vector_store = get_vector_store(\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0cluster,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0DB_BUCKET,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0DB_SCOPE,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0DB_COLLECTION,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0INDEX_NAME,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0)\r\n\r\n\u00a0\u00a0storage_context = StorageContext.from_defaults(vector_store=vector_store)\r\n\r\n\u00a0\u00a0index = VectorStoreIndex.from_documents(\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0documents,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0storage_context=storage_context,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0)<\/pre>\n<h2><span style=\"font-weight: 400;\">Response generation from Amazon Bedrock<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">When a user uploads an Excel file, it&#8217;s parsed using LlamaParse and stored in a Couchbase vector store. For each user query, the system performs a vector search to retrieve relevant chunks of information from the stored Excel data. These relevant chunks are then used as context for the language model (Bedrock&#8217;s Mistral model) to generate a response.<\/span><\/p>\n<pre class=\"nums:false lang:python decode:true\">rag_stream_response = st.session_state.chat_engine_rag.stream_chat(question)\r\n\u00a0\u00a0\u00a0for chunk in rag_stream_response.response_gen:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0rag_response += chunk\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0message_placeholder.markdown(rag_response)\r\n<\/pre>\n<h2><span style=\"font-weight: 400;\">Results<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">We can now check the performance of our RAG application by examining responses to various queries provided by the user.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Conclusion<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">This blog shares how one can build a Retrieval Augmented Generation (RAG) system for simplifying the analysis of massive amounts of Excel data. This is handled by extracting information from the data using LlamaParse, transforming it into a VectorStoreIndex format, and subsequently storing this index within Couchbase.<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Get started with <a href=\"https:\/\/cloud.couchbase.com\">Couchbase Capella developer platform<\/a> for free<\/li>\n<li>Read more posts and tutorials on <a href=\"https:\/\/www.couchbase.com\/blog\/category\/generative-ai-genai\/\">Generative AI (GenAI)<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/llm-embeddings\/\">Learn more about LLM Embeddings<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>As everything around us is gradually becoming more data-driven, Excel is still integral for businesses, providing the capability to provide invaluable insights from the data in the sheets. However, data scientists and analysts agree that extracting meaningful information from these [&hellip;]<\/p>\n","protected":false},"author":85559,"featured_media":17000,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[10122,1815,2225,9973,9139,9937],"tags":[10124,9995,9924],"ppma_author":[10069],"class_list":["post-16998","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artificial-intelligence-ai","category-best-practices-and-tutorials","category-cloud","category-generative-ai-genai","category-python","category-vector-search","tag-amazon-web-services-aws","tag-llamaindex","tag-rag-retrieval-augmented-generation"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Extending RAG capabilities to Excel with Couchbase, LLamaIndex, and Amazon Bedrock - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Extend Retrieval Augmented Generation (RAG) capabilities to Excel using Couchbase, LlamaIndex, and Amazon Bedrock. Make spreadsheets searchable.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Extending RAG capabilities to Excel with Couchbase, LLamaIndex, and Amazon Bedrock\" \/>\n<meta property=\"og:description\" content=\"Extend Retrieval Augmented Generation (RAG) capabilities to Excel using Couchbase, LlamaIndex, and Amazon Bedrock. Make spreadsheets searchable.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-03-31T21:44:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T03:40:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/03\/blog_header_images_2025-9.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1256\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Shivay Lamba, Developer Evangelist\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Shivay Lamba, Developer Evangelist\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/\"},\"author\":{\"name\":\"Shivay Lamba, Developer Evangelist\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/377d9b772c90439916236da79c02c418\"},\"headline\":\"Extending RAG capabilities to Excel with Couchbase, LLamaIndex, and Amazon Bedrock\",\"datePublished\":\"2025-03-31T21:44:55+00:00\",\"dateModified\":\"2025-06-14T03:40:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/\"},\"wordCount\":970,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/03\/blog_header_images_2025-9.png\",\"keywords\":[\"Amazon Web Services (AWS)\",\"llamaindex\",\"RAG retrieval-augmented generation\"],\"articleSection\":[\"Artificial Intelligence (AI)\",\"Best Practices and Tutorials\",\"Couchbase Capella\",\"Generative AI (GenAI)\",\"Python\",\"Vector Search\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/\",\"name\":\"Extending RAG capabilities to Excel with Couchbase, LLamaIndex, and Amazon Bedrock - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/03\/blog_header_images_2025-9.png\",\"datePublished\":\"2025-03-31T21:44:55+00:00\",\"dateModified\":\"2025-06-14T03:40:17+00:00\",\"description\":\"Extend Retrieval Augmented Generation (RAG) capabilities to Excel using Couchbase, LlamaIndex, and Amazon Bedrock. Make spreadsheets searchable.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/03\/blog_header_images_2025-9.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/03\/blog_header_images_2025-9.png\",\"width\":2400,\"height\":1256},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Extending RAG capabilities to Excel with Couchbase, LLamaIndex, and Amazon Bedrock\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/377d9b772c90439916236da79c02c418\",\"name\":\"Shivay Lamba, Developer Evangelist\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/7b5e7cd8007bd40de81c1ef6a9e0266f\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/shivay-lambda-couchbase.jpeg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/shivay-lambda-couchbase.jpeg\",\"caption\":\"Shivay Lamba, Developer Evangelist\"},\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/shivaylambda\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Extending RAG capabilities to Excel with Couchbase, LLamaIndex, and Amazon Bedrock - The Couchbase Blog","description":"Extend Retrieval Augmented Generation (RAG) capabilities to Excel using Couchbase, LlamaIndex, and Amazon Bedrock. Make spreadsheets searchable.","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:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/","og_locale":"en_US","og_type":"article","og_title":"Extending RAG capabilities to Excel with Couchbase, LLamaIndex, and Amazon Bedrock","og_description":"Extend Retrieval Augmented Generation (RAG) capabilities to Excel using Couchbase, LlamaIndex, and Amazon Bedrock. Make spreadsheets searchable.","og_url":"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/","og_site_name":"The Couchbase Blog","article_published_time":"2025-03-31T21:44:55+00:00","article_modified_time":"2025-06-14T03:40:17+00:00","og_image":[{"width":2400,"height":1256,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/03\/blog_header_images_2025-9.png","type":"image\/png"}],"author":"Shivay Lamba, Developer Evangelist","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Shivay Lamba, Developer Evangelist","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/"},"author":{"name":"Shivay Lamba, Developer Evangelist","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/377d9b772c90439916236da79c02c418"},"headline":"Extending RAG capabilities to Excel with Couchbase, LLamaIndex, and Amazon Bedrock","datePublished":"2025-03-31T21:44:55+00:00","dateModified":"2025-06-14T03:40:17+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/"},"wordCount":970,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/03\/blog_header_images_2025-9.png","keywords":["Amazon Web Services (AWS)","llamaindex","RAG retrieval-augmented generation"],"articleSection":["Artificial Intelligence (AI)","Best Practices and Tutorials","Couchbase Capella","Generative AI (GenAI)","Python","Vector Search"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/","url":"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/","name":"Extending RAG capabilities to Excel with Couchbase, LLamaIndex, and Amazon Bedrock - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/03\/blog_header_images_2025-9.png","datePublished":"2025-03-31T21:44:55+00:00","dateModified":"2025-06-14T03:40:17+00:00","description":"Extend Retrieval Augmented Generation (RAG) capabilities to Excel using Couchbase, LlamaIndex, and Amazon Bedrock. Make spreadsheets searchable.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/03\/blog_header_images_2025-9.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/03\/blog_header_images_2025-9.png","width":2400,"height":1256},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Extending RAG capabilities to Excel with Couchbase, LLamaIndex, and Amazon Bedrock"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/377d9b772c90439916236da79c02c418","name":"Shivay Lamba, Developer Evangelist","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/7b5e7cd8007bd40de81c1ef6a9e0266f","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/shivay-lambda-couchbase.jpeg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/shivay-lambda-couchbase.jpeg","caption":"Shivay Lamba, Developer Evangelist"},"url":"https:\/\/www.couchbase.com\/blog\/author\/shivaylambda\/"}]}},"authors":[{"term_id":10069,"user_id":85559,"is_guest":0,"slug":"shivaylambda","display_name":"Shivay Lamba, Developer Evangelist","avatar_url":{"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/shivay-lambda-couchbase.jpeg","url2x":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/shivay-lambda-couchbase.jpeg"},"author_category":"","last_name":"Lamba, Developer Evangelist","first_name":"Shivay","job_title":"","user_url":"","description":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/16998","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/85559"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=16998"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/16998\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/17000"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=16998"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=16998"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=16998"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=16998"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}