Vectordatabases: Pinecone, Weaviate en pgvector · Les

HNSW-indexering voor recall

Verken HNSW-indexering voor pgvector om hogere recallpercentages bij zoekopdrachten op overeenkomst te bereiken en snelheid en nauwkeurigheid in balans te brengen.

Les 2 van 412 stappen

HNSW-indexering voor recall is een gratis Vectordatabases: Pinecone, Weaviate en pgvector-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Vectordatabases: Pinecone, Weaviate en pgvector. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Vectordatabases: Pinecone, Weaviate en pgvector bevat in totaal 4 lessen.

De terugvindingsgraad verhogen met HNSW

Welkom bij HNSW-indexering! In de vorige les hebben we IVFFlat voor snelheid bekeken. Nu gaan we dieper in op Hierarchical Navigable Small World (HNSW), een geavanceerde indexeringstechniek in pgvector.

HNSW is uitstekend wanneer je de meeste relevante resultaten wilt vinden, zelfs als dat ten koste gaat van een kleine afname in querysnelheid vergeleken met IVFFlat. Dit staat bekend als een hoge terugvindingsgraad.

HNSW versus IVFFlat: een kort overzicht

Weet je nog hoe IVFFlat-indexen werken? Ze verdelen gegevens in partities voor snellere, benaderende zoekopdrachten en optimaliseren voor snelheid. HNSW kiest een andere aanpak en geeft prioriteit aan de terugvindingsgraad.

  • IVFFlat: snellere query's, met een voldoende goede terugvindingsgraad.
  • HNSW: hogere terugvindingsgraad (vindt meer echte treffers), maar mogelijk langere bouw- en uitvoeringstijd.

De keuze hangt af van de behoeften van je toepassing: snelheid of volledige resultaten.

Zo werken HNSW-indexen

Stel je HNSW voor als een grafiek met meerdere lagen. Deze verbindt vergelijkbare vectoren over verschillende lagen:

  • Bovenste lagen: ijle grafieken waarmee je snel grote afstanden overbrugt.
  • Onderste lagen: dichte grafieken die de zoekopdracht naar dichtstbijzijnde buren verfijnen.

Dankzij deze structuur kunnen benaderende zoekopdrachten naar dichtstbijzijnde buren (ANN) efficiënt worden uitgevoerd. De zoekruimte wordt snel verkleind om sterk gelijkende vectoren te vinden.

Een HNSW-index maken

Om HNSW te gebruiken heb je eerst de extensie pgvector nodig. Vervolgens kun je een HNSW-index voor je vectorkolom maken. Dit is de basissyntaxis:

CREATE INDEX ON items USING HNSW (embedding vector_l2_ops);

vector_l2_ops geeft aan dat L2-afstand (Euclidische afstand) wordt gebruikt. Er zijn ook andere operatoren beschikbaar, zoals vector_cosine_ops voor cosinusovereenkomst.

HNSW-parameter: `m` (maximaal aantal verbindingen)

De parameter m bepaalt het maximale aantal verbindingen dat een knooppunt (vector) op elke laag in de HNSW-grafiek heeft. Deze parameter is belangrijk voor de kwaliteit van de index:

  • Hogere m: meer verbindingen en een betere terugvindingsgraad, maar een grotere index en langere bouwtijd.
  • Lagere m: minder verbindingen, een kleinere index en een snellere opbouw, maar een lagere terugvindingsgraad.

Een gebruikelijke waarde voor m ligt tussen 8 en 16, maar dit hangt af van je gegevensverzameling en de gewenste nauwkeurigheid.

HNSW-parameter: `ef_construction`

De parameter ef_construction bepaalt de grootte van de dynamische kandidatenlijst tijdens het opbouwen van de grafiek. Deze parameter beïnvloedt hoe grondig de index wordt opgebouwd:

  • Hogere ef_construction: grondiger zoeken tijdens de opbouw en een betere indexkwaliteit (hogere terugvindingsgraad), maar een aanzienlijk langere bouwtijd.
  • Lagere ef_construction: snellere opbouw, maar mogelijk een lagere terugvindingsgraad.

Over het algemeen wordt aangeraden om ef_construction in te stellen op een waarde die 2 tot 4 keer zo groot is als m, of nog hoger als een zeer hoge terugvindingsgraad nodig is.

Code: een HNSW-index maken

Laten we een tabel maken en daarna een HNSW-index met specifieke parameters. In dit voorbeeld gebruiken we m=16 en ef_construction=64.

CREATE EXTENSION IF NOT EXISTS vector;

DROP TABLE IF EXISTS docs;
CREATE TABLE docs (
    id serial PRIMARY KEY,
    embedding vector(3)
);

INSERT INTO docs (embedding) VALUES
    ('[1,2,3]'),
    ('[1.1,2.1,3.1]'),
    ('[10,11,12]'),
    ('[10.5,11.5,12.5]'),
    ('[100,101,102]');

CREATE INDEX ON docs USING HNSW (embedding vector_l2_ops) WITH (
    m = 16,
    ef_construction = 64
);

Query's uitvoeren met HNSW-indexen

Zodra je HNSW-index is opgebouwd, gebruikt pgvector deze automatisch voor query's naar overeenkomsten. De querysyntaxis is hetzelfde als voor andere vectorindexen:

SELECT id, embedding <-> '[1,2,3]' AS distance FROM docs ORDER BY distance LIMIT 3;

HNSW voegt tijdens het uitvoeren van een query echter nog een parameter toe: ef_search.

HNSW-parameter: `ef_search`

De parameter ef_search bepaalt de grootte van de dynamische kandidatenlijst tijdens de daadwerkelijke zoekbewerking. Je stelt deze in via een sessievariabele:

  • Hogere ef_search: grondiger zoeken tijdens het uitvoeren van de query en een hogere terugvindingsgraad, maar een tragere uitvoering.
  • Lagere ef_search: snellere query's, maar mogelijk een lagere terugvindingsgraad.

Doorgaans stel je ef_search in op een waarde die gelijk is aan of hoger is dan ef_construction voor optimale resultaten. Je kunt deze waarde ook afstemmen op basis van de prestaties van query's in de praktijk.

Afwegingen en aandachtspunten bij HNSW

Hoewel HNSW een betere terugvindingsgraad biedt, brengt het ook nadelen met zich mee:

  • Geheugengebruik: HNSW-indexen zijn doorgaans groter en gebruiken meer geheugen dan IVFFlat.
  • Bouwtijd: het maken van de index kan aanzienlijk langer duren, vooral bij hoge waarden voor m en ef_construction.
  • Querylatentie: query's kunnen afhankelijk van ef_search iets trager zijn dan bij IVFFlat.

Test altijd met je eigen gegevensverzameling om de beste balans tussen parameters voor je toepassing te vinden.

Controleer je kennis van HNSW

Welke HNSW-parameter heeft voornamelijk invloed op de terugvindingsgraad en bouwtijd van de index doordat deze bepaalt hoe grondig de grafiek wordt opgebouwd?

Samenvatting: HNSW voor een hogere terugvindingsgraad

Goed gedaan! Je hebt HNSW-indexering in pgvector verkend.

  • HNSW geeft prioriteit aan de terugvindingsgraad en probeert de meeste relevante resultaten te vinden.
  • De index werkt door een grafiekstructuur met meerdere lagen op te bouwen.
  • De belangrijkste parameters zijn m (maximaal aantal verbindingen) en ef_construction (grondigheid van de opbouw).
  • ef_search stemt de terugvindingsgraad en snelheid tijdens het uitvoeren van query's af.
  • HNSW-indexen kunnen groter zijn en trager worden opgebouwd en doorzocht dan IVFFlat, maar bieden een hogere terugvindingsgraad.

Vervolgens leren we hoe je query's afstemt voor optimale prestaties.

Gratis beginnen

Leer Vectordatabases: Pinecone, Weaviate en pgvector met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
12
Lessen
48

Veelgestelde vragen

Is de les “HNSW-indexering voor recall” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Vectordatabases: Pinecone, Weaviate en pgvector, waaronder “HNSW-indexering voor recall”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Vectordatabases: Pinecone, Weaviate en pgvector bevat in totaal 4 lessen.

Wat leer ik in “HNSW-indexering voor recall”?

Verken HNSW-indexering voor pgvector om hogere recallpercentages bij zoekopdrachten op overeenkomst te bereiken en snelheid en nauwkeurigheid in balans te brengen. Je oefent met Vectordatabases: Pinecone, Weaviate en pgvector door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Vectordatabases: Pinecone, Weaviate en pgvector te beginnen?

Ervaring vooraf is niet nodig. Vectordatabases: Pinecone, Weaviate en pgvector op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “HNSW-indexering voor recall”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Vectordatabases: Pinecone, Weaviate en pgvector?

Ja. Elke les over Vectordatabases: Pinecone, Weaviate en pgvector bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. IVFFlat-indexering voor snelheid
  2. HNSW-indexering voor recall
  3. Queryprestaties optimaliseren
  4. Optimalisatie van gefilterde zoekopdrachten
← Terug naar Vectordatabases: Pinecone, Weaviate en pgvector