Vektordatabaser: Pinecone, Weaviate och pgvector · Lektion

Optimera filtrerad sökning

Optimera pgvector-frågor som kombinerar vektorsimilaritet med metadatafilter med hjälp av strategier för partiell och sammansatt indexering.

Lektion 4 av 413 steg

Optimera filtrerad sökning är en gratis lektion i Vektordatabaser: Pinecone, Weaviate och pgvector på CoddyKit. Detta är lektion 4 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Vektordatabaser: Pinecone, Weaviate och pgvector, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Vektordatabaser: Pinecone, Weaviate och pgvector innehåller totalt 4 lektioner.

Problemet med filtrerad sökning

Riktiga frågor kombinerar ofta en vektorsökning med ett metadatafilter i WHERE. Naiva kombinationer kan kringgå vektorindexet och bli långsamma.

SELECT id FROM docs
WHERE category = 'news'
ORDER BY embedding <=> '[...]'::vector
LIMIT 10;

Varför filter försämrar täckningen

ANN-index returnerar ungefärliga närmaste grannar innan filtret tillämpas. Om de flesta kandidater filtreras bort kan du få färre än LIMIT-resultat — detta kallas överfiltrering.

Öka sökomfattningen

Höj hnsw.ef_search (eller antalet IVFFlat-prober) så att indexet genomsöker fler kandidater före filtreringen. Det förbättrar täckningen för selektiva filter.

SET hnsw.ef_search = 100;

Partiella index

För ett vanligt filtervärde med låg kardinalitet kan du skapa ett partiellt index som endast omfattar dessa rader. Indexet matchar då den filtrerade delmängden perfekt.

CREATE INDEX ON docs
USING hnsw (embedding vector_cosine_ops)
WHERE category = 'news';

När partiella index är bäst

Partiella index är särskilt effektiva när:

  • Det finns få och kända filtervärden
  • Varje delmängd är tillräckligt stor för att ha betydelse
  • Frågor nästan alltid innehåller filtret

Stödindex av typen B-tree

För filter med hög kardinalitet kan du lägga till ett vanligt B-tree-index på metadatakolumnen. Frågeplaneraren kan kombinera det med vektorgenomsökningen.

CREATE INDEX ON docs (category);
CREATE INDEX ON docs (published_at);

Iterativa indexgenomsökningar

Nyare versioner av pgvector stöder iterativa genomsökningar, som fortsätter att hämta data från indexet tills tillräckligt många rader klarar filtret. Aktivera detta för att undvika för få resultat.

SET hnsw.iterative_scan = 'relaxed_order';

Förfiltrering kontra efterfiltrering

Förfiltrering: begränsa raderna först och utför sedan vektorsökningen (bra för mycket selektiva filter). Efterfiltrering: utför vektorsökningen först och filtrera sedan (bra för breda filter). Testa båda.

Mätning med EXPLAIN

Bekräfta alltid planen. Leta efter Index Scan using ... hnsw i stället för en sekventiell genomsökning.

EXPLAIN ANALYZE
SELECT id FROM docs
WHERE category = 'news'
ORDER BY embedding <=> '[...]'::vector
LIMIT 10;

Kombinera strategier

En robust konfiguration använder ofta partiella index för frekventa filter, B-tree-index för resten och ett finjusterat ef_search med iterativa genomsökningar som säkerhetsåtgärd.

Checklista

Innan du driftsätter en filtrerad vektorfråga:

  • Verifiera indexanvändningen med EXPLAIN
  • Bekräfta att du konsekvent får LIMIT-resultat
  • Mät svarstiden vid p95

Snabbtest

Testa dina kunskaper om filtrerad sökning.

Sammanfattning

Du har lärt dig varför filter är en utmaning för ANN-index och hur partiella index, B-tree-stödindex, justering av ef_search och iterativa genomsökningar håller filtrerade vektorfrågor både snabba och träffsäkra.

Gratis att börja

Lär dig Vektordatabaser: Pinecone, Weaviate och pgvector med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
12
Lektioner
48

Vanliga frågor

Är lektionen ”Optimera filtrerad sökning” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Vektordatabaser: Pinecone, Weaviate och pgvector, inklusive ”Optimera filtrerad sökning”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Vektordatabaser: Pinecone, Weaviate och pgvector innehåller totalt 4 lektioner.

Vad lär jag mig i ”Optimera filtrerad sökning”?

Optimera pgvector-frågor som kombinerar vektorsimilaritet med metadatafilter med hjälp av strategier för partiell och sammansatt indexering. Ni övar på Vektordatabaser: Pinecone, Weaviate och pgvector med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Vektordatabaser: Pinecone, Weaviate och pgvector?

Du behöver inga förkunskaper. Utbildningen i Vektordatabaser: Pinecone, Weaviate och pgvector på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Optimera filtrerad sökning”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Vektordatabaser: Pinecone, Weaviate och pgvector-lektionen?

Ja. Varje Vektordatabaser: Pinecone, Weaviate och pgvector-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. IVFFlat-indexering för högre hastighet
  2. HNSW-indexering för högre recall
  3. Justera frågeprestanda
  4. Optimera filtrerad sökning
← Tillbaka till Vektordatabaser: Pinecone, Weaviate och pgvector