{"id":4620,"date":"2025-03-31T14:44:55","date_gmt":"2025-03-31T21:44:55","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/"},"modified":"2025-03-31T14:44:55","modified_gmt":"2025-03-31T21:44:55","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":"\n<p><span>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><br>\n<\/span><\/p>\n\n\n\n<p><span>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\n\n\n<p><span>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\n\n\n<h2 class=\"wp-block-heading\"><span>What is LLamaIndex and LLamaParse<\/span><\/h2>\n\n\n\n<p><span><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\n\n\n<p><span>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><br>\n<\/span><\/p>\n\n\n\n<p><span>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\n\n\n<h2 class=\"wp-block-heading\"><span>Building a retrieval augmented generation system with Excel data<\/span><\/h2>\n\n\n\n<p><span>In this blog, we will create a RAG system utilizing a <\/span><a href=\"https:\/\/www.kaggle.com\/datasets\/anoopjohny\/consumer-complaint-database\"><span>customer complaints dataset<\/span><\/a><span> (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\n\n\n<p><span>A visual representation of the dataset is provided below.<\/span><\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-16999\" src=\"https:\/\/www.couchbase.com\/wp-content\/uploads\/sites\/5\/2026\/05\/complaints-dataset-kaggle-1024x759-1.png\" alt=\"complaints dataset from kaggle loading into a database\" width=\"900\" height=\"667\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span>Installing the Required Dependencies and Instantiating LlamaParse<\/span><\/h2>\n\n\n<p>[crayon nums=&#8221;false&#8221; wrap=&#8221;true&#8221; lang=&#8221;default&#8221; decode=&#8221;true&#8221;]!pip install llama-index llama-parse llama-index-vector-stores-couchbase llama-index-llms-bedrock fastembed llama-index-embeddings-bedrock[\/crayon]<\/p>\n\n\n\n<p><span>After installing the dependencies, we will now instantiate LlamaParse with the parsing instruction to parse the Excel file:\u00a0<\/span><\/p>\n\n\n<p>[crayon nums=&#8221;false&#8221; lang=&#8221;python&#8221; decode=&#8221;true&#8221;]from llama_parse import LlamaParse<br \/>\nfrom google.colab import userdata<br \/>\nfrom llama_index.core import SimpleDirectoryReader<br \/>\nimport nest_asyncio<\/p>\n<p>nest_asyncio.apply()<\/p>\n<p>parser = LlamaParse(<br \/>\n\u00a0\u00a0\u00a0api_key=userdata.get(&#8216;LLAMA_CLOUD_API_KEY&#8217;),<br \/>\n\u00a0\u00a0\u00a0parsing_instruction = &#8220;&#8221;&#8221;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.&#8221;&#8221;&#8221;,<br \/>\n\u00a0\u00a0\u00a0result_type=&#8221;markdown&#8221;<br \/>\n)[\/crayon]<\/p>\n\n\n\n<p><span>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\n\n\n<p><span>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\n\n\n<p><span>Next, we will load the Excel file and parse it using LlamaParser:<\/span><\/p>\n\n\n<p>[crayon nums=&#8221;false&#8221; lang=&#8221;python&#8221; decode=&#8221;true&#8221;]file_extractor = {&#8220;.xlsx&#8221;: parser}<\/p>\n<p>documents = SimpleDirectoryReader(input_files=[file_name.xlsx&#8217;], file_extractor=file_extractor).load_data()[\/crayon]<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span>Storing the parsed data using a Couchbase vector index\u00a0<\/span><\/h2>\n\n\n\n<p><span>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>following guide<\/span><\/a><span> 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\n\n\n<p><span>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\n\n<p>[crayon nums=&#8221;false&#8221; lang=&#8221;python&#8221; decode=&#8221;true&#8221;]from llama_index.llms.bedrock import Bedrock<br \/>\nfrom llama_index.embeddings.bedrock import BedrockEmbedding<br \/>\nllm = Bedrock(model=&#8221;mistral.mistral-large-2402-v1:0&#8243;, region_name=&#8221;us-east-1&#8243;)<br \/>\nembeddings = BedrockEmbedding(model=&#8221;amazon.titan-embed-text-v1&#8243;)[\/crayon]<\/p>\n\n\n\n<p><span>We will also connect to the Couchbase instance:\u00a0<\/span><\/p>\n\n\n<p>[crayon nums=&#8221;false&#8221; lang=&#8221;python&#8221; decode=&#8221;true&#8221;]def connect_to_couchbase(connection_string, db_username, db_password):<br \/>\n\u00a0\u00a0\u00a0\u00a0&#8220;&#8221;&#8221;Connect to couchbase&#8221;&#8221;&#8221;<br \/>\n\u00a0\u00a0\u00a0\u00a0from couchbase.cluster import Cluster<br \/>\n\u00a0\u00a0\u00a0\u00a0from couchbase.auth import PasswordAuthenticator<br \/>\n\u00a0\u00a0\u00a0\u00a0from couchbase.options import ClusterOptions<br \/>\n\u00a0\u00a0\u00a0\u00a0from datetime import timedelta<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0auth = PasswordAuthenticator(db_username, db_password)<br \/>\n\u00a0\u00a0\u00a0\u00a0options = ClusterOptions(auth)<br \/>\n\u00a0\u00a0\u00a0\u00a0connect_string = connection_string<br \/>\n\u00a0\u00a0\u00a0\u00a0cluster = Cluster(connect_string, options)<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0# Wait until the cluster is ready for use.<br \/>\n\u00a0\u00a0\u00a0\u00a0cluster.wait_until_ready(timedelta(seconds=5))<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0return cluster[\/crayon]<\/p>\n\n\n\n<p><span>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\n\n\n<p><span>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\n\n<p>[crayon nums=&#8221;false&#8221; lang=&#8221;python&#8221; decode=&#8221;true&#8221;] index = VectorStoreIndex.from_documents(<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0documents,<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0storage_context=storage_context,<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0)<\/p>\n<p>\u00a0\u00a0vector_store = get_vector_store(<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0cluster,<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0DB_BUCKET,<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0DB_SCOPE,<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0DB_COLLECTION,<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0INDEX_NAME,<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0)<\/p>\n<p>\u00a0\u00a0storage_context = StorageContext.from_defaults(vector_store=vector_store)<\/p>\n<p>\u00a0\u00a0index = VectorStoreIndex.from_documents(<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0documents,<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0storage_context=storage_context,<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0)[\/crayon]<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span>Response generation from Amazon Bedrock<\/span><\/h2>\n\n\n\n<p><span>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\n\n<p>[crayon nums=&#8221;false&#8221; lang=&#8221;python&#8221; decode=&#8221;true&#8221;]rag_stream_response = st.session_state.chat_engine_rag.stream_chat(question)<br \/>\n\u00a0\u00a0\u00a0for chunk in rag_stream_response.response_gen:<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0rag_response += chunk<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0message_placeholder.markdown(rag_response)<br \/>\n[\/crayon]<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span>Results<\/span><\/h2>\n\n\n\n<p><span>We can now check the performance of our RAG application by examining responses to various queries provided by the user.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span>Conclusion<\/span><\/h2>\n\n\n\n<p><span>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\n\n\n<ul class=\"wp-block-list\">\n<li>Get started with <a href=\"https:\/\/cloud.couchbase.com\">Couchbase Capella developer platform<\/a> for free<\/li>\n\n\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\n\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/llm-embeddings\/\">Learn more about LLM Embeddings<\/a><\/li>\n\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 vast datasets can be extremely time-consuming and requires specialized skill sets. But this is where [&hellip;]<\/p>\n","protected":false},"author":85559,"featured_media":4617,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[598,136,301,727,381,715],"tags":[419,862,797],"ppma_author":[935],"class_list":["post-4620","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"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.6 (Yoast SEO v27.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\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=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/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\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/extending-rag-excel-couchbase-llamaindex-bedrock\\\/\"},\"wordCount\":1285,\"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\\\/5\\\/2026\\\/05\\\/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\\\/5\\\/2026\\\/05\\\/blog_header_images_2025-9.png\",\"datePublished\":\"2025-03-31T21:44:55+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\\\/5\\\/2026\\\/05\\\/blog_header_images_2025-9.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/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\\\/sites\\\/5\\\/2026\\\/06\\\/logo.svg\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/06\\\/logo.svg\",\"width\":\"1024\",\"height\":\"1024\",\"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:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c3c8ba40dfa67893e20e70fb9d37a9dc978cbbeb10e5d0418e70af1f672d200b?s=96&d=mm&r=ge6192df7fcab3a423d4c8f6e1c30858f\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c3c8ba40dfa67893e20e70fb9d37a9dc978cbbeb10e5d0418e70af1f672d200b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c3c8ba40dfa67893e20e70fb9d37a9dc978cbbeb10e5d0418e70af1f672d200b?s=96&d=mm&r=g\",\"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","og_image":[{"width":2400,"height":1256,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/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","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/extending-rag-excel-couchbase-llamaindex-bedrock\/"},"wordCount":1285,"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\/5\/2026\/05\/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\/5\/2026\/05\/blog_header_images_2025-9.png","datePublished":"2025-03-31T21:44:55+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\/5\/2026\/05\/blog_header_images_2025-9.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/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\/sites\/5\/2026\/06\/logo.svg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/06\/logo.svg","width":"1024","height":"1024","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:\/\/secure.gravatar.com\/avatar\/c3c8ba40dfa67893e20e70fb9d37a9dc978cbbeb10e5d0418e70af1f672d200b?s=96&d=mm&r=ge6192df7fcab3a423d4c8f6e1c30858f","url":"https:\/\/secure.gravatar.com\/avatar\/c3c8ba40dfa67893e20e70fb9d37a9dc978cbbeb10e5d0418e70af1f672d200b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c3c8ba40dfa67893e20e70fb9d37a9dc978cbbeb10e5d0418e70af1f672d200b?s=96&d=mm&r=g","caption":"Shivay Lamba, Developer Evangelist"},"url":"https:\/\/www.couchbase.com\/blog\/author\/shivaylambda\/"}]}},"acf":[],"authors":[{"term_id":935,"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\/5\/2026\/05\/shivay-lambda-couchbase-16.jpeg","url2x":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/shivay-lambda-couchbase-16.jpeg"},"0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/4620","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=4620"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/4620\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/4617"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=4620"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=4620"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=4620"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=4620"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}