Als je eenmaal embeddings hebt, wil je daar snel in kunnen zoeken. Bij een paar honderd vectoren reken je dat zelf nog uit, maar bij miljoenen wordt dat onwerkbaar traag. Vector Search lost dat op. Het is de zoekmotor van Vertex AI die in milliseconden de meest gelijkende vectoren vindt in een enorme collectie.
De truc zit in een slimme index. In plaats van elke vector met je zoekvector te vergelijken, gebruikt Vector Search een benaderende methode (approximate nearest neighbor) die bijna altijd de juiste buren vindt, maar veel sneller. Voor de meeste toepassingen is dat precies de balans die je wilt tussen snelheid en nauwkeurigheid.
Wat je nodig hebt
Voordat je begint heb je embeddings nodig van je documenten of items. Die maak je met een embeddingmodel in Vertex AI. Elke vector koppel je aan een herkenbaar id, zodat je na het zoeken weet welk document erbij hoort.
Verder heb je een Google Cloud-project met de Vertex AI API geactiveerd en opslag voor je vectoren, meestal in Cloud Storage. Vanuit die opslag bouwt Vector Search de index op.
Benaderend zoeken in het kort
Vector Search zoekt naar de dichtstbijzijnde buren met een benaderende methode. Dat betekent dat hij in zeldzame gevallen niet de allerbeste, maar de op een na beste match teruggeeft. Voor zoeken en aanbevelingen is dat vrijwel altijd prima.
De index bouwen en deployen
Je begint met het verzamelen van je vectoren in het juiste formaat in Cloud Storage. Daaruit bouw je een index. Bij het bouwen kies je instellingen die de balans tussen snelheid, nauwkeurigheid en kosten bepalen.
Een belangrijke keuze maak je al bij het aanmaken: een batch-index of een streaming-index. Een batch-index werk je periodiek bij met een volledige verversing, een streaming-index laat je vrijwel direct nieuwe vectoren opnemen. Wil je later live kunnen bijwerken, zet die optie dan meteen aan, want je kunt het type achteraf niet zomaar omzetten.
Een index op zich kun je nog niet bevragen. Je deployt hem naar een index-endpoint. Dat endpoint draait op hardware en is de plek waar je zoekvragen naartoe stuurt. Pas na het deployen kun je dichtstbijzijnde buren opvragen. Reken erop dat een deploy enige tijd kost voordat het endpoint klaar is om te bevragen.
Zo zet je Vector Search op
- Genereer embeddings voor al je items en koppel elk aan een herkenbaar
id. - Zet de vectoren in het juiste formaat in Cloud Storage.
- Maak een index aan op basis van die data en kies bewust tussen batch en streaming.
- Maak een index-endpoint aan en deploy de index daarnaartoe.
- Stuur een zoekvector naar het endpoint en ontvang de dichtstbijzijnde
id's.
Zoeken in de praktijk
Een zoekvraag verloopt in twee stappen. Eerst zet je de vraag van de gebruiker om in een vector met hetzelfde embeddingmodel dat je voor de documenten gebruikte. Daarna stuur je die vector naar het endpoint, dat de dichtstbijzijnde id's teruggeeft met hun afstand.
Met die id's haal je vervolgens de bijbehorende documenten op uit je eigen database. Vector Search bewaart namelijk de vectoren en id's, niet de volledige inhoud. Die scheiding houdt de zoekdienst snel en je data onder je eigen controle.
Gebruik altijd hetzelfde embeddingmodel
Gebruik voor je zoekvragen exact hetzelfde embeddingmodel als waarmee je de index hebt gebouwd. Een ander model geeft vectoren die niet vergelijkbaar zijn, waardoor je zoekresultaten waardeloos worden.
De index actueel houden
Je collectie verandert. Er komen documenten bij, andere verdwijnen of wijzigen. Vector Search ondersteunt het bijwerken van de index, zodat je niet telkens alles opnieuw hoeft te bouwen. Je voegt nieuwe vectoren toe en verwijdert oude.
Plan dit slim. Voor sommige toepassingen volstaat een dagelijkse verversing, voor andere wil je vrijwel direct nieuwe items kunnen vinden. De juiste aanpak hangt af van hoe vaak je data verandert en hoe vers de resultaten moeten zijn. Drie veelgebruikte strategieën:
| Strategie | Wanneer kies je dit |
|---|---|
| Periodiek herbouwen | Je data verandert zelden en eenvoud is belangrijker dan versheid. |
| Streaming bijwerken | Er komen regelmatig items bij of wijzigen en je wilt die snel vindbaar maken. |
| Hybride | Je werkt streaming bij en herbouwt af en toe volledig om de index optimaal te houden. |
Kosten in de gaten houden
Een gedeployde index draait op hardware en kost geld zolang het endpoint actief is, ook zonder zoekvragen. De rekening loopt namelijk per node-uur, ongeacht het aantal zoekvragen. Daarnaast betaal je voor het bouwen van de index en voor opslag. Kies de hardware op je verwachte volume en zet test-endpoints uit zodra je klaar bent, want een vergeten endpoint blijft doortikken.
Voor grote collecties loont het om te kijken naar de instellingen die de index-grootte beinvloeden. Een compactere index kost minder maar kan iets minder nauwkeurig zijn. Test wat voor jouw toepassing de juiste balans is.
Bespaar op stille endpoints
Een index-endpoint dat je niet meer gebruikt blijft per uur kosten maken. Maak er een gewoonte van om test- en demo-endpoints op te ruimen, en houd in productie het aantal replica's in lijn met je werkelijke verkeer.
Bewaart Vector Search mijn documenten?
Nee, het bewaart de vectoren en hun id's. De volledige inhoud houd je in je eigen database, die je met de gevonden id's raadpleegt.
Waarom krijg ik soms net niet de beste match?
Vector Search gebruikt een benaderende methode voor snelheid. In zeldzame gevallen mist hij de allerbeste buur, wat voor zoeken en aanbevelingen vrijwel nooit een probleem is.
Kan ik de index live bijwerken?
Ja, met een streaming-index voeg je vectoren toe en verwijder je ze zonder de hele index opnieuw te bouwen. Zet die optie wel aan bij het aanmaken van de index.
Wat is het verschil tussen een batch-index en een streaming-index?
Een batch-index werk je periodiek bij met een volledige verversing. Een streaming-index neemt nieuwe vectoren vrijwel direct op, handig als je data continu verandert.
Hoeveel vectoren kan een index aan?
Vector Search is gebouwd voor miljoenen tot miljarden vectoren, mits je de juiste hardware en instellingen kiest.
Waarom zijn mijn zoekresultaten ineens onbruikbaar?
Meestal komt dat doordat je een ander embeddingmodel voor de zoekvraag gebruikt dan voor de index. Zorg dat beide exact hetzelfde model en dezelfde dimensie hebben.
Vector Search maakt semantisch zoeken op grote schaal haalbaar. Met een goed gebouwde index en het juiste embeddingmodel vind je in milliseconden de meest relevante items uit een enorme collectie.