Zestawienia · 09 / 15
Bazy wektorowe i RAG
Wyszukiwanie po znaczeniu: od pgvector w Postgresie do usług zarządzanych.
Stan na: 7.11.2026
Po co wektory
Model AI zamienia tekst na wektor, czyli listę liczb, która oddaje znaczenie. Teksty o podobnym sensie mają bliskie wektory. Baza wektorowa szuka „najbliższych” wektorów, więc znajduje akapity o tym samym, nawet gdy użyto innych słów.
Na tym stoi RAG (retrieval-augmented generation): zanim model odpowie, aplikacja wyszukuje w Twoich dokumentach pasujące fragmenty i dokleja je do pytania. Model odpowiada z Twojej wiedzy, a nie tylko z treningu.
Porównanie
| Baza | Rodzaj | Co wyróżnia |
|---|---|---|
| pgvector | rozszerzenie Postgresa | wektory obok reszty danych, indeksy HNSW i IVFFlat |
| Pinecone | usługa zarządzana | wyszukiwanie semantyczne, wektory gęste i rzadkie, wektory z tekstu po stronie serwera, reranking |
| Qdrant | otwarty kod albo chmura | platforma wyszukiwania wektorowego, chmura zarządzana, hybrydowa i prywatna |
| Weaviate | otwarty kod | wyszukiwanie hybrydowe: znaczenie i słowa kluczowe naraz |
| Chroma | otwarty kod (Apache 2.0) albo chmura | lokalnie, na własnym serwerze albo jako Chroma Cloud |
| Upstash Vector | usługa serverless | w pakiecie z Redis i kolejkami Upstash |
pgvector: zacznij tutaj
Jeśli masz już Postgresa (Supabase, Neon, własny serwer), nie potrzebujesz osobnej bazy. pgvector obsługuje:
- typy:
vector(pojedyncza precyzja),halfvec(połowa precyzji),bit(binarne) isparsevec(rzadkie); - odległości: L2, iloczyn skalarny, cosinusową, L1, Hamminga i Jaccarda (dwie ostatnie dla wektorów binarnych);
- indeksy przybliżone HNSW i IVFFlat; bez indeksu wyszukiwanie jest dokładne.
create extension if not exists vector;
create table dokumenty (
id bigserial primary key,
tresc text not null,
wektor vector(1024)
);
create index on dokumenty using hnsw (wektor vector_cosine_ops);
-- pięć akapitów najbliższych pytaniu
select tresc from dokumenty
order by wektor <=> $1
limit 5;
Wymiar wektora (tu 1024) musi pasować do modelu, który liczy wektory. Sprawdź go w dokumentacji modelu.
Miary odległości
| Miara | Operator w pgvector | Kiedy |
|---|---|---|
| cosinusowa | <=> | domyślny wybór dla tekstu |
| iloczyn skalarny | <#> | wektory znormalizowane, gdy liczy się szybkość |
| L2 (euklidesowa) | <-> | gdy liczy się też długość wektora |
Typowy RAG
1. Podziel dokumenty na fragmenty (np. akapity).
2. Policz wektor każdego fragmentu i zapisz go w bazie.
3. Policz wektor pytania użytkownika.
4. Znajdź kilka najbliższych fragmentów.
5. Doklej je do polecenia dla modelu z prośbą o odpowiedź tylko z nich.
6. Pokaż odpowiedź ze źródłami.
Dobre praktyki:
- dziel tekst w sensownych miejscach, z małą zakładką między fragmentami;
- zapisuj obok wektora źródło i datę, żeby model mógł cytować;
- łącz wyszukiwanie wektorowe z filtrem po metadanych (klient, rok, typ dokumentu);
- przy dużych zbiorach dołóż reranking najlepszych wyników;
- mierz jakość na zestawie prawdziwych pytań.
Szybki wybór
- Masz Postgresa: pgvector.
- Chcesz usługę bez utrzymania: Pinecone albo Chroma Cloud.
- Chcesz otwarty kod na własnym serwerze: Qdrant, Weaviate albo Chroma.
- Potrzebujesz wyszukiwania po znaczeniu i słowach naraz: Weaviate albo hybryda w Postgresie.
Wersja angielska porównywała też szybkość i ceny baz. Te liczby pochodziły z różnych testów i nie dało się ich potwierdzić na stronach producentów, więc je usunąłem.