What Vector Databases Actually Do
A vector database stores numerical representations of data—embeddings—and retrieves similar items through mathematical distance calculations. When you ask an LLM about your NERC CIP compliance documents, a vector database finds the three most relevant paragraphs from 40,000 pages in under 20 milliseconds. Traditional databases can't do this because they search for exact matches or predefined attributes. Vector databases search for semantic similarity.
In my deployments at EthosPower, vector databases sit between your operational documents and your LLMs. They're the memory layer that makes Retrieval-Augmented Generation (RAG) work in air-gapped environments. Without them, your LLM only knows what it was trained on—nothing about your specific switching procedures, equipment warranties, or maintenance histories. With them, your AI can answer "what's the lockout procedure for Bay 7" by pulling the exact section from your 2019 substation manual.
The energy sector has a specific problem: we generate millions of PDFs, Word docs, and scanned procedures that contain critical operational knowledge, but keyword search is worthless when an operator asks "how do we handle low frequency events during islanding." That question contains zero of the actual keywords in the relevant IEEE 1547 sections. Vector similarity finds it anyway because the embedding space captures meaning, not just words. If you're evaluating AI infrastructure for your utility, understanding vector databases isn't optional—start with our AI Readiness Assessment to see where they fit in your stack.
Why Energy Operations Need Them Now
Every utility I've worked with has the same problem: institutional knowledge walking out the door. Your senior protection engineer retires, and suddenly nobody knows why that particular relay setting exists. Vector databases let you build a queryable memory of that knowledge before it's gone.
Three specific use cases where I've deployed them:
- Compliance Documentation Retrieval: NERC CIP audits require proving you followed procedures. A vector database indexes every version of every procedure, lets auditors ask natural language questions, and returns the exact paragraph with timestamp and version number. We cut audit prep time by 60% at a Southwest utility.
- Equipment Troubleshooting: Vector search across maintenance logs, vendor manuals, and tribal knowledge documents. An operator types "transformer overheating summer peak," gets the five most similar past incidents with resolution steps. This works in air-gapped OT networks where you can't call the vendor or Google it.
- Work Order Intelligence: Embeddings of 10 years of work orders reveal patterns. "Recloser failure" clusters near specific weather conditions and load profiles. You can predict maintenance needs before failure, but only if you can find similar historical patterns in unstructured text.
The key constraint: energy sector AI must work air-gapped. Your SCADA network isn't calling OpenAI's API. You need local embeddings and local vector search, which is why we default to Qdrant for most deployments—fully open-source, runs on a single server, no internet required.
The Technical Architecture
Vector databases handle three operations: ingestion, indexing, and retrieval. Here's what that looks like in practice.
Ingestion and Embedding
You feed documents to an embedding model (we use sentence-transformers locally, often all-MiniLM-L6-v2 for speed or e5-large for quality). Each document chunk—typically 512 tokens with 128-token overlap—becomes a 384 or 1024-dimensional vector. A 500-page manual becomes about 2,000 vectors. You store these in the vector database with metadata: document ID, page number, timestamp, classification level.
The embedding model is separate from the vector database. Qdrant doesn't create embeddings—it stores and searches them. This separation matters because you can swap embedding models (retrain on domain-specific terminology) without rebuilding your database infrastructure.
Indexing Strategy
Vector databases use approximate nearest neighbor algorithms—HNSW (Hierarchical Navigable Small World) is dominant. Qdrant uses HNSW with quantization options. At one oil major, we indexed 12 million document chunks (18TB of PDFs) on a 64-core server with 256GB RAM. Query latency stayed under 15ms at p99.
The indexing tradeoff: build time versus query speed versus memory. HNSW is fast but memory-intensive. You can quantize vectors (reduce precision) to cut memory 75% with minimal accuracy loss. For air-gapped systems where hardware is fixed, quantization is non-negotiable.
Retrieval and Filtering
Vector search returns the top-k most similar vectors to a query embedding. But raw similarity isn't enough—you need metadata filtering. "Find similar incidents, but only from substations in the Northeast region, only from the last 5 years, only classified as Public."
Qdrant's filtering is surprisingly good—it pre-filters before similarity search, not after. Weaviate and Milvus do this too, but ChromaDB's filtering is slower because it filters post-search. At scale, this matters. When your compliance officer asks for "all substation access procedures post-2020," you're filtering 90% of your database before computing similarity.
Platform Comparison: What I've Actually Deployed
Qdrant
I default to Qdrant for energy sector work. It's Rust-based (fast, memory-safe), fully open-source, and has the cleanest air-gap story. Single binary, no dependencies, runs on RHEL 7 (yes, your OT network is still on RHEL 7). Quantization and filtering are first-class features. Clustering is straightforward for high-availability.
Downside: smaller ecosystem than Weaviate. Fewer integrations, less hand-holding documentation. If your team is new to vector databases, the learning curve is steeper.
Weaviate
Weaviate has built-in vectorization modules—it can call embedding models for you. This is convenient for rapid prototyping but a liability in air-gapped environments. You're managing the vectorizer lifecycle inside the database.
Weaviate's hybrid search (vector + keyword) is excellent for situations where you need "find similar incidents involving '69kV' equipment"—the keyword ensures you don't get 115kV results even if they're semantically similar. I've used this for equipment-specific searches where model numbers matter.
The tradeoff: Weaviate is Java/Go, heavier footprint, more complex deployment. Fine for cloud, annoying for edge servers in substations.
Milvus
Milvus is built for trillion-scale search. If you're indexing satellite imagery embeddings or sensor time-series embeddings, Milvus handles it. Most utilities don't have trillion-scale problems—you have tens of millions of document chunks, which any modern vector database handles.
Milvus requires etcd and MinIO as dependencies. In air-gapped OT environments, every dependency is a security review and a maintenance burden. I've deployed Milvus once, for a renewable energy company analyzing SCADA time-series similarity across 4,000 wind turbines. It worked, but I wouldn't use it for document search.
ChromaDB
ChromaDB is the easiest to start with—pip install, five lines of Python, you're ingesting embeddings. For local development and proof-of-concept, it's unbeatable. We use it for prototyping before moving to Qdrant for production.
ChromaDB's filtering and scaling story is weak. Once you're past a few million vectors or need complex metadata queries, you'll hit limits. It's not built for the "10 years of maintenance logs" use case.
Neo4j
Neo4j is a graph database, not a pure vector database, but version 5.13+ supports vector indexes. If your use case is knowledge graphs with embeddings—"find equipment similar to this transformer AND connected to the same substation AND maintained by the same crew"—Neo4j lets you combine graph traversal with vector similarity in one query.
I've used this for asset relationship modeling: embeddings of equipment specs, graph edges for physical and logical connections. The query "find similar protection schemes in substations with similar load profiles" is trivial in Neo4j, painful in pure vector databases. For a detailed comparison of when to use graph versus pure vector, ask EthosAI Chat about your specific architecture.
The tradeoff: Neo4j is heavy, expensive (even the open-source community edition), and overkill if you just need semantic search. Use it when relationships are first-class citizens of your data model.
Limitations Nobody Talks About
Vector databases are not magic. Three issues I've hit repeatedly:
Embedding Quality Dominates Performance: Your vector database is only as good as your embeddings. If you use a generic embedding model trained on Wikipedia, it won't understand "islanding" or "UFLS" or "synchrophasor." You need domain-specific fine-tuning or accept degraded retrieval quality. I've spent more time fine-tuning embedding models than tuning database parameters.
Cold Start Problem: Empty vector databases are useless. You need historical data to populate them, which means ETL pipelines, document parsing, and dealing with scanned PDFs from 1987. One client had 30 years of paper maintenance logs. We spent four months scanning and OCR-ing before we could even think about embeddings.
Versioning and Updates: Documents change. Procedures get revised. How do you handle updates without re-embedding everything? Most vector databases don't have built-in versioning. You build it yourself—metadata timestamps, soft deletes, periodic re-indexing. This is operational overhead that doesn't show up in vendor demos.
The Verdict
Vector databases are infrastructure, not products. They're the PostgreSQL of the AI era—boring, essential, invisible when working correctly. For energy sector deployments, Qdrant is my default: open-source, air-gap friendly, fast enough for real-time retrieval, mature enough for production. Weaviate if you need hybrid search and can afford the complexity. Milvus for extreme scale. ChromaDB for prototyping only. Neo4j when your data model is inherently a graph.
The real question isn't which vector database, it's whether your organization is ready to operationalize AI memory systems—pipelines, monitoring, retraining, governance. If you're unsure where to start, try the AI Implementation Cost Calculator to scope what a production vector database deployment actually costs in your environment.