pgvector vs beheerde vectordatabase voor semantisch zoeken
Vergelijking van pgvector en een beheerde vectordatabase voor semantisch zoeken: opzet, schaalbaarheid, filtering en hoe het past in een typische appstack.

Welk probleem lost semantisch zoeken op in een zakelijke app
Semantisch zoeken helpt mensen het juiste antwoord te vinden, zelfs als ze niet de “juiste” zoekwoorden gebruiken. In plaats van exacte woordovereenkomsten zoekt het naar betekenis. Iemand die typt “reset mijn login” zou nog steeds een artikel moeten zien met de titel “Verander je wachtwoord en meld je opnieuw aan”, omdat de intentie hetzelfde is.
Trefwoord-zoeken faalt vaak in zakelijke apps omdat echte gebruikers inconsistent zijn. Ze gebruiken afkortingen, maken typefouten, mixen productnamen en beschrijven symptomen in plaats van officiële termen. In FAQ's, supporttickets, beleidsdocumenten en onboardinggidsen komt hetzelfde probleem in veel verschillende formuleringen voor. Een trefwoord-engine geeft vaak niets bruikbaars terug, of een lange lijst die mensen dwingt te klikken en te zoeken.
Embeddings zijn de gebruikelijke bouwsteen. Je app zet elk document (een artikel, een ticket, een productnota) om in een vector, een lange lijst met getallen die betekenis vertegenwoordigt. Wanneer een gebruiker een vraag stelt, embed je die vraag ook en zoek je naar de dichtstbijzijnde vectors. Een “vectordatabase” is simpelweg waar je die vectors opslaat en hoe je ze snel doorzoekt.
In een typisch zakelijk stack raakt semantisch zoeken vier gebieden: de content-opslag (knowledge base, docs, ticketsysteem), de embedding-pijplijn (imports plus updates bij contentwijzigingen), de query-ervaring (zoekveld, voorgestelde antwoorden, agent-assist) en de guardrails (permissies plus metadata zoals team, klant, plan en regio).
Voor de meeste teams is “goed genoeg” beter dan perfect. Het praktische doel is relevantie bij de eerste poging, antwoorden binnen een seconde, en kosten die voorspelbaar blijven naarmate de content groeit. Dat doel is belangrijker dan eindeloos discussiëren over tooling.
Twee veelvoorkomende opties: pgvector en beheerde vectordatabases
De meeste teams kiezen tussen twee patronen voor semantisch zoeken: alles in PostgreSQL houden met pgvector, of een aparte beheerde vectordatabase naast je hoofd-database zetten. De juiste keuze hangt minder af van “wat is beter” en meer van waar je de complexiteit wilt hebben.
pgvector is een PostgreSQL-extensie die een vectortype en indexen toevoegt, zodat je embeddings in een normale tabel kunt opslaan en similarity search met SQL kunt uitvoeren. In de praktijk bevat je documenttabel tekst, metadata (customer_id, status, zichtbaarheid) en een embedding-kolom. Search wordt dan: "embed de query, en retourneer rijen waarvan de embeddings het dichtst liggen."
Een beheerde vectordatabase is een gehoste dienst die vooral voor embeddings is gebouwd. Ze biedt meestal API's voor het invoegen van vectors en het queryen op similariteit, plus operationele features die je anders zelf zou moeten bouwen.
Beide opties doen hetzelfde kernwerk: embeddings opslaan met een ID en metadata, dichtstbijzijnde buren vinden voor een query en topmatches teruggeven zodat je app relevante items kan tonen.
Het verschil zit in het systeem van registratie. Zelfs als je een beheerde vectordatabase gebruikt, hou je bijna altijd PostgreSQL voor bedrijfsdata: accounts, permissies, billing, workflowstatus en auditlogs. De vector store wordt een retrieval-laag, niet waar je de hele app runt.
Een veelvoorkomende architectuur ziet er zo uit: houd het gezaghebbende record in Postgres, sla embeddings op ofwel in Postgres (pgvector) of in de vectorservice, voer een similarity search uit om matchende ID's te krijgen, en haal daarna volledige rijen uit Postgres.
Als je apps bouwt op een platform zoals AppMaster, is PostgreSQL al een natuurlijke plek voor gestructureerde data en permissies. De vraag wordt of embedding-zoekopdrachten daar ook moeten leven, of in een gespecialiseerde dienst moeten zitten terwijl Postgres de source of truth blijft.
Opzet-inspanning: wat je echt moet doen
Teams kiezen vaak op basis van features en worden dan verrast door het dagelijkse werk. De echte beslissing is waar je de complexiteit wilt hebben: binnen je bestaande Postgres-setup, of in een aparte dienst.
Met pgvector voeg je vector search toe aan de database die je al runt. De opzet is meestal eenvoudig, maar het blijft databasewerk, geen alleen maar applicatiecode.
Een typische pgvector-opzet bevat het inschakelen van de extensie, het toevoegen van een embedding-kolom, het aanmaken van een index die bij je query-patroon past (en later tunen), beslissen hoe embeddings updaten bij contentwijzigingen, en similarity-queries schrijven die ook je normale filters toepassen.
Met een beheerde vectordatabase maak je een nieuw systeem naast je hoofd-database. Dat betekent vaak minder SQL, maar meer integratieplakwerk.
Een typische beheerde setup bevat het aanmaken van een index (dimensies en afstandsmaat), API-sleutels in je secrets steken, een ingest-job bouwen om embeddings en metadata te pushen, zorgen voor een stabiele ID-mapping tussen apprecords en vectorrecords, en netwerktoegang beperken zodat alleen je backend kan queryen.
CI/CD en migraties verschillen ook. pgvector past natuurlijk in je bestaande migraties en reviewproces. Beheerde diensten verplaatsen veranderingen naar code plus admin-instellingen, dus je wilt een helder proces voor configuratiewijzigingen en voor reindexing.
Eigenaarschap volgt meestal de keuze. pgvector leunt op appdev plus wie Postgres beheert (soms een DBA). Een beheerde dienst wordt vaak door een platformteam gedragen, met appdevs die ingestion en querylogica afhandelen. Daarom gaat deze beslissing net zozeer over teamstructuur als over technologie.
Filtering en permissies: het doorslaggevende detail
Semantisch zoeken helpt alleen als het respecteert wat een gebruiker mag zien. In een echte zakelijke app heeft elk record metadata naast de embedding: org_id, user_id, rol, status (open, closed) en zichtbaarheid (public, internal, private). Als je zoeklaag daar niet schoon op kan filteren, krijg je verwarrende resultaten of, erger, datalekken.
Het grootste praktische verschil is filteren vóór versus ná de vectorzoektocht. Filteren ná lijkt simpel (zoek alles, en gooi dan verboden rijen weg), maar faalt op twee manieren. Ten eerste kunnen de beste matches verwijderd worden, waardoor je slechtere resultaten overhoudt. Ten tweede verhoogt het het beveiligingsrisico als enig deel van de pijplijn ongefilterde resultaten logt, cachet of blootstelt.
Met pgvector leven vectors in PostgreSQL naast metadata, zodat je permissies in dezelfde SQL-query kunt toepassen en Postgres ze kan afdwingen.
PostgreSQL: permissies en joins zijn native
Als je app al Postgres gebruikt, wint pgvector vaak op eenvoud: zoeken is “gewoon nog een query”. Je kunt joinen over tickets, klanten en memberships, en Row Level Security (RLS) gebruiken zodat de database zelf ongeautoriseerde rijen blokkeert.
Een veelvoorkomend patroon is de kandidaatset vernauwen met org- en statusfilters, en daarna vector-similarity uitvoeren op wat overblijft, eventueel gecombineerd met trefwoordmatching voor exacte identifiers.
Beheerde vectordb: filters variëren, permissies meestal jouw verantwoordelijkheid
De meeste beheerde vectordatabases ondersteunen metadatafilters, maar de filtertaal kan beperkt zijn en joins bestaan niet. Je denormaliseert meestal metadata in elk vectorrecord en implementeert permissiechecks in je applicatie.
Voor hybride zoekoplossingen in zakelijke apps wil je doorgaans dat alles samenwerkt: harde filters (org, rol, status, zichtbaarheid), trefwoordmatching (exacte termen zoals een factuurnummer), vector-similarity (betekenis) en rankingregels (boost recente of open items).
Voorbeeld: een supportportal gebouwd in AppMaster kan tickets en permissies in PostgreSQL houden, waardoor het eenvoudig is om “agent ziet alleen zijn org” af te dwingen en toch semantische matches op ticket-samenvattingen en reacties te krijgen.
Zoekkwaliteit en prestatie-basics
Zoekkwaliteit is een mix van relevantie (zijn de resultaten werkelijk nuttig?) en snelheid (voelt het instant aan?). Zowel met pgvector als met een beheerde vectordatabase ruil je meestal wat relevantie in voor lagere latency door approximate search te gebruiken. Die afweging is vaak prima voor zakelijke apps, mits je het meet met echte queries.
Op hoofdlijnen stel je drie dingen bij: het embedding-model (wat “betekenis” definieert), de index-instellingen (hoe grondig de engine zoekt) en de rankinglaag (hoe resultaten geordend worden zodra je filters, recency of populariteit toevoegt).
In PostgreSQL met pgvector kies je doorgaans een index zoals IVFFlat of HNSW. IVFFlat is sneller en lichter om te bouwen, maar je moet tunen hoeveel “lists” het gebruikt en je wilt meestal genoeg data voordat het goed presteert. HNSW geeft vaak betere recall bij lage latency, maar kan meer geheugen gebruiken en duurt langer om te bouwen. Beheerde systemen bieden soortgelijke keuzes, alleen met andere namen en defaults.
Een paar tactieken zijn belangrijker dan men verwacht: cache populaire queries, batch werk waar mogelijk (bijv. prefetch de volgende pagina), en overweeg een tweefasenstroom waarbij je eerst een snelle vectorzoekopdracht doet en daarna de top 20–100 her-rankt met businesssignalen zoals recency of klantniveau. Let ook op netwerk-hops: als search in een aparte dienst leeft, is elke query een extra roundtrip.
Om kwaliteit te meten, begin klein en concreet. Verzamel 20–50 echte gebruikersvragen, definieer wat een “goed” antwoord is, en volg top-3 en top-10 hitrate, median en p95 latency, percentage queries zonder goed resultaat, en hoeveel kwaliteit daalt zodra permissies en filters van kracht zijn.
Hier houdt de keuze op theoretisch te zijn. De beste optie is degene die je relevantiedoel haalt bij een latency die gebruikers accepteren, met tuning die je daadwerkelijk kunt onderhouden.
Schaalzorgen en lopende operatie
Veel teams beginnen met pgvector omdat alles dan op één plek blijft: appdata en embeddings. Voor veel zakelijke apps is één PostgreSQL-node voldoende, vooral als je tienduizenden tot enkele honderdduizenden vectors hebt en zoeken niet het belangrijkste verkeersdrijvende onderdeel is.
Je loopt meestal tegen limieten aan wanneer semantisch zoeken een kernactie wordt (op de meeste pagina’s, in elk ticket, in chat), of wanneer je miljoenen vectors opslaat en strakke reactietijden tijdens piekuren nodig hebt.
Veelvoorkomende signalen dat een enkele Postgres-setup onder druk staat zijn: p95 search-latency stijgt tijdens normale schrijfactiviteit, je moet kiezen tussen snelle indexen en acceptabele writesnelheid, onderhoudstaken worden “plan dit 's nachts”, en je hebt ander schaalwerk voor search dan voor de rest van de database.
Met pgvector betekent schalen vaak extra read-replicas voor queryload, partitioneren van tabellen, index-tuning en plannen rond index-builds en opslaggroei. Het is haalbaar, maar het wordt doorlopend werk. Je staat ook voor ontwerpkeuzes zoals embeddings in dezelfde tabel houden als businessdata versus ze scheiden om bloat en lock-contentie te verminderen.
Beheerde vectordatabases verschuiven veel hiervan naar de vendor. Ze bieden vaak onafhankelijke schaalbaarheid van compute en storage, ingebouwde sharding en eenvoudigere high-availability. De afweging is het beheren van twee systemen (Postgres plus de vectorstore) en het synchroniseren van metadata en permissies.
Kosten verrassen teams vaker dan prestaties. De grote kostenfactoren zijn opslag (vectors plus indexen groeien snel), piekqueryvolume (vaak bepalend voor de rekening), updatefrequentie (re-embedding en upserts) en databeweging (extra calls als je app veel filtering moet doen).
Als je tussen pgvector en een beheerde dienst kiest, kies dan welke pijn je prefereert: diepere Postgres-tuning en capacity planning, of meer betalen voor eenvoudigere schaalbaarheid terwijl je een extra afhankelijkheid beheert.
Beveiliging, compliance en betrouwbaarheid: vragen om te stellen
Beveiligingsdetails beslissen vaak sneller dan snelheidsbenchmarks. Vraag vroeg waar data zal leven, wie het kan zien en wat er gebeurt tijdens een storing.
Begin met dataresidency en toegang. Embeddings kunnen nog steeds betekenis lekken, en veel teams slaan ook ruwe snippets op voor highlighting. Wees duidelijk over welk systeem ruwe tekst (tickets, notities, documenten) bewaart versus alleen embeddings. Bepaal ook wie binnen je organisatie direct de store kan queryen, en of je strikte scheiding tussen productie en analytics-toegang nodig hebt.
Controles om te bevestigen voordat je bouwt
Stel deze vragen voor beide opties:
- Hoe is data versleuteld in rust en tijdens transport, en kun je je eigen keys beheren?
- Wat is het backupplan, hoe vaak worden restores getest en welke recovery time-target heb je nodig?
- Krijg je auditlogs voor reads en writes, en kun je alerten op ongebruikelijke queryvolumes?
- Hoe handhaaf je multi-tenant isolatie: aparte databases, aparte schemas of rijniveau-regels?
- Wat is het retentiebeleid voor verwijderde content, inclusief embeddings en caches?
Multi-tenant scheiding is degene die mensen vaak struikelt. Als één klant nooit invloed mag hebben op een andere, heb je sterke tenant-scoping nodig in elke query. Met PostgreSQL kan dit worden afgedwongen met Row Level Security en zorgvuldige querypatronen. Met een beheerde vectordatabase vertrouw je vaak op namespaces of collections plus applicatielogica.
Betrouwbaarheid en faalwijzen
Plan voor search-downtime. Als de vectorstore down is, wat zien gebruikers dan? Een veilige fallback is trefwoordsearch of alleen recente items tonen in plaats van de pagina te laten breken.
Voorbeeld: in een supportportal gebouwd met AppMaster kun je tickets in PostgreSQL bewaren en semantisch zoeken als optionele feature behandelen. Als embeddings niet beschikbaar zijn, kan de portal nog steeds ticketlijsten en exacte trefwoordsearch tonen terwijl je de vectorservice herstelt.
Stapsgewijs: hoe kies je met een laag-risico pilot
De veiligste manier om te beslissen is een kleine pilot draaien die op je echte app lijkt, niet een notebook-demo.
Begin met opschrijven waar je op zoekt en wat gefilterd móét worden. “Zoek onze docs” is vaag. “Zoek helpartikelen, ticketreacties en PDF-manuals, maar toon alleen items die de gebruiker mag zien” is een echte eis. Permissies, tenant ID, taal, productgebied en “alleen gepubliceerde content” filters beslissen vaak de winnaar.
Kies vervolgens een embedding-model en een refresh-plan. Bepaal wat je embedt (volledig document, chunks of beide) en hoe vaak het bijwerkt (bij elke edit, 's nachts, of bij publiceren). Als content vaak verandert, meet dan hoe pijnlijk re-embedding is, niet alleen hoe snel queries zijn.
Bouw daarna een dunne search-API in je backend. Houd het saai: één endpoint dat een query plus filtervelden aanneemt, topresultaten teruggeeft en logt wat er gebeurde. Als je bouwt met AppMaster, kun je de ingest- en updateflow als backendservice en Business Process implementeren die je embedding-provider aanroept, vectors en metadata schrijft en toegangsregels afdwingt.
Draai een tweeweekse pilot met echte gebruikers en echte taken. Gebruik een handvol veelvoorkomende vragen, volg “gevonden antwoord”-percentage en tijd tot eerste nuttige resultaat, review slechte resultaten wekelijks, kijk naar re-embedding-volume en queryload, en test foutgevallen zoals ontbrekende metadata of verouderde vectors.
Aan het eind beslis je op basis van bewijs. Houd pgvector als het kwaliteit en filtering levert met acceptabel operationeel werk. Schakel over naar een beheerde dienst als schaal en betrouwbaarheid doorslaggevend zijn. Of voer een hybride setup uit (PostgreSQL voor metadata en permissies, vectordatabase voor retrieval) als dat bij je stack past.
Veelvoorkomende fouten waar teams intrappen
De meeste fouten verschijnen nadat de eerste demo werkt. Een snelle proof of concept kan er geweldig uitzien en dan stuklopen als je echte gebruikers, echte data en echte regels toevoegt.
De problemen die meestal tot herwerk leiden zijn consistent:
- Aanname dat vectors toegang regelen. Similarity search weet niet wie wat mag zien. Als je app rollen, teams, tenants of private notities heeft, heb je nog steeds strikte permissiefilters en tests nodig zodat search nooit beperkte content lekt.
- Vertrouwen op “voelt goed” demo’s. Een paar handgekozen queries zijn geen evaluatie. Zonder een klein gelabeld setje vragen en verwachte resultaten zijn regressies moeilijk te detecteren als je chunking, embeddings of indexen verandert.
- Het embedden van hele documenten als één vector. Grote pagina’s, tickets en PDFs hebben meestal chunking nodig. Zonder chunks worden resultaten vaag. Zonder versiebeheer kun je niet zeggen welke embedding bij welke revisie hoort.
- Updates en deletes negeren. Echte apps bewerken en verwijderen content. Als je niet her-embedt bij update en niet opschoont bij delete, serveer je verouderde matches die naar ontbrekende of verouderde tekst wijzen.
- Te vroeg finetunen op performance in plaats van UX. Teams besteden dagen aan indexinstellingen terwijl ze basics overslaan zoals metadatafilters, goede snippets en een trefwoord-fallback voor zeer specifieke queries.
Een eenvoudige “day-2” test vangt deze vroeg: voeg een nieuwe permissieregel toe, update 20 items, verwijder 5, en stel dan dezelfde 10 evaluatievragen opnieuw. Als je bouwt op een platform zoals AppMaster, plan deze checks samen met je businesslogica en databasemodel, niet als nagedachte.
Voorbeeldscenario: semantisch zoeken in een supportportal
Een middelgrote SaaS-bedrijf runt een supportportal met twee hoofdcontenttypes: klanttickets en helpcentrum-artikelen. Ze willen een zoekveld dat betekenis begrijpt, zodat typen als “kan niet inloggen na telefoonwisseling” het juiste artikel en vergelijkbare eerdere tickets naar boven haalt.
De niet-onderhandelbare eisen zijn praktisch: elke klant mag alleen hun eigen tickets zien, agents moeten filteren op status (open, pending, solved), en resultaten moeten instant aanvoelen omdat suggesties verschijnen terwijl de gebruiker typt.
Optie A: pgvector in dezelfde PostgreSQL
Als de portal al tickets en artikelen in PostgreSQL opslaat (gebruikelijk als je op een stack bouwt die Postgres bevat, zoals AppMaster), kan het toevoegen van pgvector een nette eerste stap zijn. Je houdt embeddings, metadata en permissies op één plek, dus “alleen tickets voor customer_123” is gewoon een normale WHERE-clausule.
Dit werkt goed wanneer je dataset bescheiden is (tien- tot honderdduizenden items), je team comfortabel is met het tunen van Postgres-indexen en queryplannen, en je minder bewegende delen en eenvoudigere toegangscontrole wilt.
De afweging is dat vector search kan concurreren met transactionele workloads. Naarmate het gebruik groeit, moet je mogelijk extra capaciteit inzetten, voorzichtig indexeren of zelfs een aparte Postgres-instantie gebruiken om ticket-writes en SLAs te beschermen.
Optie B: beheerde vectordb voor embeddings, PostgreSQL voor metadata
Met een beheerde vectordatabase sla je meestal embeddings en een ID daar op en houd je de “waarheid” (ticketstatus, customer_id, permissies) in PostgreSQL. Teams filteren in de praktijk ofwel eerst in Postgres en zoeken dan over de toegestane ID's, of ze zoeken eerst en controleren permissies voordat ze resultaten tonen.
Deze optie wint vaak wanneer groei onzeker is of het team geen tijd wil besteden aan het tunen van performance. Maar de permissiestroom vereist zorg, anders loop je risico op lekkende resultaten tussen klanten.
Een praktische vuistregel is: start met pgvector als je nu strakke filtering en eenvoudige ops nodig hebt, en plan voor een beheerde vectordatabase als je snelle groei, zwaar queryvolume of het risico hebt dat search je kern-database vertraagt.
Snelle checklist en vervolgstappen
Als je vastzit, stop met debatteren en schrijf op wat je app op dag één móet doen. De echte eisen komen meestal boven tijdens een kleine pilot met echte gebruikers en echte data.
Deze vragen beslissen meestal sneller dan benchmarks:
- Welke filters zijn niet-onderhandelbaar (tenant, rol, regio, status, tijdsinterval)?
- Hoe groot wordt de index in 6–12 maanden (aantal items en embeddings)?
- Welke latency voelt instant voor je gebruikers, ook tijdens piek?
- Wie is eigenaar van het budget en on-call verantwoordelijkheid?
- Waar moet de source of truth leven: PostgreSQL-tabellen of een externe index?
Plan ook voor verandering. Embeddings zijn niet “set-and-forget.” Tekst verandert, modellen veranderen en relevantie drift totdat iemand klaagt. Bepaal van tevoren hoe je updates afhandelt, hoe je drift detecteert en wat je monitort (query-latency, foutpercentage, recall op een klein testsetje en “geen resultaten”-zoekopdrachten).
Als je snel vooruit wilt met de volledige zakelijke app rond search, kan AppMaster (appmaster.io) praktisch passen: het geeft je PostgreSQL-datamodel, backendlogica en web of mobiele UI in één no-code workflow, en je kunt semantisch zoeken later iteratief toevoegen zodra de core app en permissies staan.
FAQ
Semantisch zoeken geeft nuttige resultaten, zelfs als de woorden van de gebruiker niet exact overeenkomen met die in het document. Het is vooral handig wanneer mensen typefouten maken, afkortingen gebruiken of symptomen beschrijven in plaats van officiële termen — wat vaak voorkomt in supportportalen, interne tools en kennisbanken.
Gebruik pgvector wanneer je minder bewegende delen wilt, strakke SQL-gebaseerde filtering nodig hebt en je dataset en verkeer nog bescheiden zijn. Het is vaak de snelste weg naar een veilige, permissie-bewuste zoekfunctie omdat vectors en metadata in dezelfde PostgreSQL-queries leven die je al vertrouwt.
Een beheerde vector-database is een goede keuze wanneer je snelle groei verwacht in aantal vectors of queryvolume, of wanneer je wilt dat schaalbaarheid en beschikbaarheid buiten je hoofd-database om worden afgehandeld. Je ruilt eenvoudigere operaties in voor extra integratiewerk en zorgvuldige permissieafhandeling.
Een embedding is het omzetten van tekst naar een numerieke vector die betekenis vastlegt. Een vectordatabase (of pgvector in PostgreSQL) slaat die vectors op en kan snel de dichtstbijzijnde vectors vinden bij de embedded query van een gebruiker, waardoor je ‘vergelijkbaar op intentie’-resultaten krijgt.
Filteren ná de vectorzoektocht verwijdert vaak de beste matches, waardoor gebruikers slechte resultaten of lege pagina’s krijgen. Het vergroot ook het risico op onbedoelde blootstelling via logs, caches of debugging; daarom is het veiliger om tenant- en rolfilters zo vroeg mogelijk toe te passen.
Met pgvector kun je permissies, joins en Row Level Security in dezelfde SQL-query toepassen die de similarity search uitvoert. Dat maakt het eenvoudiger om te garanderen dat “nooit verboden rijen worden getoond,” omdat PostgreSQL het afdwingt waar de data woont.
De meeste beheerde vectordatabases ondersteunen metadatafilters, maar ze bieden doorgaans geen joins en de filtertaal kan beperkt zijn. Meestal denormaliseer je permissie-gerelateerde metadata in elk vectorrecord en handhaaf je de uiteindelijke autorisatiecontroles in je applicatie.
Chunking betekent dat je grote documenten in kleinere delen splitst voordat je ze embedt; dat verbetert meestal de precisie omdat elke vector een gerichter idee vastlegt. Full-document embeddings kunnen werken voor korte items, maar lange tickets, beleidsdocumenten en PDFs worden vaak vaag tenzij je chunking en versiebeheer gebruikt.
Plan updates vanaf dag één: her-embed bij publiceren of bewerken voor content die vaak verandert, en verwijder altijd vectors wanneer het bronrecord wordt verwijderd. Als je dit overslaat, serveer je verouderde matches die naar ontbrekende of verouderde tekst verwijzen.
Een praktische pilot gebruikt echte queries en strikte filters, meet relevantie en latency, en test foutgevallen zoals ontbrekende metadata of verouderde vectors. Kies de optie die consequent goede topresultaten teruggeeft onder je permissieregels, met kosten en operationeel werk dat je team aankan.


