Module 5: Vector Database Landscape for AI Engineers
Capsule 06: When to Choose Each Option
Capsule description
After comparing features, analyzing managed vs self-hosted architectures, and calculating real costs, the moment of truth arrives: choosing. But choosing is not betting. It's building a decision framework that any member of your team can follow and defend with data.
This capsule gives you a decision system based on 5 concrete variables: team size, budget, data scale, latency requirements, and compliance constraints. You won't memorize which provider is "best" — you'll learn to derive the right answer for any combination of variables.
In the end you'll have a complete decision tree that you can apply to your current project and to any future vector infrastructure decision.
The 5 decision variables
Every vector database selection comes down to these five variables. The most common mistake is deciding by looking at only one or two.
Variable 1: Team size and profile
Team | Profile | Implication
------------|----------------------------------|----------------------------------
1-2 devs | Generalists, no DevOps | Managed mandatory
3-5 devs | Mix, possibly 1 with infra skills| Managed preferred, self-hosted viable
5-10 devs | Defined roles, partial DevOps | Both options viable
10+ devs | Dedicated DevOps, SRE | Self-hosted viable and potentially preferred
Rule: If nobody on your team can be woken up at 3am to fix a downed node, you need managed.
Variable 2: Available monthly budget
Budget | Range | Viable options
-------------|----------------|------------------------------------------
$0 | Validation | Free tiers: Pinecone Free, Qdrant Free, ChromaDB local
$0-100/mo | PoC/MVP | Free tiers + ChromaDB on a basic droplet
$100-500/mo | Early product | Qdrant Cloud, Weaviate Cloud, Pinecone Standard
$500-2K/mo | Production | Any managed, self-hosted on a good server
$2K+/mo | Enterprise | Enterprise tiers, self-hosted cluster, hybrid
Variable 3: Current and projected scale
Vectors | Classification | Considerations
------------------|---------------|------------------------------------------
< 10K | Tiny | Any option works, including numpy
10K - 100K | Small | Free tiers sufficient
100K - 500K | Medium | You need a paid tier or self-hosted with RAM
500K - 5M | Large | Performance and costs matter
5M - 50M | Very Large | Sharding, replication needed
> 50M | Massive | Only enterprise options
Variable 4: Latency requirements
p95 latency | Typical use case | Viable options
----------------|--------------------------------|---------------------------
< 10ms | Autocomplete, real-time | Pinecone, Qdrant (optimized)
10-50ms | Interactive search | Any managed, well-configured self-hosted
50-200ms | RAG in a chatbot | All options
200-1000ms | Batch processing | All, including pgvector
> 1000ms | Offline analysis | You don't need a specialized vector DB
Variable 5: Compliance constraints
Level | Requirements | Viable options
---------------|--------------------------------|----------------------------------
None | No specific regulation | Any provider
Basic | Data in a specific region | Managed with region selection
Medium | GDPR, personal data | Managed with a DPA or self-hosted in your infra
High | HIPAA, medical data | Self-hosted or enterprise with certification
Critical | Government, defense, financial | Self-hosted in exclusively audited infra
Decision Tree: the complete framework
Follow this decision tree step by step. Each node is a question with binary answers.
Level 1: Do you need a dedicated vector DB?
Do you have > 10K vectors AND need search < 500ms?
├── NO → Use numpy/FAISS in memory or pgvector if you already have Postgres
│ (You don't need a dedicated vector DB. Review Capsule 07 of Module 1)
└── YES → Continue to Level 2
Level 2: Managed or Self-hosted?
Does your team have dedicated DevOps (>= 1 person with >50% of their time)?
├── NO → MANAGED (continue to Level 3A)
└── YES → Do you have compliance constraints that prevent managed?
├── YES → SELF-HOSTED (continue to Level 3B)
└── NO → Does your budget allow managed ($100+/mo)?
├── YES → MANAGED (continue to Level 3A)
│ (Managed is still preferred for TCO)
└── NO → SELF-HOSTED (continue to Level 3B)
Level 3A: Managed provider selection
How many vectors do you have/project for 6 months?
< 100K vectors:
├── Budget = $0? → Pinecone Free (100K limit) or Qdrant Cloud Free (1GB)
├── Need latency < 20ms? → Pinecone Standard
└── Budget < $50/mo? → Qdrant Cloud Standard
100K - 1M vectors:
├── Priority is latency? → Pinecone Standard
├── Priority is cost? → Qdrant Cloud
└── Need native hybrid search? → Weaviate Cloud
1M - 10M vectors:
├── Need auto-scaling? → Pinecone Standard/Enterprise
├── Priority is cost? → Qdrant Cloud (scales well)
└── Need GraphQL + modules? → Weaviate Cloud
> 10M vectors:
├── Budget > $2K/mo? → Pinecone Enterprise or Qdrant Enterprise
└── Limited budget? → Consider self-hosted (Level 3B)
Level 3B: Self-hosted provider selection
How many vectors do you have/project for 6 months?
< 500K vectors:
├── Want minimal setup (pip install)? → ChromaDB
├── Need a production-ready REST API? → Qdrant
└── Already using Kubernetes? → Weaviate with a Helm chart
500K - 5M vectors:
├── Priority is pure performance? → Qdrant (Rust-based)
├── Need hybrid search + modules? → Weaviate
└── Team already knows Go? → Milvus
> 5M vectors:
├── Need horizontal sharding? → Milvus or Qdrant cluster
├── Team has Kubernetes experience? → Weaviate or Milvus
└── Budget for dedicated hardware? → Qdrant cluster on bare metal
Quick rules by product stage
Stage 1: Discovery / PoC (0-3 months)
Goal: Validate that vector search solves the user's problem.
Decision criteria:
- Setup speed > everything else
- $0 infrastructure ideal
- Doesn't matter if it scales
- Vendor lock-in doesn't matter
Recommendations:
| Scenario | Recommendation | Reason |
|---|---|---|
| Solo, learning | ChromaDB local | pip install chromadb, 30 seconds |
| Small team, demo | Pinecone Free | Ready API, 100K free vectors |
| Sensitive data, local | ChromaDB local | Everything on your machine |
| Already have Postgres | pgvector | No new dependency |
Anti-rule: Do NOT spend more than 1 day on infrastructure at this stage.
Stage 2: Business validation (3-6 months)
Goal: Confirm product-market fit with real users.
Decision criteria:
- Latency < 200ms for acceptable UX
- Uptime > 99% (not 99.9% yet)
- Predictable cost < $200/mo
- Basic support available
Recommendations:
| Scenario | Recommendation | Reason |
|---|---|---|
| < 100K vectors, minimal budget | Qdrant Cloud Free → Standard | Smooth transition without migration |
| 100K-500K vectors | Pinecone Standard | Low latency, zero ops |
| Early multi-tenant | Weaviate Cloud | Native per-tenant isolation |
| Regulated data (GDPR) | Qdrant self-hosted in EU | Full residency control |
Anti-rule: Do NOT switch providers at this stage unless you have a real technical blocker.
Stage 3: Production scale (6-18 months)
Goal: Sustain growth with defined SLAs.
Decision criteria:
- SLA > 99.9% uptime
- p95 latency defined and monitored
- Documented incident plan
- Defined scaling strategy
- Optimized costs (not just "make it work")
Recommendations:
| Scenario | Recommendation | Reason |
|---|---|---|
| 500K-2M, team without DevOps | Pinecone Standard | Auto-scaling, SLA included |
| 500K-2M, team with DevOps | Qdrant self-hosted | Control + optimized cost |
| 2M-10M, multi-tenant | Weaviate Cloud or Qdrant Enterprise | Sharding + isolation |
| >10M, enterprise | Milvus cluster or Pinecone Enterprise | Designed for massive scale |
Stage 4: Maturity / Optimization (18+ months)
Goal: Optimize costs without sacrificing performance.
Decision criteria:
- Optimized TCO (quarterly review)
- Geographic redundancy
- Tested disaster recovery
- Business metrics tied to search performance
Common strategies:
- Migrate from managed to self-hosted IF you have DevOps and the savings justify the migration
- Negotiate enterprise pricing with volume
- Implement caching to reduce direct queries
- Separate hot/cold storage (frequent vectors in RAM, the rest on disk)
Detailed decision cases
Case 1: Pre-seed startup, solo technical founder
Context:
- 1 developer (you)
- Budget: $0-50/mo
- 20K knowledge base documents
- RAG chatbot to demo to investors
- Timeline: 2 weeks for the demo
Analysis by variable:
| Variable | Value | Implication |
|---|---|---|
| Team | 1 dev, no DevOps | Managed mandatory |
| Budget | $0-50/mo | Free tiers |
| Scale | 20K vectors | Tiny, anything works |
| Latency | < 500ms (demo) | Not a constraint |
| Compliance | None | No constraint |
Decision: ChromaDB local for development → Pinecone Free for the demo
Justification: ChromaDB lets you iterate fast locally. For the demo, Pinecone Free gives you a stable URL without managing servers.
Case 2: Seed startup, team of 4 devs
Context:
- 4 developers (1 with some infra)
- Budget: $200-500/mo for all infra
- 150K documents, growing 20%/mo
- B2B SaaS product with 30 early customers
- Latency < 100ms for search
Analysis by variable:
| Variable | Value | Implication |
|---|---|---|
| Team | 4 devs, 1 partial infra | Managed preferred |
| Budget | $200-500/mo | Standard tiers |
| Scale | 150K → 500K in 6 months | Medium, needs a paid tier |
| Latency | < 100ms p95 | Rules out pgvector |
| Compliance | Basic (B2B data) | Managed with a DPA |
Decision: Qdrant Cloud Standard
Justification: Best cost/performance ratio for 150K-500K vectors. Native REST API. Latency < 50ms. ~$50-100/mo. Scales well up to 2M+ without migration.
Alternative: Pinecone Standard if the absolute priority is zero-ops (but ~$150/mo more).
Case 3: Mid-size company, product team + DevOps
Context:
- 8 developers + 2 DevOps
- Budget: $1,000-3,000/mo for vector search
- 2M documents, 500 concurrent users
- Multi-tenant (50 enterprise customers)
- GDPR mandatory, data in EU
- Contractual 99.9% uptime SLA
Analysis by variable:
| Variable | Value | Implication |
|---|---|---|
| Team | 10 people, dedicated DevOps | Self-hosted viable |
| Budget | $1K-3K/mo | Managed enterprise or self-hosted |
| Scale | 2M vectors, 500 concurrent | Large, needs replication |
| Latency | < 50ms p95 | Requires an optimized index |
| Compliance | GDPR, EU data | Managed EU or self-hosted EU |
Decision: Qdrant self-hosted on AWS EU (Frankfurt) with a 3-node cluster
Justification:
- GDPR requires data in the EU → self-hosted gives full control
- Dedicated DevOps → manageable operational cost
- 2M vectors across 3 nodes → redundancy + performance
- Cost: ~$540/mo infra + ~$600/mo operations = $1,140/mo TCO
- vs Pinecone Enterprise EU: ~$2,000/mo (savings of $860/mo = $10,320/year)
Alternative: Weaviate Cloud EU if you want to reduce operational load and the budget allows $1,500-2,000/mo.
Case 4: Scale-up with 20M vectors
Context:
- 15 developers + 4 DevOps/SRE
- Budget: $5,000-15,000/mo for search infrastructure
- 20M vectors, 2,000 concurrent users
- Multi-region (US + EU)
- Latency < 30ms p95
- SOC2 + GDPR
Analysis by variable:
| Variable | Value | Implication |
|---|---|---|
| Team | 19 people, SRE team | Self-hosted preferred |
| Budget | $5K-15K/mo | Enterprise or own cluster |
| Scale | 20M vectors | Needs horizontal sharding |
| Latency | < 30ms p95 | Multi-region needed |
| Compliance | SOC2 + GDPR | Self-hosted or certified enterprise |
Decision: Milvus cluster on Kubernetes (multi-region) or Qdrant distributed cluster
Justification:
- 20M vectors requires horizontal sharding → Milvus or Qdrant cluster
- Multi-region → you need cross-region replication
- The SRE team can handle the operational complexity
- Infra cost: ~$3,000-5,000/mo (vs enterprise managed ~$10,000-15,000/mo)
- Savings: $5,000-10,000/mo = $60,000-120,000/year
Decision checklist
Before committing to a provider, verify each point:
Pre-decision
- Define current vector volume
- I projected volume for 6 and 12 months (3 scenarios)
- Define the p95 latency requirement with real data (not intuition)
- I identified compliance constraints (GDPR, HIPAA, residency)
- I calculated the team's real operational capacity (available hours/month)
- I calculated the complete TCO (not just the service price) for 2+ options
- I tested at least 2 options with a 1-2 day PoC each
Post-decision
- I documented the decision and its reasons (ADR - Architecture Decision Record)
- Define a re-evaluation trigger (date or volume)
- I implemented an abstraction layer to reduce lock-in
- I configured cost alerts (billing alerts)
- I established a quarterly TCO review process
Recommended ADR format
# ADR-XXX: Vector Database Selection
## Status: Accepted
## Context
[Description of the problem and requirements]
## Decision
We chose [provider] in [managed/self-hosted] mode.
## Variables evaluated
| Variable | Value | Weight |
|----------|-------|------|
| Team | ... | ... |
| Budget | ... | ... |
| Scale | ... | ... |
| Latency | ... | ... |
| Compliance | ... | ... |
## Options considered
1. [Option A] - [reason for rejection]
2. [Option B] - [reason for rejection]
3. [Chosen option] - [reason for selection]
## Consequences
- Positive: ...
- Negative: ...
- Risks: ...
## Re-evaluation trigger
Re-evaluate when: [specific condition]
Quick decision matrix
For urgent decisions, use this table as a quick reference:
| Your situation | Primary recommendation | Alternative |
|---|---|---|
| Solo, learning, $0 | ChromaDB local | Pinecone Free |
| MVP, small team, < 100K | Pinecone Free | Qdrant Cloud Free |
| Early product, < 500K | Qdrant Cloud Standard | Pinecone Standard |
| Production, < 2M, no DevOps | Pinecone Standard | Weaviate Cloud |
| Production, < 2M, with DevOps | Qdrant self-hosted | Weaviate self-hosted |
| Multi-tenant, compliance | Qdrant/Weaviate self-hosted EU | Enterprise managed EU |
| Enterprise, > 5M | Milvus cluster | Pinecone Enterprise |
| Ultra-scale, > 50M | Dedicated Milvus cluster | Custom evaluation |
Selection troubleshooting
1. "I don't know if my future scale justifies a complex option"
Symptom: You're between ChromaDB (simple) and Qdrant (more robust) and you don't know how much you'll grow.
Diagnosis: You don't need to predict the future. You need to define a migration trigger.
Solution:
# Define your trigger BEFORE choosing
trigger = {
"volume": "When it reaches 500K vectors",
"latency": "When p95 > 200ms consistently for 1 week",
"cost": "When TCO > $500/month",
"ops": "When I spend > 8h/month on operations",
"date": "Mandatory review in 6 months (date: YYYY-MM-DD)"
}
# Start with the simple option
# Migrate only when a trigger fires
2. "The product demands a strict SLA and the team has no DevOps"
Symptom: Your enterprise customer requires 99.9% uptime but your team of 3 devs has no operations experience.
Solution: Managed is the only viable option. The cost of managed ($200-800/mo) is much lower than the cost of an incident without DevOps (debugging hours × customer impact × relationship damage).
Concrete step: Choose Pinecone Standard or Qdrant Cloud with its included SLA. Document the provider's SLA and present it to your customer.
3. "Compliance changes frequently"
Symptom: Today you have no GDPR requirements but your sales team is closing EU customers.
Solution:
- Choose a provider that offers data residency in multiple regions
- If you're self-hosted, prepare a deploy playbook for a new region
- Include the compliance risk in your TCO calculation
- Review each quarter with the legal/compliance team
4. "Two options have a similar score in my matrix"
Symptom: Qdrant Cloud and Weaviate Cloud tie after the analysis.
Solution: When two options are equivalent on paper, the tiebreakers are:
- Technical test: Do a 1-day PoC with each one. The one that feels better in developer experience wins.
- Community: Which has better documentation, more examples, a more active community?
- Trajectory: Which has more momentum? (GitHub stars trend, recent funding, public roadmap)
5. "My team wants the option I wouldn't recommend"
Symptom: You recommend managed but the team wants self-hosted "to learn".
Solution: Present the analysis with concrete numbers (TCO, operation hours, risk). If the team still prefers self-hosted, negotiate: "OK, self-hosted with a trigger to migrate to managed if operations exceed 10h/month in any month of the first quarter."
Practical exercises
Exercise 1: Apply the Decision Tree to your project
Walk through the complete Decision Tree with your module project's data:
- Do you need a dedicated vector DB? Why?
- Managed or self-hosted? Why?
- Which specific provider? Why?
Example solution (internal knowledge base project)
Level 1: > 10K vectors AND < 500ms?
- I have 50K documents → Yes, I need a dedicated vector DB.
Level 2: Dedicated DevOps?
- No, we're 3 generalist devs → MANAGED
- Compliance that prevents managed? → No
- Budget > $100/mo? → Yes, $200/mo available
Level 3A: How many vectors?
- 50K now, projection 150K in 6 months → < 1M
- Priority? → Cost (limited budget)
- → Qdrant Cloud Standard (~$33-50/mo)
Decision: Qdrant Cloud Standard Re-evaluation trigger: When it reaches 500K vectors or TCO > $200/mo
Exercise 2: Evaluate someone else's case
Your friend has an e-commerce startup with semantic product search. Data:
- Team: 2 full-stack developers
- Budget: $100/mo maximum
- Products: 80K SKUs with descriptions
- Latency: < 100ms (live search)
- Compliance: None
- Growth: 10%/mo
What do you recommend?
Solution
Analysis by variable:
| Variable | Value | Implication |
|---|---|---|
| Team | 2 devs, no DevOps | Managed mandatory |
| Budget | $100/mo | Free → Standard tiers |
| Scale | 80K → 200K in 6 months | Medium |
| Latency | < 100ms | Rules out pgvector |
| Compliance | None | No constraint |
Decision Tree walk:
-
10K AND < 500ms? → Yes (80K, < 100ms)
- DevOps? → No → MANAGED
- 80K vectors, budget $100? → Pinecone Free (free up to 100K) or Qdrant Cloud Free
Recommendation: Start with Pinecone Free (100K limit). When it reaches 100K (2 months), migrate to Qdrant Cloud Standard ($33/mo, within the $100 budget).
Trigger: Migrate when it reaches 90K vectors (before the Pinecone Free limit).
Exercise 3: Write an ADR
Document your Exercise 1 decision in complete ADR format.
Example solution
# ADR-001: Vector Database Selection for Knowledge Base
## Status: Accepted (date)
## Context
We need semantic search over 50K internal documents
for a RAG chatbot. The team is 3 devs without experience
in infrastructure operations. Budget: $200/mo.
## Decision
We chose Qdrant Cloud Standard in managed mode.
## Variables evaluated
| Variable | Value | Weight |
|----------|-------|------|
| Team | 3 devs, no DevOps | High |
| Budget | $200/mo | High |
| Scale | 50K → 150K (6mo) | Medium |
| Latency | < 200ms | Medium |
| Compliance | None | Low |
## Options considered
1. ChromaDB self-hosted - Rejected: TCO > $1,000/mo due to operations
2. Pinecone Standard - Rejected: $150/mo, over budget for features we don't need
3. Qdrant Cloud Standard - Chosen: $33-50/mo, adequate performance, scales up to 2M
## Consequences
- Positive: Zero-ops, low cost, native REST API
- Negative: Moderate lock-in (mitigated with an abstraction layer)
- Risks: Pricing may change
## Re-evaluation trigger
When: volume > 500K vectors OR TCO > $200/mo OR p95 latency > 200ms
Mandatory review date: [6 months from today]
Exercise 4: Compare two growth scenarios
Your product is on Pinecone Free with 60K vectors. Model two futures:
Scenario A: Organic growth (10%/mo) Scenario B: Viral launch (50%/mo for 3 months, then 10%)
For each scenario, when do you need to change tier? How much will it cost?
Solution
import math
current = 60_000
pinecone_free_limit = 100_000
# Scenario A: 10%/mo
months_a = math.log(pinecone_free_limit / current) / math.log(1.10)
print(f"Scenario A: Free limit in {months_a:.1f} months") # ~5.4 months
# Month 12 at 10%/mo
vectors_a_12 = current * (1.10 ** 12)
print(f"Scenario A, month 12: {vectors_a_12:,.0f} vectors") # ~188K
# Cost: Pinecone Standard ~$80/mo
# Scenario B: 50%/mo × 3, then 10%/mo
vectors_b = [current]
for m in range(12):
growth = 1.50 if m < 3 else 1.10
vectors_b.append(vectors_b[-1] * growth)
for i, v in enumerate(vectors_b):
if v > pinecone_free_limit:
print(f"Scenario B: Free limit in month {i}") # Month 2
break
print(f"Scenario B, month 12: {vectors_b[12]:,.0f} vectors") # ~477K
# Cost: Pinecone Standard ~$200/mo or migrate to Qdrant Cloud
# Plan for Scenario B:
# Month 0-2: Pinecone Free ($0)
# Month 2-6: Qdrant Cloud Standard ($50/mo, more cost-effective)
# Month 6+: Evaluate based on real growth
| Scenario | Tier change | Month 6 vectors | Month 12 vectors | Month 12 cost |
|---|---|---|---|---|
| A (10%/mo) | Month 5 | 106K | 188K | ~$80/mo |
| B (viral) | Month 2 | 270K | 477K | ~$200/mo |
Exercise 5: Simulated technical debate
Your CTO wants Pinecone Enterprise ($2,000/mo). You believe Qdrant self-hosted ($500/mo TCO) is enough. Prepare 3 arguments in favor of each option with data.
Solution
In favor of Pinecone Enterprise ($2,000/mo):
- Zero-ops: 0 hours/month of operations vs ~14h/month self-hosted. With a senior at $100/hr, you save $1,400/mo on operations → comparable net cost.
- Contractual SLA: 99.99% uptime with penalties. Self-hosted has no SLA and each hour of downtime costs $X in lost revenue.
- Auto-scaling: Black Friday or a viral launch → Pinecone scales automatically. Self-hosted requires provisioning capacity in advance.
In favor of Qdrant self-hosted ($500/mo TCO):
- Annual savings: ($2,000 - $500) × 12 = $18,000/year. With that money you pay for 180 hours of senior DevOps.
- Zero lock-in: Open-source, you can migrate to another provider or cluster without proprietary dependency. Pinecone is the option with the highest lock-in in the market.
- Future compliance: If in 6 months you need HIPAA or on-premise data, you're already prepared. With Pinecone you'd have to migrate (cost: $10,000+).
Suggested resolution: Start with Qdrant Cloud (managed, $250/mo) as a compromise. If operations exceed expectations, migrate to self-hosted. If the team needs total zero-ops, evaluate Pinecone Enterprise.
Exercise 6: Risk assessment
Identify the 3 biggest risks of your decision and how you'd mitigate them.
Example solution (choosing Qdrant Cloud)
| Risk | Probability | Impact | Mitigation |
|---|---|---|---|
| Qdrant raises prices 50%+ | Medium | High | Abstraction layer ready + migration playbook to self-hosted |
| Qdrant Cloud has an outage > 4h | Low | High | Daily backup of vectors. Failover playbook to ChromaDB local (degraded mode) |
| Volume grows 10x in 3 months | Low | Medium | Re-evaluation trigger at 200K vectors. Approved budget for a higher tier |
Total mitigation cost:
- Abstraction layer: 8 hours × $80/hr = $640 (once)
- Migration playbook: 4 hours × $80/hr = $320 (once)
- Backups: $5/mo (S3)
- Total: ~$1,000 once + $5/mo
Mitigation ROI: If any risk materializes, estimated savings $5,000-15,000 in emergency response.
Connection with the project: Decision Tree
Your final module project is to build a Decision Tree for vector database selection. This capsule gives you the complete framework. In your deliverable:
- Implement the decision tree with the 5 variables as inputs
- Include at least 4 use cases with complete analysis
- Document an ADR for your own project
- Define re-evaluation triggers for each recommendation
Summary
- 5 variables define every decision: team, budget, scale, latency, compliance.
- The Decision Tree gives you a reproducible path, not an opinion. Anyone on your team can follow it.
- Managed is the default for teams without DevOps. Self-hosted only when you have DevOps AND a specific reason (compliance, cost at scale, control).
- The product stage dictates the priority: PoC → speed, Validation → predictable cost, Production → SLA + scalability.
- Document your decision as an ADR. "Why didn't we choose the other options?" should have a clear answer.
- Define re-evaluation triggers BEFORE choosing. Never marry a provider.
- When two options tie, do a 1-day PoC with each one. Developer experience breaks the tie.
Additional resources
- ChromaDB Documentation — Local setup and API reference
- Pinecone Documentation — Pricing, quickstart, best practices
- Qdrant Documentation — API, deployment, cloud
- Weaviate Documentation — Modules, GraphQL, cloud
- Milvus Documentation — Cluster setup, sharding, scaling
- Architecture Decision Records — ADR format and examples
- CNCF Technology Radar - Databases — Adoption trends
- DB-Engines Ranking - Vector DBMS — Up-to-date popularity ranking
Estimated time: 30-40 minutes
Next: 07-selection-anti-patterns.md