Optimering af filtreret search
Optimér pgvector-forespørgsler, der kombinerer vectorsimilarity med metadatafiltre, ved hjælp af strategier for partial og composite indexing.
Optimering af filtreret search er en gratis Vektordatabaser: Pinecone, Weaviate og pgvector-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Vektordatabaser: Pinecone, Weaviate og pgvector, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Vektordatabaser: Pinecone, Weaviate og pgvector-kurset indeholder 4 lektioner i alt.
Problemet med filtreret søgning
Virkelige forespørgsler kombinerer ofte en vektorsøgning med et metadatafilter i WHERE. Naive kombinationer kan omgå vektorindekset og blive langsomme.
SELECT id FROM docs
WHERE category = 'news'
ORDER BY embedding <=> '[...]'::vector
LIMIT 10;Hvorfor filtre svækker genkaldelsen
ANN-indekser returnerer omtrentlige nærmeste naboer før filteret anvendes. Hvis de fleste kandidater filtreres væk, får du måske færre resultater end LIMIT angiver — det kaldes overfiltrering.
Udvidelse af søgeområdet
Hæv hnsw.ef_search (eller IVFFlat-prober), så indekset scanner flere kandidater før filtreringen. Det forbedrer genkaldelsen ved selektive filtre.
SET hnsw.ef_search = 100;Partielle indekser
For en almindelig filterværdi med få forskellige værdier kan du oprette et partielt indeks, der kun dækker disse rækker. Indekset passer så perfekt til det filtrerede udsnit.
CREATE INDEX ON docs
USING hnsw (embedding vector_cosine_ops)
WHERE category = 'news';Hvornår partielle indekser er bedst
Partielle indekser er særligt nyttige, når:
- Der er få og kendte filterværdier
- Hvert udsnit er stort nok til at have betydning
- Forespørgsler næsten altid indeholder filteret
B-træ-understøttende indekser
Ved filtre med mange forskellige værdier kan du tilføje et almindeligt B-træ-indeks på metadatakolonnen. Planlæggeren kan kombinere det med vektorscanningen.
CREATE INDEX ON docs (category);
CREATE INDEX ON docs (published_at);Iterative indeksscanninger
Nyere versioner af pgvector understøtter iterative scanninger, som fortsætter med at hente fra indekset, indtil nok rækker består filteret. Aktivér dette for at undgå for få resultater.
SET hnsw.iterative_scan = 'relaxed_order';Forfiltrering kontra efterfiltrering
Forfilter: Begræns først rækkerne, og udfør derefter vektorsøgningen (godt til meget selektive filtre). Efterfilter: Udfør først vektorsøgningen, og filtrér derefter (godt til brede filtre). Test begge dele.
Måling med EXPLAIN
Bekræft altid planen. Se efter Index Scan using ... hnsw i stedet for en sekventiel scanning.
EXPLAIN ANALYZE
SELECT id FROM docs
WHERE category = 'news'
ORDER BY embedding <=> '[...]'::vector
LIMIT 10;Kombination af strategier
En robust opsætning bruger ofte partielle indekser til hyppige filtre, B-træ-indekser til resten og en justeret ef_search med iterative scanninger som sikkerhedsnet.
Kontrolliste
Før du sender en filtreret vektorforespørgsel i produktion:
- Bekræft indeksbrug med EXPLAIN
- Bekræft, at du pålideligt får det antal resultater, som LIMIT angiver
- Mål svartiden ved p95
Hurtigt tjek
Test din viden om filtreret søgning.
Opsummering
Du har lært, hvorfor filtre udfordrer ANN-indekser, og hvordan partielle indekser, B-træ-understøttende indekser, justering af ef_search og iterative scanninger holder filtrerede vektorforespørgsler både hurtige og præcise.
Lær Vektordatabaser: Pinecone, Weaviate og pgvector med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 12
- Lektioner
- 48
Ofte stillede spørgsmål
Er lektionen “Optimering af filtreret search” gratis?
Ja — alle 3 lektioner i læringssporet Vektordatabaser: Pinecone, Weaviate og pgvector, inklusive “Optimering af filtreret search”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Vektordatabaser: Pinecone, Weaviate og pgvector-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Optimering af filtreret search”?
Optimér pgvector-forespørgsler, der kombinerer vectorsimilarity med metadatafiltre, ved hjælp af strategier for partial og composite indexing. Du øver dig i Vektordatabaser: Pinecone, Weaviate og pgvector med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Vektordatabaser: Pinecone, Weaviate og pgvector?
Der kræves ingen tidligere erfaring. Vektordatabaser: Pinecone, Weaviate og pgvector på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.
Hvor lang tid tager lektionen “Optimering af filtreret search”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Vektordatabaser: Pinecone, Weaviate og pgvector-lektion?
Ja. Alle Vektordatabaser: Pinecone, Weaviate og pgvector-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- IVFFlat-indeksering for hastighed
- HNSW-indeksering for recall
- Optimering af forespørgselsydeevne
- Optimering af filtreret search