---
title: "Vector Databases"
description: "Pinecone, Qdrant, Weaviate, pgvector, and when to pick each - condensed current practice"
url: "https://agentsurface.dev/docs/agent-retrieval/vector-databases"
index: https://agentsurface.dev/llms.txt
lastVerified: 2026-10-29
lastModified: 2026-10-29T11:29:43.000Z
---

Vector databases store and search high-dimensional embeddings via approximate nearest-neighbor algorithms (HNSW, DiskANN, and similar). Choose by operations burden, filtering needs, scale, and whether you already operate Postgres.

## Selection matrix [#selection-matrix]

| Database                 | Self-host    | Native hybrid                            | Best for                                                       | Pricing model                                                                                                                   |
| ------------------------ | ------------ | ---------------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| Pinecone (serverless)    | No           | Yes (+ rerank)                           | Managed, variable workloads                                    | Standard: $16-18/1M reads and $4-4.50/1M writes by cloud and region, $0.33/GB/month, $50/month minimum. Builder tier: $20/month |
| pgvector + pgvectorscale | Yes          | No (pair with Postgres full-text search) | Cost-sensitive teams already running Postgres                  | Infrastructure cost only                                                                                                        |
| Qdrant                   | Yes or cloud | Sparse + dense                           | Fine-grained control, quantization                             | Self-host: infra cost. Cloud: usage-based                                                                                       |
| Weaviate                 | Yes or cloud | Yes (native BM25 + dense)                | Hybrid search without a DIY fusion layer                       | Usage-based                                                                                                                     |
| LanceDB                  | Yes          | Yes (native BM25 + dense, RRF)           | Multi-vector (ColBERT-style); Python, TypeScript and Rust APIs | Free (OSS)                                                                                                                      |
| Turbopuffer              | No           | Vector + BM25 in one substrate           | Very large or long-tail corpora, cost-sensitive cold storage   | Serverless usage-based                                                                                                          |

Verify current pricing before a procurement decision - vector database pricing changes faster than the underlying algorithms. The Pinecone figures are Standard-plan rates from [pinecone.io/pricing](https://www.pinecone.io/pricing/) (accessed 2026-10-29), not universal prices; Enterprise lists higher unit rates and a $500 minimum. A vendor benchmark from Timescale, which makes pgvectorscale, reported pgvector + pgvectorscale beating Pinecone's s1 tier on both p95 latency and self-hosted cost at 50M vectors. It is vendor-authored, not independent. Treat any single benchmark as a starting point for your own load test, and note its date, hardware and Pinecone tier.

## Pinecone serverless [#pinecone-serverless]

Managed, auto-scaling, with native hybrid search and reranking. Namespace per tenant for multi-tenant isolation:

```typescript
const results = await pinecone
  .index("main")
  .namespace("tenant-1")
  .query({ vector: embedding, topK: 10, filter: { source: { $eq: "legal" } } });
```

## pgvector + pgvectorscale [#pgvector--pgvectorscale]

The default choice for teams already operating Postgres. Combine an HNSW or DiskANN vector index with Postgres full-text search for hybrid retrieval:

```sql
CREATE EXTENSION IF NOT EXISTS vector;
CREATE EXTENSION IF NOT EXISTS pgvectorscale;
CREATE INDEX ON documents USING diskann (embedding);
CREATE INDEX fts_idx ON documents USING GIN (to_tsvector('english', text));
```

## Turbopuffer [#turbopuffer]

An object-storage-backed engine best treated as a first-stage retrieval layer: narrow a large namespace to a small candidate set, then rank, rerank, and assemble context in application code. Strong fit for corpora that may grow into the billions of documents, or where not every tenant needs to stay hot. Weak fit when you need joins, transactions, or consistently low latency without cache planning.

## Migration checklist [#migration-checklist]

- Export vectors and metadata; map schema (dims, distance metric, quantization) to the new store.
- Batch import with retry logic; run shadow traffic before cutover.
- Verify p95/p99 latency and cost on the new store before decommissioning the old one.

## See also [#see-also]

- [Pinecone cost guide](https://docs.pinecone.io/guides/manage-cost/understanding-cost)
- [pgvectorscale](https://github.com/timescale/pgvectorscale)
- [Turbopuffer docs](https://turbopuffer.com/docs)
