Wyszukiwanie pełnotekstowe i embeddingi wektorowe z pgvector
Rozbuduj funkcje wyszukiwania, korzystając z pełnotekstowego wyszukiwania Postgres oraz wyszukiwania podobieństwa semantycznego z rozszerzeniem pgvector w Supabase.
Wyszukiwanie pełnotekstowe i embeddingi wektorowe z pgvector to bezpłatna lekcja Supabase Backend as a Service na CoddyKit. To lekcja 3 z 3. 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 Supabase Backend as a Service, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Supabase Backend as a Service zawiera 3 lekcji w sumie.
Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.
Two Kinds of Search
Postgres supports full-text search for keyword matching and, via the pgvector extension, semantic search over AI embeddings, both inside Supabase.
Full-Text Search Basics
Postgres turns text into a searchable tsvector and queries it with a tsquery, handling stemming and ranking.
A Full-Text Query
Match documents whose body contains the search terms.
select id, title
from articles
where to_tsvector('english', body)
@@ plainto_tsquery('english', 'database scaling');Indexing for Speed
A GIN index on the tsvector makes full-text search fast at scale.
create index articles_fts
on articles
using gin (to_tsvector('english', body));What Are Embeddings?
An embedding is a list of numbers (a vector) that captures meaning. Similar texts have vectors that are close together, enabling search by concept, not just keywords.
Enabling pgvector
Turn on the extension, then add a vector column sized to your model's dimensions.
create extension if not exists vector;
alter table docs add column embedding vector(1536);Storing an Embedding
Generate the vector with an embedding model, then insert it alongside the text.
const { error } = await supabase
.from('docs')
.insert({ content: text, embedding: vectorArray });Similarity Search
Find the nearest vectors using a distance operator. <=> is cosine distance.
select content
from docs
order by embedding <=> query_embedding
limit 5;Indexing Vectors
An HNSW or IVFFlat index speeds up nearest-neighbor search on large vector tables.
create index on docs
using hnsw (embedding vector_cosine_ops);Choosing the Right Approach
Use full-text search for exact keyword needs, and vector search for meaning-based retrieval like Q&A or recommendations. Many apps combine both (hybrid search).
function pickSearch(needsMeaning) {
return needsMeaning ? 'vector' : 'full-text';
}
console.log(pickSearch(true));Putting It Together
Postgres gives you both keyword and semantic search natively. With GIN indexes for text and HNSW indexes for vectors, search stays fast as data grows.
Quick Check
Test your understanding of search extensions.
Recap
You learned full-text search with tsvector and GIN indexes, plus semantic search with pgvector, vector columns, distance operators, and HNSW indexes, and when to use each or combine them.
Często zadawane pytania
Czy lekcja „Wyszukiwanie pełnotekstowe i embeddingi wektorowe z pgvector” jest bezpłatna?
Tak — pełny tekst „Wyszukiwanie pełnotekstowe i embeddingi wektorowe z pgvector” 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 Supabase Backend as a Service, przejdź na CoddyKit PRO. Kurs Supabase Backend as a Service zawiera 3 lekcji w sumie.
Co nauczysz się w „Wyszukiwanie pełnotekstowe i embeddingi wektorowe z pgvector”?
Rozbuduj funkcje wyszukiwania, korzystając z pełnotekstowego wyszukiwania Postgres oraz wyszukiwania podobieństwa semantycznego z rozszerzeniem pgvector w Supabase. Ćwiczysz Supabase Backend as a Service 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ąć Supabase Backend as a Service?
Nie wymagamy żadnego doświadczenia. Supabase Backend as a Service 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 3 z 3.
Ile czasu zajmuje lekcja „Wyszukiwanie pełnotekstowe i embeddingi wektorowe z pgvector”?
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 Supabase Backend as a Service?
Tak. Każda lekcja Supabase Backend as a Service 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
- Korzystanie z rozszerzeń Postgres
- Zaawansowane dane geoprzestrzenne (PostGIS)
- Wyszukiwanie pełnotekstowe i embeddingi wektorowe z pgvector