[{"content":"Unless you\u0026rsquo;re living under a rock, there\u0026rsquo;s a good chance you\u0026rsquo;ve been using ChatGPT, Claude or Gemini to help you write code, research a new topic, or plan a holiday. But AI assistants and models much more. What if they could talk directly to your database to read and write data, run queries, manage collections, and perform bulk operations, all without you writing a single line of code?\nMeet Bob, the AI builder that can let you talk to your database with no coding involved. This is made possible by the Model Context Protocol (MCP) and I\u0026rsquo;ll show you how.\nIn this tutorial, you\u0026rsquo;ll connect the Bob IDE to Astra DB to create a document collection, insert and retrieve documents, and perform bulk updates entirely through natural language!\nWait, what is MCP? MCP (Model Context Protocol) is an open standard that lets AI assistants connect to external tools and data sources. Think of it as a USB-C port for AI: a single, consistent interface that lets Bob plug into databases, APIs, file systems, and more.\nWithout MCP, Bob only knows what you paste into the chat window. With MCP, Bob becomes an active agent — it can read from and write to real systems as part of the conversation.\nAstra DB is an enterprise distribution of Apache Cassandra deployed as a fully-managed service running on a public cloud of your choice. Astra DB ships with an MCP server out-of-the-box which exposes the database as a set of tools Bob can call directly: creating collections, inserting records, running vector searches, and more. The entire conversation becomes your interface.\nPrerequisites Bob IDE installed Node.js 18 or later installed (node --version to check) A free Astra DB account (sign up here, no credit card required) Step 1: Create your Astra DB database Sign in to astra.datastax.com and create a new Serverless (Vector) database.\nGive the database any name you like (e.g. movies-db) and wait for it to become active. This usually takes about two minutes.\nStep 2: Get your DB credentials You need two things to connect to your database: an application token and the API endpoint. From the Astra DB portal, select your database.\nCopy the API_ENDPOINT field. It looks something like https://*.apps.astra.datastax.com.\nThen click the Generate Token button to generate an application token with a DB admin role. Save the new token in a safe place. It looks something like AstraCS:....\nStep 3: Connect Bob IDE to Astra DB MCP server Launch the Bob IDE on your laptop or desktop then click on the ⚙️ settings icon at the top right of the chat window.\nThen in the Settings window, click on MCP \u0026gt; Global MCPs \u0026gt; Open to open the mcp_settings.json configuration file.\nAdd the following, replacing the placeholder values with your actual token and endpoint:\n{ \u0026#34;mcpServers\u0026#34;: { \u0026#34;astra-db-mcp\u0026#34;: { \u0026#34;command\u0026#34;: \u0026#34;npx\u0026#34;, \u0026#34;args\u0026#34;: [\u0026#34;-y\u0026#34;, \u0026#34;@datastax/astra-db-mcp\u0026#34;], \u0026#34;env\u0026#34;: { \u0026#34;ASTRA_DB_APPLICATION_TOKEN\u0026#34;: \u0026#34;AstraCS:your_token_here\u0026#34;, \u0026#34;ASTRA_DB_API_ENDPOINT\u0026#34;: \u0026#34;https://your-endpoint_here.apps.astra.datastax.com\u0026#34; } } } } Windows users: npx is a batch command on Windows. Use this modified version instead:\n\u0026#34;command\u0026#34;: \u0026#34;cmd\u0026#34;, \u0026#34;args\u0026#34;: [\u0026#34;/k\u0026#34;, \u0026#34;npx\u0026#34;, \u0026#34;-y\u0026#34;, \u0026#34;@datastax/astra-db-mcp\u0026#34;] Save the file, then fully quit and relaunch Bob IDE.\nAnd that\u0026rsquo;s it for setting up your environment. If configured correctly, you should see the Astra DB MCP connector enabled in your Bob IDE.\nTalk to your database Now that you\u0026rsquo;ve got Bob configured, the fun part starts.\nNew collection First, let\u0026rsquo;s create a new collection of movies in the. Open a new conversation in Bob and type:\nCreate a new collection of movies in the database. In my case, Bob first checked the connection to the database using the GetCollections tool before doing anything else.\nThen Bob needed clarifications, asking if I wanted to setup a vector or standard collection. Vector collections and semantic search is something I\u0026rsquo;ll be covering in a future post so for now, I chose standard:\nThen used the CreateCollection tool:\nLoad movies Bob added sample movies using the BulkCreateRecords tool:\nIf Bob didn\u0026rsquo;t volunteer to do this, just ask. You can have fun with which movies you want to load but here\u0026rsquo;s an example:\nInsert 10 mainstream movies from the last 10 years to the movies collection. In my case, this is what the first record looks like in the collection:\n{ \u0026#34;_id\u0026#34;: \u0026#34;movie-001\u0026#34;, \u0026#34;title\u0026#34;: \u0026#34;The Shawshank Redemption\u0026#34;, \u0026#34;year\u0026#34;: 1994, \u0026#34;genre\u0026#34;: [\u0026#34;Drama\u0026#34;], \u0026#34;director\u0026#34;: \u0026#34;Frank Darabont\u0026#34;, \u0026#34;cast\u0026#34;: [\u0026#34;Tim Robbins\u0026#34;, \u0026#34;Morgan Freeman\u0026#34;, \u0026#34;Bob Gunton\u0026#34;], \u0026#34;rating\u0026#34;: 9.3, \u0026#34;duration\u0026#34;: 142, \u0026#34;language\u0026#34;: \u0026#34;English\u0026#34;, \u0026#34;country\u0026#34;: \u0026#34;USA\u0026#34;, \u0026#34;plot\u0026#34;: \u0026#34;Two imprisoned men bond over a number of years, finding solace and eventual redemption through acts of common decency.\u0026#34;, \u0026#34;imdb_id\u0026#34;: \u0026#34;tt0111161\u0026#34; } What just happened? Bob translated your natural language requests and mapped them to the right tools it needed to execute queries against the database, it interpreted the results, and presented those results in a very useful way.\nBob was the interfacing client to your Astra DB\u0026rsquo;s MCP server, interpreting inputs and outputs without you writing code.\nLet\u0026rsquo;s try to do more with the database.\nExtend the schema Let\u0026rsquo;s get Bob to add a description for each movie:\nAdd a new field called description. For each movie, generate a new description up to 150 words in length then update the records one at a time. And just like that, all movies now have descriptions included. Here\u0026rsquo;s an example entry for one of the movies:\nAdd a more complex data type Let\u0026rsquo;s see if we can stretch the MCP tools a bit further by modifying the cast field, replacing it with the names of the leading actors and their characters:\nUpdate the cast field as an array of objects, each with the character and actor as the keys. For each movie, generate a list of 3-5 leading actors and their corresponding characters then update each record one at a time. Here is the leading cast for The Matrix:\nReady to build with real data? This tutorial used a small sample dataset to keep the setup fast but that shouldn\u0026rsquo;t stop you from asking Bob to load more movies. Astra DB\u0026rsquo;s free tier gives you enough headroom to store millions of documents and run production-grade workloads.\nIf you want to build Cassandra applications but don\u0026rsquo;t know where to start, check out the reference applications at KillrVideo with all the full working code provided.\nOtherwise, book a live demo and we\u0026rsquo;ll show you how!\n","permalink":"https://8567.me/posts/bob_mcp/","summary":"Connect Bob IDE to Astra DB via MCP and create collections, insert records, and run bulk updates through plain English, zero code required.","title":"Talk to your database with Bob, the AI builder"},{"content":"You\u0026rsquo;ve probably used Claude to write code, summarise documents, or debug a gnarly stack trace. But what if Claude could talk directly to your database to read and write data, run queries, manage collections, and perform bulk operations, all without you writing a single line of code?\nThat\u0026rsquo;s exactly what the Model Context Protocol (MCP) makes possible. In this tutorial, you\u0026rsquo;ll connect Claude Desktop to Astra DB to create a document collection, insert and retrieve documents, and perform bulk updates entirely through natural language!\nWait, what is MCP? MCP (Model Context Protocol) is an open standard that lets AI assistants connect to external tools and data sources. Think of it as a USB-C port for AI: a single, consistent interface that lets Claude plug into databases, APIs, file systems, and more.\nWithout MCP, Claude only knows what you paste into the chat window. With MCP, Claude becomes an active agent — it can read from and write to real systems as part of the conversation.\nAstra DB is an enterprise distribution of Apache Cassandra deployed as a fully-managed service running on a public cloud of your choice. Astra DB ships with an MCP server out-of-the-box which exposes the database as a set of tools Claude can call directly: creating collections, inserting records, running vector searches, and more. The entire conversation becomes your interface.\nPrerequisites Claude Desktop installed Node.js 18 or later installed (node --version to check) A free Astra DB account (sign up here, no credit card required) Step 1: Create your Astra DB database Sign in to astra.datastax.com and create a new Serverless (Vector) database.\nGive the database any name you like (e.g. movies-db) and wait for it to become active. This usually takes about two minutes.\nStep 2: Get your DB credentials You need two things to connect to your database: an application token and the API endpoint. From the Astra DB portal, select your database.\nCopy the API_ENDPOINT field. It looks something like https://*.apps.astra.datastax.com.\nThen click the Generate Token button to generate an application token with a DB admin role. Save the new token in a safe place. It looks something like AstraCS:....\nStep 3: Connect Claude Desktop to your Astra DB MCP server Open your Claude Desktop configuration file. The location depends on your operating system:\nmacOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\\Claude\\claude_desktop_config.json If the file doesn\u0026rsquo;t exist yet, create it. Add the following, replacing the placeholder values with your actual token and endpoint:\n{ \u0026#34;mcpServers\u0026#34;: { \u0026#34;astra-db-mcp\u0026#34;: { \u0026#34;command\u0026#34;: \u0026#34;npx\u0026#34;, \u0026#34;args\u0026#34;: [\u0026#34;-y\u0026#34;, \u0026#34;@datastax/astra-db-mcp\u0026#34;], \u0026#34;env\u0026#34;: { \u0026#34;ASTRA_DB_APPLICATION_TOKEN\u0026#34;: \u0026#34;AstraCS:your_token_here\u0026#34;, \u0026#34;ASTRA_DB_API_ENDPOINT\u0026#34;: \u0026#34;https://your-endpoint_here.apps.astra.datastax.com\u0026#34; } } } } Windows users: npx is a batch command on Windows. Use this modified version instead:\n\u0026#34;command\u0026#34;: \u0026#34;cmd\u0026#34;, \u0026#34;args\u0026#34;: [\u0026#34;/k\u0026#34;, \u0026#34;npx\u0026#34;, \u0026#34;-y\u0026#34;, \u0026#34;@datastax/astra-db-mcp\u0026#34;] Save the file, then fully quit and relaunch Claude Desktop.\nAnd that\u0026rsquo;s it for setting up your environment. If configured correctly, you should see the Astra DB MCP connector enabled in Claude Desktop.\nTalk to your database Now that you\u0026rsquo;ve got Claude Desktop configured, the fun part starts.\nNew collection First, let\u0026rsquo;s create a new collection of movies. Open a new conversation in Claude Desktop and type:\nCreate a new collection called `movies` then keep checking if it has been created. Let me know when it has been created. Claude will search for the tools required to execute the request and use the astra-db-mcp connector. Then it will call the CreateCollection tool to create the new collection and use the GetCollections tool for verification.\nClaude then responds with a confirmation that the collection is ready.\nLoad movies Now ask Claude to populate the collection with sample movies. You can have fun with which movies you want to load but here\u0026rsquo;s an example:\nInsert 10 mainstream movies from the last 10 years to the `movies` collection. Claude will call BulkCreateRecords to insert all ten movies at once. In this example, Claude generated movie data which includes the title, release year, director, genre and IMDB rating.\nWhat just happened? Claude translated your natural language requests and mapped them to the right tools it needed to execute queries against the database, it interpreted the results, and presented those results in a very useful way.\nClaude was the interfacing client to your Astra DB\u0026rsquo;s MCP server, interpreting inputs and outputs without you writing code.\nLet\u0026rsquo;s try to do more with the database.\nExtend the schema Ask Claude to show us the fields in our collection:\nDescribe the fields of the `movies` collection. Let\u0026rsquo;s try to add a new empty overview field:\nAdd a new field to the collection called `overview` and set the value to empty for all records. Now ask Claude to generate an overview for each movie and update the records:\nFor each movie in the collection, generate an overview then update the `overview` field one record at a time. And just like that, the movies now have overviews included. Here\u0026rsquo;s what the entry for Oppenheimer looks like:\nAdd a more complex data type Let\u0026rsquo;s see if we can stretch the MCP tools a bit further by adding something more complex like cast members:\nFor each movie, generate a maximum list of 3-5 leading actors and their corresponding character then update each record one at a time. Add a new `cast` field with an ordered array of objects, each with the `actor` and `character` as keys. Let\u0026rsquo;s see the results:\nShow me 5 movies, but only include the movie title, release year and cast members. Claude is quite clever here, filtering the results on the client-side and only showing the requested fields.\nIn another example when I asked to see the listing for the movie Barbie, Claude formatted the results and presented in an easy to read output:\nReady to build with real data? This tutorial used a small sample dataset to keep the setup fast but that shouldn\u0026rsquo;t stop you from asking Claude to load more movies. Astra DB\u0026rsquo;s free tier gives you enough headroom to store millions of documents and run production-grade workloads.\nIf you want to build applications on Cassandra but don\u0026rsquo;t know where to start, check out the reference applications at KillrVideo with all the full working code provided.\nOtherwise, book a live demo and we\u0026rsquo;ll show you how!\n","permalink":"https://8567.me/posts/claude_mcp/","summary":"Connect Claude to your DB via MCP and watch it create collections, insert records, and run bulk updates through plain English, zero code required.","title":"Talk to your DB with no code, just Claude"},{"content":"If you are a developer who is just starting to learn about AI, you have probably heard many new words: embeddings, LLMs, vector databases, semantic search. These words can feel confusing, especially when most articles assume you already know what they mean.\nDon\u0026rsquo;t worry. I\u0026rsquo;ll attempt to explain it in as simple terms as possible. We start from the very beginning — what AI is — and by the end you will understand how modern AI systems search for meaning, not just keywords. We will also look at a short code example so you can see how this works in practice.\nLet\u0026rsquo;s start wide then zoom in.\nComputer intelligence Artificial Intelligence is a broad field of computer science. The goal of AI is to make computers do things that normally require human thinking — recognising objects in a photo, translating a sentence, making a decision.\nInside this broad field, there are many sub-areas. One of the most important today is generative AI, a type of AI that can create new content — text, images, audio, video, and code. When you use a chatbot that writes an email for you, or an image tool that draws a picture from your description, you are using generative AI.\nUnderstanding human language Before computers could generate text, they first needed to understand text. This is the job of a field called Natural Language Processing (NLP).\n\u0026ldquo;Natural language\u0026rdquo; means the language humans use every day — English, French, Japanese. Computers do not naturally understand these languages. They only understand numbers.\nNLP is a set of techniques that help computers work with human language. Early NLP systems could do simple things like finding words in a document or checking grammar. Over time, NLP became much more powerful — and that led to Large Language Models.\nAI language models A Large Language Model (LLM) is a type of AI that has been trained on enormous amount of texts — books, websites, articles, code, and more. During training, it learns patterns in language: which words often appear together, how sentences are structured, what topics are related to each other.\nThe word \u0026ldquo;large\u0026rdquo; refers to two things: the amount of data it learned from, and the size of the model itself (measured in billions of parameters — internal numbers the model adjusts during training).\nExamples of LLMs you may have heard of: GPT-4, Claude, Llama, Gemini. These models power most of the AI chatbots and writing tools available today.\nImagine a student who has read every book in every library in the world. That student has learned a huge amount about language and knowledge. An LLM is like that student — except it learned from text, not experience. It can answer questions, write text, and explain ideas based on patterns it learned.\nLLMs are the engine behind Generative AI for text. But to build search systems that understand meaning, we need one more concept: vectors.\nBack to school Before we talk about vectors as an AI concept, we need to go back to high school to do a quick maths revision.\nScalar numbers are single values that represent magnitude: how big something is or how much there is of something, otherwise a value with an associated unit. Temperature, mass, speed, and price are examples of scalar values.\n27°C is a scalar. $150 is a scalar. 256 page impressions is a scalar.\nVectors are values that have both magnitude AND direction. Velocity, force, and displacement are vectors.\n\u0026ldquo;60 km/h north\u0026rdquo; is a vector because it has both magnitude (60) and direction (north). 60 km/h alone is just a scalar because it only has magnitude (speed).\nIn programming and math, vectors are also used more loosely to mean an ordered list of numbers. A 3D vector might be [x, y, z]. This is the same concept: each element contributes to a position or direction in multi-dimensional space.\nIn machine learning, a vector embedding is a list of floating-point numbers that encodes the semantic meaning of a word, a sentence, or an image. The \u0026ldquo;direction\u0026rdquo; in high-dimensional space represents meaning, so similar things end up geometrically close to each other. That\u0026rsquo;s what makes vector search work.\nTurning meaning into numbers An embedding is the vector that an AI model produces when it processes some data — text, audio, image, or video. When we talk about a text embedding, we mean: \u0026ldquo;this sentence has been converted into a list of numbers that represents its meaning.\u0026rdquo;\nWhen an LLM reads a sentence, it does not just see individual words. It understands relationships. The model (LLM) produces a vector — a long list of numbers — that encodes the meaning of that sentence. Similar sentences produce vectors that are numerically close to each other.\nDepending on the data type, models encode the semantic meaning of the data into vectors. For example, a vision model analyses pixel patterns, shapes, and objects in an image then produces a vector describing the visual content. An audio model analyses frequency, rhythm, and tone over time and encodes these into a vector.\nEmbeddings are numerical encoding of \u0026ldquo;features\u0026rdquo; (dimensions). It captures the semantic essence of objects or things.\nTo illustrate, consider a notional model that encodes features of objects in two dimensions: whether it is edible (can be eaten) or huggable. Bananas and mangoes are highly edible (encoded as positive vector magnitude) but not so huggable (negative vector). In contrast, cats and dogs are very huggable. The graph on the right is a representation of the objects in two-dimensional space.\nThe key insight is this: once any type of data is in vector form, a computer can perform mathematical operations on it. The most important operation for search is measuring the distance between two vectors. In the example above, the cat vector is \u0026ldquo;closer\u0026rdquo; to the dog vector than it is to the fruit vectors. If two vectors are numerically close, the data they represent is similar in meaning. This is the foundation of vector search.\nSearching for meaning, not text matches Traditional search works by matching keywords. If you search for \u0026ldquo;fast database\u0026rdquo;, the system looks for documents that contain the words \u0026ldquo;fast\u0026rdquo; and \u0026ldquo;database\u0026rdquo;. If a document says \u0026ldquo;high-performance data store\u0026rdquo; but never uses the word \u0026ldquo;fast\u0026rdquo;, traditional search might miss it.\nIn the following diagram, the word \u0026ldquo;capital\u0026rdquo; is used in two sentences.\n\u0026ldquo;Capital\u0026rdquo; is a homonym; words with the same spelling but different meanings. In the first sentence, \u0026ldquo;capital\u0026rdquo; refers to the administrative seat of government. In the second, \u0026ldquo;capital\u0026rdquo; refers to the money or assets used for generating wealth.\nIf we do a traditional text search for \u0026ldquo;capital\u0026rdquo;, it would return hits for both sentences because it is simply matching for the keyword with no context.\nSemantic search is different. It searches for meaning, not keywords. If we provide some context, we can get results which are closer in meaning. A semantic search for \u0026ldquo;geographic capital\u0026rdquo; is more likely to return the first sentence, and a search for \u0026ldquo;initial capital\u0026rdquo; is closer to the meaning of the second sentence.\nEnter vector databases A regular database which stores data in tables with rows and columns is good at answering \u0026ldquo;exact\u0026rdquo; questions:\nFind all the cities where country = \u0026lsquo;Japan\u0026rsquo; Find all orders where the total amount \u0026gt; $1000 A vector database is designed for answering completely different questions like:\nFind the items most similar in meaning to [query] Vector databases are specialised and purposed-built for storing and retrieving vector embeddings. But more importantly, they have the capability to perform vector searches.\nTo answer the question efficiently, a vector database uses special indexing techniques (such as Approximate Nearest Neighbour algorithms) to quickly find vector embeddings that are \u0026ldquo;close\u0026rdquo; to the query vector even when there are millions or billions of vectors stored.\nNot all databases are created equal Adding AI functionality isn\u0026rsquo;t as simple as bolting on another database just to handle vector searches. Apart from adding another layer of complexity in your environment, it also adds latency to your application for having to query another DB.\nSo why not both? Apache Cassandra® stores vector embeddings alongside your data in the same tables, no need for a separate vector store. And as you\u0026rsquo;d expect from any database, Cassandra does regular queries, vector search, or a hybrid of both in a single operation.\nAdditionally, Cassandra uses JVector — an embedded vector search engine that implements an incremental version of DiskANN, a more advanced algorithm than HNSW and ANN commonly found in other vector DBs. Unlike other vector DBs, data is indexed at write-time and is available to query immediately.\nVectors in action Let\u0026rsquo;s make this concrete. The example below uses Python to:\nGenerate an embedding for a text query using a popular open-source library Store a small collection of text embeddings in memory Find the most similar text to the query using cosine similarity First, install the required library:\npip install sentence-transformers Then run this Python script:\nfrom sentence_transformers import SentenceTransformer from sklearn.metrics.pairwise import cosine_similarity import numpy as np # Load a pre-trained embedding model model = SentenceTransformer(\u0026#39;all-MiniLM-L6-v2\u0026#39;) # Our \u0026#39;database\u0026#39; — a list of sentences documents = [ \u0026#39;Apache Cassandra handles billions of writes per day.\u0026#39;, \u0026#39;Vector search finds results based on meaning, not keywords.\u0026#39;, \u0026#39;The weather today is warm and sunny.\u0026#39;, \u0026#39;NoSQL databases are designed for high scalability.\u0026#39;, \u0026#39;Embeddings convert text into lists of numbers.\u0026#39;, ] # Convert all documents into vectors doc_vectors = model.encode(documents) # A query from the user query = \u0026#39;How do databases manage large amounts of data?\u0026#39; query_vector = model.encode([query]) # Find the most similar document scores = cosine_similarity(query_vector, doc_vectors)[0] best_match_index = np.argmax(scores) print(\u0026#39;Query:\u0026#39;, query) print(\u0026#39;Best match:\u0026#39;, documents[best_match_index]) print(\u0026#39;Similarity score:\u0026#39;, round(scores[best_match_index], 4)) When you run this, the output will look like:\nQuery: How do databases manage large amounts of data? Best match: Apache Cassandra handles billions of writes per day. Similarity score: 0.4821 Notice that the query never used the words \u0026ldquo;Cassandra\u0026rdquo;, \u0026ldquo;writes\u0026rdquo;, or \u0026ldquo;billions\u0026rdquo;. But the meaning was close enough that semantic search found the right match.\nIn a production system, you would replace the in-memory list with a real vector database — such as Astra DB with vector search enabled (a Cassandra-as-a-service from DataStax, an IBM company) — so you can scale to millions of documents and query them in milliseconds.\nPutting It All Together Here is a summary of the journey we took in this article:\nAI is a broad field. Generative AI is the part that creates content. NLP gives computers the ability to work with human language. LLMs learn patterns from enormous amounts of text and power most modern AI tools. Vectors are lists of numbers. They let computers represent meaning mathematically. Embeddings are vectors produced by AI models — they encode the meaning of text, images, audio, and more. Semantic search uses the distance between vectors to find results by meaning, not keyword. Vector databases are designed to store and search these vectors efficiently at scale. These ideas are the foundation of almost every modern AI application — from chatbots to recommendation engines to RAG (Retrieval-Augmented Generation) pipelines. Once you understand how data becomes vectors and how vectors can be searched, a lot of AI systems start to make sense.\nIt\u0026rsquo;s your turn Dive deeper into vector databases, then build an AI assistant or a Wikipedia chatbot.\nBook a live demo and see for yourself.\n","permalink":"https://8567.me/posts/words_to_vectors/","summary":"New to embeddings, LLMs, and vector databases? Start from first principles and end up understanding how modern AI systems search for meaning, not just keywords — with a working Python example.","title":"From Words to Vectors: A Beginner's Guide to Vector Search and AI Databases"},{"content":"There\u0026rsquo;s a pattern I keep seeing in enterprise architecture reviews, and it worries me.\nA team builds a generative AI application. They choose a solid, proven database for their operational data — one they\u0026rsquo;ve run in production for years. Then, almost as an afterthought, they bolt on a separate vector database to handle embeddings. Two databases. Two schemas. Two consistency models. Two failure domains. Two operational teams.\nNobody planned for this complexity. It just accumulated. And when I ask why, the answer is almost always the same: \u0026ldquo;We didn\u0026rsquo;t know we had another option.\u0026rdquo;\nYou do.\nThe hidden cost of the bolt-on vector store Let\u0026rsquo;s be honest about what \u0026ldquo;adding a vector database\u0026rdquo; actually means in practice.\nYour application now writes to two separate systems every time a record changes. If your primary database updates but the vector store sync fails — even briefly — your AI responses are answering questions about data that no longer reflects reality. You\u0026rsquo;ve introduced eventual consistency into a system where your users expect accurate answers.\nThen there\u0026rsquo;s the operational overhead. Another cluster to provision. Another monitoring stack. Another on-call rotation. Another vendor relationship. Another thing to patch, scale, and explain to your security team.\nFor startups, this is painful. For enterprises constrained to a private cloud or on-premise environment, it can be a genuine blocker. Every additional system needs to be approved, procured, hardened, and maintained. The fewer moving parts, the better.\nThe architecture question nobody is asking is: why does the vector store need to be separate at all?\nWe already solved this Apache Cassandra has been running some of the world\u0026rsquo;s most demanding production workloads for over a decade. In fact, you trust it everyday you use that phone in your pocket, stream shows in your lounge room, or pay bills from your bank account. The companies behind all those interactions are internet giants and household names that don\u0026rsquo;t compromise on data reliability. They chose Cassandra because it delivers 99.999% uptime, linear scalability, and no single point of failure. That reputation wasn\u0026rsquo;t marketing. It was earned.\nWhat\u0026rsquo;s less widely known is that Cassandra\u0026rsquo;s architecture makes it a natural fit for AI workloads — not just operational ones.\nCassandra stores data as wide rows with flexible column structures. Embeddings are just vectors — arrays of floating-point numbers. Storing them alongside the rest of your application data isn\u0026rsquo;t a stretch. It\u0026rsquo;s a straightforward extension of what Cassandra already does exceptionally well.\nIntroducing HCD: same Cassandra built for the AI era IBM\u0026rsquo;s Hyper-Converged Database (HCD) is the same Cassandra you already trust with native vector search capability for generative AI use cases, but now hardened for enterprise deployment in private cloud and on-premise environments.\nThis matters for one practical reason: you don\u0026rsquo;t need a separate vector store.\nWith HCD, your embeddings and your metadata live in the same tables. A query that retrieves a customer record can, in the same operation, find the semantically nearest matches to a given prompt. Your application talks to one system. Your ops team monitors one cluster. Your security team approves one data store.\nThe consistency problem disappears because there\u0026rsquo;s nothing to sync. Your operational data and your AI data are the same data.\nWhy this matters for constrained environments If your organisation mandates that workloads run entirely within your own infrastructure — whether for regulatory compliance, data sovereignty, or security policy — the \u0026ldquo;just add a managed vector database\u0026rdquo; advice doesn\u0026rsquo;t apply to you.\nHCD does.\nIt deploys where Cassandra deploys: on-premise, in your private cloud, in air-gapped environments. You get the vector search capabilities that modern generative AI applications require without compromising your infrastructure constraints. And because it\u0026rsquo;s built on Cassandra, you get the high availability and linear scalability that Cassandra is known for — not as a promise, but as an architectural guarantee.\nYou\u0026rsquo;re not betting on a new database. You\u0026rsquo;re extending a database you already know, already trust, and already run.\nThe uncomfortable question Here\u0026rsquo;s what I\u0026rsquo;d ask any architect considering a separate vector store: if your primary database goes down, does your AI feature still work?\nIf the answer is no, you\u0026rsquo;ve already accepted a single point of failure. The question is just which system introduces it.\nWith HCD, the answer is the same as it\u0026rsquo;s always been with Cassandra: the cluster keeps running. Reads and writes continue. Your AI application keeps answering questions — because the data powering it has the same availability guarantees as the rest of your stack.\nThat\u0026rsquo;s not a feature. That\u0026rsquo;s the baseline you should be demanding.\nWhat to do next Book a live demo and see for yourself.\nIf you\u0026rsquo;re building a generative AI application and you\u0026rsquo;re either running Cassandra already or constrained to on-premise or private cloud infrastructure, HCD is worth a serious look.\nNot because it\u0026rsquo;s IBM\u0026rsquo;s product. Because it solves a real architectural problem without asking you to introduce new complexity into environments that can\u0026rsquo;t afford it.\n","permalink":"https://8567.me/posts/already_trust_db/","summary":"Bolting a separate vector database onto your operational store creates two schemas, two consistency models, and two failure domains. See why Cassandra keeps it all in one system.","title":"You already trust this DB, let it run your AI stack too"},{"content":"Now your AI app won\u0026rsquo;t scale If I say ‘vector database for AI,’ you’re probably thinking Pinecone, Weaviate, maybe pgvector. I get it. But I want to make a case today for a technology that’s been quietly powering some of the most demanding workloads on the planet for over a decade — and guaranteed you’ve been using it everyday, you just don’t know about it. It’s Apache Cassandra®.\nThe problem Here’s the challenge most teams hit when they go from AI prototype to production. You’ve got your LLM. You’ve got your vector store for embeddings. But then reality kicks in. Your data isn’t just vectors — it’s user records, session history, product catalogs, event streams. So now you’re stitching together three or four databases, writing sync logic, managing consistency across systems. And the whole thing becomes a distributed systems nightmare just to answer one user’s question.\nTL;DR What if your database was already designed to handle all of that, at any scale, from day one? That’s Cassandra’s superpower. It’s a multi-model database built for linear scalability and high availability, meaning you can throw 10x the traffic at it and it scales horizontally without breaking a sweat. No single point of failure. No complex sharding setup. It just… works.\nAnd now, with Astra DB — which is Cassandra in a fully managed, cloud-native form — you get all of that battle-tested reliability plus native vector search. So you’re not bolting a vector store onto your existing stack. You’re doing vector search, tabular queries, and graph traversals from one system. That’s a big deal for AI apps that need context-aware, multi-dimensional retrieval.\nOne DB, one query Let me make this real. Say you’re building a RAG application for customer support. You need to retrieve semantically similar past tickets — that’s vector search. But you also need to filter by customer tier, product version, and ticket status — that’s structured query logic. In most stacks you’re hitting two systems and joining results in application code. In Astra DB, that’s one query. You’re combining vector similarity search with metadata filtering natively:\nSELECT * FROM support_tickets ORDER BY embedding ANN OF [0.12, 0.45, ...] WHERE customer_tier = \u0026#39;enterprise\u0026#39; AND product_version = \u0026#39;3.2\u0026#39; AND status = \u0026#39;open\u0026#39; LIMIT 10; And because it’s built on Cassandra, you’re getting near-zero latency even at billions of records. That’s not a marketing claim — that’s the architecture. Cassandra was literally designed to never have a slow query.\nOn-premise too Now if you’re in an enterprise environment, there’s another layer to this. A lot of your data can’t live in a public cloud SaaS vector store for compliance or sovereignty reasons. HCD, the Hyper-Converged Database from DataStax, brings these same Cassandra-powered vector capabilities to your on-prem or private cloud setup. So you’re not choosing between modern AI infrastructure and your security requirements.\nTake a free test-drive So here’s what I’d suggest. If you’re currently running a separate vector store alongside your main database and it’s already starting to feel messy — spin up a free Astra DB instance, it takes about two minutes, and try running a hybrid vector + metadata query on your own data to see what it’s like.\n","permalink":"https://8567.me/posts/picked_wrong_db/","summary":"Not all AI databases are created equal. See how Cassandra runs vector + metadata search in a single query, at scale.","title":"You picked the wrong database"},{"content":"I\u0026rsquo;m an Apache Cassandra committer at the ASF and a Developer Advocate at DataStax (an IBM company).\nI help aspiring developers build apps on Cassandra using AI and Claude — without the hype 🚀. That means practical tutorials for developers at any level, hands-on projects combining Cassandra and Claude, and straight-forward breakdowns of AI and app development. Plus the occasional other technology that tickles my fancy.\nOn a personal note, I\u0026rsquo;m an Aussie dad based in Melbourne 🇦🇺. I follow AFL footy 🏉 and I\u0026rsquo;m a member of the Richmond Tigers football club 🐯. I\u0026rsquo;m also an official FIBA 🏀 scorer.\nIf there\u0026rsquo;s something you want to build with AI on Cassandra, let me know.\n","permalink":"https://8567.me/about/","summary":"About Erick Ramirez","title":"About"}]