Sometimes It's Better to Own Your Vector DB Than Rent It — A $70/Month Wake-Up from Pinecone

I used Pinecone for a RAG prototype's vector database, left it running, and got a surprising invoice at month's end. The "floor cost" trap of managed services, and the decision to switch to a self-hosted Qdrant. A field note on the balance between renting and owning.

Sometimes It's Better to Own Your Vector DB Than Rent It — A $70/Month Wake-Up from Pinecone

This is from back when I was experimenting with how RAG works. I had the AI read a set of lecture materials, built a prototype that could answer questions about them, and for storing the vector data I chose Pinecone — a widely used, managed vector database. Once I had it working end to end, I was satisfied, and I left it running for a while.

At the end of that month, the invoice came: $22.25. I didn’t think I’d used it that much, so I opened the dashboard — it was costing $2.2 a day. Even though there was barely any data in it.

The “floor cost” trap of managed services

The reason was quick to find. At the time, Pinecone’s paid plan started at $70 a month, and it billed that amount daily, prorated, regardless of how much data you held. What I had stored was about 160 vectors — and still, the bill was the full amount. With the weak yen on top of it, just keeping 160 vectors sitting there came to roughly 300 yen a day. For tinkering and prototypes, that’s steep. (These figures are from 2023; Pinecone’s pricing has since changed.)

Behind the “convenience” of a managed service, I think, hides this kind of floor cost. Whether you use it or not, simply renting it costs a fixed amount. Until real scale arrives, that fixed cost is what weighs on you.

A word from the side

While I was wondering what to do, K — who handles back end and infrastructure on our Vietnam team — dropped in a line: “For a vector DB, wouldn’t Qdrant be a good fit?”

K is an engineer strong across infrastructure and the back end, and I’d never heard of him doing AI. Even so, the suggestion was spot on. It came from looking one layer out — not at the AI itself, but at where you put it — and it’s the people who see the whole, I think, who notice “this part could be trimmed.” (I wrote about that “the one who sees the whole notices” idea in a separate article, too.)

From renting to owning

Qdrant can be used fully managed, like Pinecone, but you can also stand it up in your own environment. A Docker image is published, so it’s just a matter of starting a single container. Mount the data to a local directory as a volume, and even if you delete the container by mistake, it stays. Configuration is only a URL and a collection name — if anything, simpler than Pinecone.

And so I stopped “renting” (managed) and switched to “owning” (self-hosted). From a fixed monthly fee to a container running on my own machine.

The real reason the switch was cheap

What made the difference here was how swappable the design was.

The RAG was built with LangChain, and I was calling the vector database through a common interface called “vectorstore.” Thanks to that, the only thing I actually rewrote to move from Pinecone to Qdrant was the initialization class — roughly one place — and I didn’t touch a single line of the search or question-answering code. (The code below is from back then — 2023.)

# Before (Pinecone)
from langchain.vectorstores import Pinecone
docsearch = Pinecone(index, embeddings.embed_query, "text")

# After (Qdrant)
from langchain.vectorstores import Qdrant
docsearch = Qdrant(client=client,
                   collection_name=collection_name,
                   embeddings=embeddings.embed_query)

Keep the swappable parts in a swappable shape. That alone makes the decision to “go ahead and switch” remarkably light. Had I wired this in tightly instead, I might have noticed the cost and still been unable to move.

So when to rent, and when to own

This isn’t to say managed is bad. The balance is roughly how I think of it. Owning (self-hosting) suits the small, intermittent, cost-sensitive stage where the scale isn’t yet clear — when you’d rather not pay a fixed cost. Renting (managed) suits the stage where scale and traffic have arrived and you want to hand off the operations themselves — availability, scaling, backups — and the effort is worth paying to offload.

In the end, it may come down to just this: which weighs more on you right now, the floor cost or the operational burden. My 160 vectors didn’t yet need $70 a month of operational offloading. That was all it came down to.

One last note

Just to be clear — this is a record of experimenting with general RAG, not the makeup of our own products. Still, the judgment of “rent or own” is one that applies to any product.

When you fold AI into a business, small decisions like this — made before you build, before you place it — can change the cost that follows several times over. If you’d like to think that part through together, you’re welcome to reach out here.

#RAG#Vector Database#AI-Native