Dlaczego potrzebują Państwo wektorowej bazy danych
Uczestnicy poznają ograniczenia wyszukiwania podobieństwa metodą brute force, dowiedzą się, jak działają algorytmy przybliżonych najbliższych sąsiadów, takie jak HNSW, oraz jakie problemy rozwiązują wektorowe bazy danych w środowisku produkcyjnym.
Dlaczego potrzebują Państwo wektorowej bazy danych to bezpłatna lekcja AI Engineering Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Engineering Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Engineering Academy zawiera 4 lekcji w sumie.
Ograniczenia wyszukiwania w pamięci
Wyszukiwanie semantyczne za pomocą NumPy sprawdza się w przypadku małych korpusów, ale ma zasadniczy problem ze skalowaniem: każde wyszukiwanie skanuje każdy wektor. Przy 1 milionie dokumentów każde zapytanie wymaga 1,5 miliarda mnożeń liczb zmiennoprzecinkowych i trwa setki milisekund. Co gorsza, wszystkie wektory muszą zmieścić się w pamięci RAM.
Produkcyjne systemy AI potrzebują wyszukiwania w milionach dokumentów w czasie krótszym niż 50 ms. Właśnie do tego służą wektorowe bazy danych.
Przybliżone wyszukiwanie najbliższych sąsiadów
Algorytmy Approximate Nearest Neighbor (ANN) poświęcają niewielką część dokładności na rzecz znacznego wzrostu szybkości. Zamiast sprawdzać każdy wektor, algorytmy ANN używają inteligentnych struktur indeksowania, aby pomijać duże części przestrzeni wyszukiwania.
W praktyce ANN zwraca prawdziwego najbliższego sąsiada w ponad 95% przypadków, działając od 100 do 1000 razy szybciej niż wyszukiwanie dokładne. W przypadku RAG taki kompromis niemal zawsze się opłaca.
Jak działa HNSW
HNSW (Hierarchical Navigable Small World) to dominujący algorytm ANN używany przez Pinecone, Weaviate, Qdrant i pgvector. Tworzy wielowarstwowy graf, w którym każdy węzeł łączy się ze swoimi najbliższymi sąsiadami. Wyszukiwanie rozpoczyna się w rzadkiej warstwie górnej, przechodzi do przybliżonego regionu, a następnie schodzi do gęstej warstwy dolnej, aby uzyskać większą precyzję.
HNSW zapewnia doskonałą szybkość zapytań (logarytmiczną względem rozmiaru zbioru danych) i wysoki poziom recall, ale wymaga wcześniejszego zbudowania indeksu.
Co dodają wektorowe bazy danych
Wektorowa baza danych to coś więcej niż indeks ANN. Zapewnia również:
- Filtrowanie metadanych — pobieranie tylko wektorów, dla których
category='finance'lubdate > '2024-01-01' - Trwałe przechowywanie — dane przetrwają ponowne uruchomienie i mogą wykraczać poza pojemność pamięci RAM
- Operacje CRUD — wstawianie, aktualizowanie i usuwanie pojedynczych wektorów
- Izolacja przestrzeni nazw — oddzielne kolekcje dla różnych klientów lub środowisk
- Skalowanie horyzontalne — rozdzielanie milionów wektorów między fragmenty
Filtrowanie metadanych w praktyce
Filtrowanie metadanych pozwala ograniczyć pobieranie do odpowiedniego podzbioru przed uruchomieniem wyszukiwania ANN. Na przykład w wielodostępnym systemie RAG można filtrować według tenant_id, aby użytkownicy widzieli tylko własne dokumenty. Bez filtrowania metadanych trzeba byłoby utworzyć osobny indeks dla każdego dzierżawcy.
To jedna z najważniejszych możliwości odróżniających wektorowe bazy danych od prostych bibliotek ANN, takich jak FAISS.
# Conceptual example — Pinecone query with metadata filter
results = index.query(
vector=query_embedding,
top_k=5,
filter={
'tenant_id': {'$eq': 'acme_corp'},
'document_type': {'$in': ['invoice', 'contract']},
'date': {'$gte': '2024-01-01'}
},
include_metadata=True
)FAISS: wysokowydajna biblioteka ANN
FAISS (Facebook AI Similarity Search) to biblioteka ANN o otwartym kodzie źródłowym, stworzona przez Meta — najszybsza opcja wyszukiwania przyspieszanego przez GPU. Nie jest pełnoprawną bazą danych: nie zapewnia trwałości, metadanych ani wbudowanego serwowania.
FAISS sprawdza się idealnie, gdy potrzebują Państwo maksymalnej przepustowości na jednej maszynie i samodzielnie zarządzają trwałością danych. Chroma, Weaviate i pgvector używają pod spodem FAISS lub HNSW.
import faiss
import numpy as np
d = 1536 # dimension
n = 10000 # number of vectors
# Build a flat (exact) index as a baseline
index = faiss.IndexFlatIP(d) # Inner Product = dot product
# Add random vectors (pretend these are embeddings)
vectors = np.random.randn(n, d).astype('float32')
faiss.normalize_L2(vectors) # normalize for cosine sim
index.add(vectors)
query = np.random.randn(1, d).astype('float32')
faiss.normalize_L2(query)
scores, indices = index.search(query, k=5)
print('Top 5 indices:', indices[0])
print('Top 5 scores:', scores[0])Wektorowe bazy danych a tradycyjne bazy danych
Tradycyjne bazy danych SQL, takie jak PostgreSQL, są zoptymalizowane pod kątem dokładnego wyszukiwania i zapytań zakresowych na danych strukturalnych. Nie są przeznaczone do wyszukiwania najbliższych sąsiadów w przestrzeniach wielowymiarowych. Nawet z rozszerzeniem pgvector czysty PostgreSQL jest wolniejszy od wyspecjalizowanych wektorowych baz danych w przypadku dużych korpusów.
Jednak pgvector to doskonały wybór, gdy aplikacja już działa na PostgreSQL, a korpus obejmuje mniej niż kilka milionów dokumentów, ponieważ pozwala uniknąć dodawania kolejnego komponentu infrastruktury.
Opcje zarządzane i hostowane samodzielnie
Wybór wektorowej bazy danych obejmuje dwie kategorie:
- Zarządzane (serverless): Pinecone, Weaviate Cloud — brak infrastruktury, którą trzeba zarządzać, opłaty za zapytania i pamięć masową, natychmiastowa skalowalność
- Hostowane samodzielnie: Qdrant, Chroma, Weaviate open-source, pgvector — pełna kontrola i niższy koszt przy dużej skali, ale samodzielnie zarządzają Państwo kopiami zapasowymi, aktualizacjami i skalowaniem
W przypadku projektów na wczesnym etapie warto zacząć od usługi zarządzanej, aby szybko robić postępy. Samodzielne hostowanie należy rozważyć, gdy miesięczne koszty przekroczą 200–300 USD.
Typy indeksów: Flat, IVF i HNSW
Różne typy indeksów oferują różne kompromisy:
- Flat: wyszukiwanie dokładne, bez przybliżeń; wolne przy dużej skali, ale bez utraty dokładności — dobre do testów porównawczych
- IVF (Inverted File): dzieli wektory na klastry i przeszukuje tylko najbliższe klastry — szybkie, ale wymaga dostrojenia parametrów
nlistinprobe - HNSW: oparte na grafie, oferuje najlepszy kompromis między recall a szybkością dla większości obciążeń; domyślne rozwiązanie w większości produkcyjnych baz danych
Kwantyzacja w celu redukcji pamięci
Kwantyzacja wektorów kompresuje każdą 32-bitową liczbę zmiennoprzecinkową w wektorze do mniejszej liczby bitów, znacznie ograniczając zużycie pamięci kosztem niewielkiej utraty dokładności:
- FP32: 1536 wymiarów × 4 bajty = 6 KB na wektor
- FP16: 3 KB na wektor — kompresja 2×, pomijalna utrata dokładności
- INT8: 1,5 KB na wektor — kompresja 4×, spadek recall o około 1%
Przy 10 milionach wektorów kwantyzacja INT8 zmniejsza zapotrzebowanie na pamięć z 60 GB do 15 GB, co może zdecydować o tym, czy dane zmieszczą się w pamięci RAM.
Kiedy przejść z NumPy na wektorową bazę danych
Warto rozważyć przejście z wyszukiwania w pamięci za pomocą NumPy na wektorową bazę danych, gdy:
- Korpus przekracza 50 000 dokumentów, a czas odpowiedzi zapytań się wydłuża
- Potrzebują Państwo filtrowania metadanych (według daty, użytkownika, kategorii itd.)
- Potrzebują Państwo trwałości danych, która przetrwa ponowne uruchomienie aplikacji
- Wiele usług lub użytkowników musi korzystać ze wspólnego indeksu
- Potrzebują Państwo aktualizować lub usuwać pojedyncze dokumenty bez ponownego indeksowania całości
Szybki sprawdzian
Sprawdź swoją wiedzę na temat koncepcji inżynierii AI z tej lekcji.
Podsumowanie lekcji
W tej lekcji nauczyli się Państwo, że: wyszukiwanie metodą brute-force w NumPy nie skaluje się powyżej dziesiątek tysięcy dokumentów, HNSW umożliwia szybkie przybliżone wyszukiwanie najbliższych sąsiadów dzięki poruszaniu się po hierarchicznym grafie, a wektorowe bazy danych dodają filtrowanie metadanych, trwałość danych i operacje CRUD do indeksów ANN. Następnie skonfigurujemy Pinecone, najpopularniejszą zarządzaną wektorową bazę danych, i zindeksujemy pierwsze dokumenty.
Ucz się Python dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 30
- Lekcje
- 120
Często zadawane pytania
Czy lekcja „Dlaczego potrzebują Państwo wektorowej bazy danych” jest bezpłatna?
Tak — pełny tekst „Dlaczego potrzebują Państwo wektorowej bazy danych” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Engineering Academy, przejdź na CoddyKit PRO. Kurs AI Engineering Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Dlaczego potrzebują Państwo wektorowej bazy danych”?
Uczestnicy poznają ograniczenia wyszukiwania podobieństwa metodą brute force, dowiedzą się, jak działają algorytmy przybliżonych najbliższych sąsiadów, takie jak HNSW, oraz jakie problemy rozwiązują… Ćwiczysz AI Engineering Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AI Engineering Academy?
Nie wymagamy żadnego doświadczenia. AI Engineering Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Dlaczego potrzebują Państwo wektorowej bazy danych”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AI Engineering Academy?
Tak. Każda lekcja AI Engineering Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Dlaczego potrzebują Państwo wektorowej bazy danych
- Pierwsze kroki z Pinecone
- pgvector: embeddingi w PostgreSQL
- Wybór i benchmarkowanie magazynów wektorowych