5.5 KiB
5.5 KiB
🧠 Vektorové databáze
Přehled
Specializované databáze pro ukládání a vyhledávání embeddingů — vektorových reprezentací nestrukturovaných dat (text, obrázky, audio, video). Umožňují sémantické vyhledávání na základě podobnosti, nikoliv přesné shody. Klíčový stavební kámen pro RAG (Retrieval-Augmented Generation) a AI aplikace.
Embeddings
- Mapují nestrukturovaná data do vektorového prostoru (seznam čísel)
- Blízkost ve vektorovém prostoru = sémantická podobnost
- Generovány modely: Word2Vec, BERT, OpenAI embeddings, E5, Cohere, Mistral
- Dimenze: 384 (all-MiniLM) až 3072 (OpenAI text-embedding-3-large)
Indexování vektorů
| Metoda | Algoritmus | Popis | Přesnost | Rychlost |
|---|---|---|---|---|
| Flat (brute-force) | Úplné prohledání | Porovnání se všemi vektory | 100 % | O(N) — pomalé pro > 100K |
| IVF (Inverted File) | K-means clustering | Rozdělení do shluků, hledá se v nejbližším shluku | ~95-99 % | O(sqrt(N)) |
| HNSW (Hierarchical Navigable Small World) | Navigovatelný graf | Víceúrovňový graf, greedy search | ~99-100 % | O(log N) |
| IVF-PQ | IVF + Product Quantization | Komprese vektorů, menší paměť | ~90-95 % | O(sqrt(N)) |
| DiskANN | SSD-based graf | Vektory na disku, Vamana graf | ~95-98 % | O(log N) + I/O |
Volba indexu
| Počet vektorů | Požadavek | Doporučený index |
|---|---|---|
| < 100K | 100% přesnost | Flat |
| 100K - 10M | Vysoká přesnost, rychlost | HNSW |
| 10M+ | Paměťová efektivita | IVF-PQ, DiskANN |
| 100M+ | Škálování na SSD | DiskANN |
Use case: RAG (Retrieval-Augmented Generation)
User query → Embedding model → Vector DB search → Relevant chunks → LLM → Answer
Varianty:
- Naive RAG — jeden retrieval + jeden generování
- Advanced RAG — pre-retrieval (query rewriting, HyDE) + post-retrieval (reranking, filtering)
- Multi-modal RAG — text + obrázky + audio do jednoho pipeline
Nástroje — srovnání
| Nástroj | Typ | Indexy | Cloud | Self-hosted | Poznámka |
|---|---|---|---|---|---|
| Pinecone | Managed | HNSW, IVF-PQ | Ano | Ne | Plně spravovaná, žádný ops. Cena dle dimenze a počtu vektorů |
| Weaviate | Open source | HNSW, Flat | Ano (WCD) | Ano | Grafová + vektorová, hybridní dotazy, modulární (generative search) |
| Qdrant | Open source | HNSW, IVF-PQ, quantization | Ano (Cloud) | Ano | Rust, batch API, filtr souběžně s vektorovým search |
| Milvus | Open source | IVF, HNSW, IVF-PQ, DiskANN | Ano (Zilliz) | Ano | GPU akcelerace. Komplexnější ops (K8s required) |
| pgvector | PostgreSQL extension | IVFFlat, HNSW | Vše (díky RDS) | Ano | Embeddingy přímo v PostgreSQL. Hybridní SQL + vektory |
| Chroma | Open source | HNSW | Ne | Ano | Jednoduchý na embedding + retrieval, Python-native |
| LanceDB | Open source | IVF-PQ | Ne | Ano | Multimodální data, Arrow formát, žádný server (embedded) |
| Elasticsearch | Search engine | HNSW (8.0+) | Ano (Cloud) | Ano | Pokud už máte ES, lze použít i pro vektory |
pgvector vs samostatná vektorová DB
| Vlastnost | pgvector | Samostatná (Pinecone, Qdrant, Milvus) |
|---|---|---|
| Architektura | Extension v PostgreSQL | Samostatná služba |
| Hybridní dotazy | Nativní SQL + vektory | Nutná koordinace dvou systémů |
| Latence | Vyšší (disk-based PG) | Nižší (in-memory indexy) |
| Škálování | PG replikace / Citus | Nativní sharding, rebalancing |
| Konzistence | PG ACID transakce | Eventual consistency |
| Provoz | Jeden systém | Dva systémy (operational overhead) |
Doporučení — Volba nástroje
| Scénář | Doporučení | Zdůvodnění |
|---|---|---|
| RAG na PostgreSQL datech | pgvector | Hybridní SQL + vektory v jedné DB |
| RAG produkce, žádný ops | Pinecone | Plně managed, škálovatelné, žádný provoz |
| Self-hosted RAG | Qdrant (jednodušší) / Milvus (výkon) | Open source, kontrola nad daty |
| Full-text + vektory | Elasticsearch / Weaviate | Kombinace BM25 + vektorového skóre |
| Výzkum / prototypování | Chroma | Python-native, rychlý start |
| Embedded / edge | LanceDB | Žádný server, Arrow formát |
| Multi-modal data | Weaviate / LanceDB | Nativní podpora obrázků, audio, videa |
| GPU akcelerace | Milvus | CUDA podpora pro index build |
Kdy vektorovou DB (ne)použít
Použít když:
- Potřebujete sémantické vyhledávání (podobnost podle významu, ne klíčových slov)
- Stavíte RAG / AI asistenta nad vlastními daty
- Deduplikace dokumentů, obrázků (near-duplicate detection)
- Doporučovací systémy (podobný obsah, podobní uživatelé)
Nepoužít když:
- Potřebujete přesnou shodu (klíče, ID, foreign keys) → SQL
- Full-text search stačí (BM25, stemming) → Elasticsearch, PostgreSQL full-text
- Vektory jen jako doplněk k primární DB → pgvector (jednoduchost)
- Méně než 1000 dokumentů → postačí brute-force v aplikaci
Zdroje
Odkazy, knihy a standardy: sources/databases/sources.md
Doporučená literatura
| Kniha | Autoři | Popis |
|---|---|---|
| Vector Databases | Borwankar (2026) | Komplexní průvodce vektorovými DB od konceptů po produkční nasazení |
Poslední revize: 2026-06-03