Vektordatabaser: Pinecone, Weaviate og pgvector · Lektion

Optimering af filtreret search

Optimér pgvector-forespørgsler, der kombinerer vectorsimilarity med metadatafiltre, ved hjælp af strategier for partial og composite indexing.

Lektion 4 af 413 trin

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.

Gratis at komme i gang

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

  1. IVFFlat-indeksering for hastighed
  2. HNSW-indeksering for recall
  3. Optimering af forespørgselsydeevne
  4. Optimering af filtreret search
← Tilbage til Vektordatabaser: Pinecone, Weaviate og pgvector