Basisgegevensontwerp voor AI-workloads in Azure
Voor AI-toepassingen moet de Well-Architected Framework-benadering voor gegevensontwerp voldoen aan niet-functionele vereisten, zoals operabiliteit, kosten en beveiliging en voldoen aan de kernprincipes van de pijlers van Azure Well-Architected Framework. Er moet ook rekening worden gehouden met functionele vereisten, zoals gegevensopname, voorbereiding en validatie.
Het AI-model dat u kiest, is van invloed op volgende beslissingen voor gegevensontwerp. In dit artikel worden belangrijke overwegingen voor de architectuur besproken voor basismodellen die moeten worden uitgebreid om de relevantie van resultaten te verbeteren. Deze modellen zijn doorgaans generatief.
Generatieve AI-modellen zijn vooraf samengesteld of vooraf getraind, zodat u ze onmiddellijk kunt gebruiken zonder wijzigingen aan te brengen. Out-of-the-box-modellen voldoen echter vaak niet aan specifieke workloadvereisten. Om dit probleem op te lossen, worden modellen uitgebreid met contextspecifieke gegevens om hun prestaties te verbeteren. U kunt bijvoorbeeld het GPT-model in verschillende gebruiksvoorbeelden gebruiken. Deze toepassingen omvatten het ophalen van informatie uit documenten, het bieden van IT-helpdeskondersteuning en het samenvatten van complexe informatie. Als u basismodellen wilt gebruiken om aan uw specifieke behoeften te voldoen, is het belangrijk om deze overwegingen te begrijpen.
Belangrijk
Gegevensontwerp is een iteratief proces dat is gebaseerd op statistische experimenten. Generatieve AI-toepassingen verzenden query's naar het model dat de prompt- en contextgegevens bevat. Als u het ontwerp van gegevens wilt verfijnen, moeten de prompt- en contextgegevens beide worden geherprofiltreerd. Het iteratieve proces moet vooraf verwerken, insluitingen en segmenteringen selecteren. Met deze stappen kunt u gegevens maken die geschikt zijn voor een index. Zie Ontwerp en ontwikkeling van een rag-oplossing (retrieval-augmented generation) voor meer informatie.
Houd bij het experimenteren en herhalen rekening met de gebruiksvoorbeelden voor verbruik. Pas het gegevensontwerp aan op basis van werkelijke querypatronen. Bepaal wat acceptabel is via verfijning en testen.
In een oplossing kunt u een combinatie van generatieve AI- en discriminerende AI-modellen gebruiken om te voldoen aan de workloadvereisten. Zie Het ontwerp van trainingsgegevens voor meer informatie over trainingsgegevens.
Aanbevelingen
Hier volgt een samenvatting van de aanbevelingen in dit artikel.
Aanbeveling | Beschrijving |
---|---|
Verwacht gebruikersquery's. | Inzicht in de verwachte typen vragen met betrekking tot uw brongegevens en de verwachtingen van nieuwheid. Dit inzicht helpt u bij het ontwerpen van uw gegevenspijplijnen en -indexen om relevante grondgegevens te bieden. |
Externe gegevens naar een zoekindex. | Gebruik een zoekindex in plaats van rechtstreeks vanuit het bronsysteem een query uit te voeren. Evalueer verschillende indextechnologieën op basis van workloadvereisten. Maak een mogelijkheidsmatrix om te beoordelen wat het meest geschikt is voor uw behoeften. Overweeg krachtige zoekindextechnologieën zoals Elasticsearch of AI Search. ▪ Indexing |
Ontwikkel een opnamestrategie. | Ontwikkel een uitgebreide strategie voor indexbeheer die betrekking heeft op gegevensopname en voorverwerking. Verwijder ruis of irrelevante gegevens door inconsistenties en duplicaten aan te pakken en te standaardiseren naar een gemeenschappelijk schema. Converteer bronindelingen en -typen naar gegevenstypen die het uitvoeren van query's en analyses vereenvoudigen. ▪ Gegevensvoorbereiding ▪ Bereik van gegevensvolume |
Ontwerp uw index voor maximale relevantie. | Schakel functies in zoals filteren, sorteren en verwerken van metagegevens voor specifieke velden om de efficiëntie van query's te verbeteren. Labelvelden zijn bijvoorbeeld alleen doorzoekbaar als u erop wilt zoeken. Als u onnodige opslagkosten wilt voorkomen, moet u niet elk veld ophalen zonder een specifieke use-case. ▪ Schemaontwerp ▪ Indexmogelijkheden ▪ Efficiënte query's uitvoeren |
Werk uw index bij om te voorkomen dat verouderde gegevens worden afgeleid. | Wanneer u een index bijwerkt, kunt u overwegen een implementatiestrategie naast elkaar te gebruiken voor onderhoud. Het opnieuw samenstellen van de index zorgt ervoor dat verwijderingen en updates worden verwerkt omdat de index een nieuwe gegevensset wordt. Met deze aanpak kunt u de gegevens grondig testen voordat u de index live maakt. Wanneer u wijzigingen aanbrengt in indexen, coördineert u schemawijzigingen met code-updates. Deze procedure zorgt voor naadloze overgangen. ▪ Indexonderhoud |
Typen gegevens
U kunt generatieve AI-modellen uitbreiden door contextgegevens tijdens deductie te gebruiken of deze verder te optimaliseren door middel van een nauwkeurig afstemmingsproces. Beide benaderingen hebben aanvullende gegevens nodig die het model meer context bieden. Het model gebruikt die context om de gebruikersquery te beantwoorden en vormt het antwoord op basis van de verwachtingen. Normaal gesproken gebruikt u de volgende gegevenstypen:
Brongegevens zijn bestaande gegevens in productie. Deze gegevens kunnen worden gestructureerd, zoals gegevens in databases of semi-gestructureerd, zoals JSON-bestanden. Het kan ook ongestructureerd zijn, zoals documenten, afbeeldingen en audiobestanden.
Grondgegevens zijn afkomstig van brongegevens die informatie bevatten over onderwerpen die niet worden behandeld in de eerste trainingsgegevens van het model. Grondgegevens worden gecombineerd met de gebruikersquery om de prompt te vormen die wordt verzonden naar het grote taalmodel in de context van een specifieke deductieaanroep. Andere gegevens die u in de deductieoproep kunt opnemen, zijn de systeemprompt, voorbeelden van één opname of enkele opnamen en contextuele gegevens zoals eerdere interacties.
Deze gegevens moeten eenvoudig kunnen worden doorzocht en snel kunnen worden opgehaald. Vanwege deze vereiste moet u de gegevens opslaan in een index die is geoptimaliseerd voor zoekopdrachten. Deze index wordt in realtime geopend terwijl de gebruiker wacht op het antwoord. Zonder deze gegevens kan het model onjuiste resultaten opleveren of niet van toepassing zijn op wat de gebruiker specifiek zoekt.
Het verfijnen van gegevens is informatie die wordt gebruikt om het model te beïnvloeden, zodat het kan worden aangepast aan specifieke taken, domeinen of antwoordstijlen voor toekomstige deductieaanvragen. Als bijvoorbeeld verwacht wordt dat het model antwoorden in een specifieke grammaticale stijl levert, zou die stijlgids fungeren als het verfijnen van gegevens.
Gebruikersgegevens bevatten informatie van gebruikers tijdens interacties met de toepassing. Wanneer u interactie hebt met generatieve modellen, treden stateful interacties op. Deze modellen hebben geen inherent geheugen en behandelen elke interactie als atomisch.
Wanneer u stateful interacties beheert, ook wel TURN-gegevens genoemd in chattoepassingen, is het belangrijk om gegevens op te slaan voor de kortste tijd die nodig is. In het ideale geval moeten deze gegevens worden vernietigd nadat de sessie is beëindigd. Er kunnen echter operationele of nalevingsredenen zijn waarvoor u bepaalde gegevens, zoals de oorspronkelijke vraag of het antwoord van het model, buiten de duur van de sessie moet bewaren. Vermijd, indien mogelijk, het opslaan van deze gegevens voorbij de sessie.
Indexeren
De kern van het gegevensontwerp omvat het efficiënt opslaan en beheren van basisgegevens. Deze aanpak zorgt ervoor dat gegevens kunnen worden uitgebreid om het hoogste relevantieniveau te bereiken.
Een eenvoudige AI-strategie kan betrekking hebben op het opvragen van de brongegevens voor elke interactie van de gebruiker. Deze aanpak is echter niet praktisch vanwege de hoge kosten en complexiteit van directe interacties tussen gegevensbronnen. In plaats daarvan moet u brongegevens als een kopie in een index gebruiken die is geoptimaliseerd voor zoeken en ophalen. Het doel van deze aanpak is het verbeteren van het begrip van het model en het vermogen om relevante antwoorden te genereren.
Overweeg een bankwerkbelasting waarin gegevens worden opgeslagen met betrekking tot bankrekeningen en voorkeuren van gebruikers en financiële transacties in een gegevensarchief. In een generatief AI-scenario dat gebruikmaakt van een RAG-patroon, worden grondgegevens gemaakt en geïndexeerd met context, zodat het model relevante antwoorden kan geven. Door bijvoorbeeld relevante gegevens over gebruikerstransacties voor context op te geven tijdens het deductieproces, kan het model vragen beantwoorden met betrekking tot de bestedingspatronen van de gebruiker in het afgelopen kwartaal.
Gespecialiseerde indextechnologie
Overweeg om de grondgegevens te externaliseren naar een zoekindex. Gebruik deze methode in plaats van rechtstreeks vanuit het bronsysteem een query uit te voeren.
Er zijn voordelen van het gebruik van de zoekindex. U kunt de kopie van de gegevens modelleren en transformeren op basis van de verwachte query's. Directe query's naar de primaire bron zijn problematisch omdat er een mogelijkheid is dat brongegevens niet toegankelijk zijn. Een index zorgt ervoor dat de gegevens beschikbaar blijven zolang u deze relevant acht voor de toepassing. U vermijdt ook het stresseren van het brongegevenssysteem. Deze strategie zorgt ervoor dat AI-gerelateerde query's geen invloed hebben op de primaire use-case.
Sommige technologieopties hebben mogelijkheden voor zelfindexering. Indexen kunnen contact opnemen met gegevensbronnen en hun gegevens opnemen. Voor deze optie zijn netwerkoverwegingen essentieel. Als de index verbinding moet maken met databases, zijn er potentiële problemen, zoals netwerklatentie en betrouwbaarheid.
Er zijn initiële kosten voor het importeren van gegevens. Nadat de gegevens zich in uw index bevinden, hoeft u deze niet meer te verplaatsen, tenzij er wijzigingen of updates zijn. Gegevensbeheer in de loop van de tijd is een cruciaal aspect van het indexontwerp. Zie Indexonderhoud voor meer informatie.
Standaardindex of aangepaste index
Bepaalde technologieën bieden ondersteuning voor het automatisch bouwen van een standaardindex voor uw gegevens. Deze index wordt gegenereerd voor gegevensopname met minimale invoer. De index heeft out-of-the-box mogelijkheden. Een standaardindex kan acceptabel zijn voor proof of concepts en sommige productiescenario's.
Voor sommige scenario's moet u mogelijk een aangepast indexschema hebben om de relevantie te verbeteren op basis van specifieke workloadvereisten. Deze vereisten bepalen hoe u het schema ontwerpt, indexmogelijkheden inschakelt en relevante metagegevens opneemt.
Schemaontwerp
U kunt indexen beschouwen als structuren die gegevens ordenen en optimaliseren voor het ophalen. In het bijzonder organiseren ze gegevens in documenten en velden van een tabel. Overweeg het volgende:
Indextopologie. Evalueer of alle gegevens in één index moeten worden gekommakt of over meerdere indexen moeten worden verdeeld. Deze beslissing is aanzienlijk van invloed op queryprestaties, indexonderhoud, eenvoud van query's en niet-imilare veldconfiguratie (of schema) tussen documenten.
Denk bijvoorbeeld aan gebruikersquery's die inhoud in een specifieke taal aanvragen. De eenvoudigste keuze voor het ontwerpen van gegevens is mogelijk het vertalen van alle talen in één taal en opslaan in één index. Of gegevens kunnen in alle talen in één index worden opgeslagen. Deze keuze resulteert in meerdere documenten voor elke taal. De filterfunctie van de index kan worden gebruikt om de resultaten te beperken tot de gewenste taal. Elke index kan ook de vertaalde versies voor een bepaalde taal bevatten zoals verwacht in de query.
In sommige situaties hebt u mogelijk meerdere zoekindexen nodig. Met deze aanpak kunt u elke index onafhankelijk optimaliseren voor maximale relevantie van uw zoekquery's. Bijvoorbeeld: een handboek voor HR-medewerkers en een handleiding voor productonderhoud dienen verschillende doeleinden en doelgroepen. Door ze afzonderlijk te indexeren, kunt u het schema en de zoekquery's voor elk aanpassen, waardoor de gebruikerservaring wordt verbeterd. Deze benadering kan complex zijn om te implementeren en vereist een orchestrator om aanroepen naar elke index mogelijk te maken. Het indelingsonderdeel wordt beschreven in het toepassingsontwerp voor AI-workloads in Azure.
Notitie
De keuze tussen de twee topologieën en de strategie voor gegevenssegmentatie is afhankelijk van workloadvereisten, use cases en verwachtingen van gebruikers.
Het uitvoeren van query's tussen indexen kan lastig zijn en kan van invloed zijn op de relevantie van de zoekopdracht. In het slechtste geval kunnen er handmatige controleresultaten worden uitgevoerd, waarbij wordt bepaald welke voldoen aan de criteria. Dit proces introduceert latentie en voegt complexiteit toe. Een benadering met één index is daarentegen eenvoudiger en eenvoudiger. Relevantie kan worden verbeterd met behulp van indexmogelijkheden zoals filteren.
In sommige gevallen leiden nalevingsoverwegingen tot de noodzaak van afzonderlijke indexen. Als bijvoorbeeld bedrijfsvereisten eisen dat gegevens worden geïsoleerd tussen Europa en Amerika, kunnen meerdere indexen onvermijdelijk zijn.
Documentontwerp. Stem uw gegevensontwerp af met verwachte gebruikersquery's om de relevantie te optimaliseren. Bedenk hoe elk document query's moet leveren. Voor zoekindexen geeft u prioriteit aan relevante documenten en verfijnt u de resultaten tot een beknopte set die dicht is verpakt met relevante informatie.
Veldontwerp. Configureer uw indexvelden ter ondersteuning van zoekprestaties en relevantie. De indexvelden moeten worden toegewezen aan de documentkenmerken die u doorzoekbaar, ophaalbaar, filterbaar en sorteerbaar wilt maken. Ze omvatten insluitingen, id's of andere gegevens die het zoeken kunnen stimuleren.
Indexmogelijkheden
Configureer de zoekindexvelden om de meest relevante set documenten te retourneren. De beslissing is afhankelijk van de mogelijkheden die de zoekindextechnologie en workloadvereisten ondersteunen.
Filter-, zoek- en sorteeropties. Houd rekening met deze opties omdat ze rechtstreeks zijn gerelateerd aan use cases voor uitbreiding. Filterbaar bepaalt bijvoorbeeld waar of onwaar voor een waarde in de query en retourneert relevante documenten. Voor doorzoekbaarheid geeft het kenmerk aan of de zoekquery naar het veld kan verwijzen. U kunt bijvoorbeeld controleren of een tekstveld specifieke tekst bevat of dat het wiskundig gerelateerd is aan een andere vector. U kunt desgewenst een relatief gewicht aan dat veld toewijzen als onderdeel van de zoekquery. U kunt resultatensets ook sorteren, waarmee de resultaten op relevantie worden weergegeven.
Afweging. Het inschakelen van mogelijkheden voor het indexeren van velden verhoogt de ruimtevereisten, wat van invloed is op de kosten. Voeg alleen mogelijkheden toe die u wilt gebruiken.
Metagegevens. Indexen hebben doorgaans metagegevens die zijn gekoppeld aan indexvelden. Metagegevens helpen ons om gegevens te begrijpen en te beheren door relevante informatie over deze gegevens op te geven. Overweeg bij het ontwerpen van indexen of metagegevens kunnen worden opgehaald of alleen worden gebruikt voor relevantiebepaling. De beslissing is van invloed op de rekenkosten omdat het onderliggende indexeringsproces anders is. Overmatige metagegevens kunnen de grootte van de index onnodig vergroten.
Er zijn veel technologische keuzes voor indexering. Veel delen vergelijkbare kenmerken, zoals de kenmerken die eerder worden vermeld. Sommige indexen hebben mogelijk extra functies, zoals het verwerken van tekst en taalanalyse tijdens het indexeren. Als u tekst geschikter wilt maken voor indexeren en zoeken, kunt u tekst opsplitsen in tokens, converteren naar kleine letters of stopwoorden verwijderen.
Efficiënte query's uitvoeren
Grondgegevens worden gebruikt in generatieve AI-toepassingen om de nauwkeurigheid en relevantie van de reacties op gebruikersquery's te verhogen. Overweeg vooraf gebruikersquery's. Begrijpen welke vragen kunnen worden gesteld, wie hen vraagt en hoe vaak ze worden gesteld. Deze informatie helpt de context van het toepassingsformulier te begrijpen en te begrijpen welk resultaat relevant kan zijn.
Typische typen zoekopdrachten zijn:
Vectorquery's zoeken naar vergelijkbare items op basis van hun vectorweergaven of gegevenspunten in een hoogdimensionale ruimte.
Zoekopdrachten op trefwoorden binnen de volledige inhoud van tekstdocumenten. Het indexeert en voert query's uit op grote hoeveelheden tekstgegevens en wordt vaak gebruikt in zoekmachines, databases en documentbeheersystemen.
Semantische classificatie verbetert de relevantie van zoekresultaten door ze opnieuw te rangschikken op basis van hun semantische relevantie voor de query, waardoor de meest semantisch relevante overeenkomsten boven aan de lijst worden gepromoot.
Hybride zoeken combineert verschillende zoektypen, zoals vectorzoekopdrachten, zoeken in volledige tekst en semantische rangschikking, om de relevantie van de zoekresultaten verder te verbeteren.
Als u de modelprestaties verder wilt verbeteren, combineert u zoektypen.
De manier waarop gegevens worden opgeslagen en verwerkt, zijn queryefficiëntie. Telkens wanneer gegevens worden toegevoegd aan een index, zijn rekencycli nodig voor indexering. Als het indexeren en reageren op query's wordt uitgevoerd op dezelfde rekenresources, kan er sprake zijn van conflicten. In het ideale geval moet een index zich richten op het primaire doel van het efficiënt beantwoorden van query's en het vinden van relevante documenten in plaats van overmatige indexering.
Kosten en prestaties zijn belangrijke stuurprogramma's voor het indexontwerp. Technieken zoals het maken van schaduwkopieën kunnen het uitvoeren van query's versnellen. Gegevensduplicatie vindt echter plaats via indexen, waardoor kosten in rekening worden gebracht.
Afweging. Het indexontwerp moet rekening houden met kosten en prestaties. U kunt een balans vinden door opslag te optimaliseren en efficiënte query's te beantwoorden en relevante documenten op te halen ten opzichte van overmatige indexering.
Voor technologische keuzes voor het gegevensarchief bieden zoekindexen, zoals Elasticsearch of AI Search, krachtige zoekmogelijkheden, waaronder gevectoriseerde en op relevantie gebaseerde zoekopdrachten. U kunt ook databaseopties overwegen die ondersteuning bieden voor het type gegevens dat u hebt en de typen query's die u nodig hebt, omdat ze zijn geoptimaliseerd voor het uitvoeren van query's. Uiteindelijk gaat het over de mogelijkheden die worden geboden door de opties en de investering in het bouwen van nieuwe vaardighedensets in het team.
Gegevensvoorbereiding
Grondgegevens zijn gebaseerd op bestaande gegevens, die geschikt moeten worden gemaakt voor semantische query's. Sommige query's om relevante documenten in de index te vinden, kunnen letterlijk overeenkomen. Voor andere query's is fuzzy matching vereist.
Voordat contextuele gegevens gereed zijn om deductieaanvragen voor het model te ondersteunen, is er een voorverwerkingsstap vooraf die is gericht op het opschonen, transformeren en structureren van gegevens. Het doel is om ruis en vooroordelen te verminderen, efficiënt te zoeken en de relevantie van de indexzoekopdrachten te maximaliseren. De keuzehulpprogramma's of logica voor voorverwerking zijn afhankelijk van het workloadteam, maar er zijn enkele algemene overwegingen.
Bereik van gegevensvolume
Het rescoping van gegevensvolumes omvat het aanpassen van het bereik van gegevens door deze uit te breiden of te beperken om een strakke index te maken, zodat de relevantie wordt verhoogd. Queryefficiëntie is een andere belangrijke zorg. Het opslaan van onnodige gegevens heeft een negatieve invloed op beide doelen. Denk bijvoorbeeld aan locatiegegevens voor een gebruiker. Als alleen het stadsgedeelte relevant is, optimaliseert u deze door alleen de stadstekst op te slaan in plaats van de volledige tekst die het adres vertegenwoordigt.
Hier volgen enkele algemene overwegingen.
Gegevens worden geëlimineerd. Behoud alleen wat essentieel is voor de functionaliteit van het product, waardoor onnodige details worden genegeerd. Hier volgen enkele veelvoorkomende voorbeelden.
Kwalitatieve uitschakeling. Eén manier om over te stappen van een breed bereik naar een smallere meer relatieve methode is om gegevens van lage kwaliteit te elimineren door selectief alleen relevante brongegevens te indexeren. De uitdaging ligt in het programmatisch identificeren van inhoud die niet relevant is voor AI-scenario's. Hoewel de inhoud nuttig kan zijn voor andere intenties, zoals controle of volledigheid, met inbegrip van de inhoud in de AI-workload, kan de relevantie worden verminderd. Een manier om dergelijke inhoud te markeren, is door metagegevens te gebruiken die kunnen worden gebruikt bij de indexpopulatie als de inhoud moet worden toegevoegd aan de index.
Gevoelige gegevens. Het kopiëren van gegevens van brongegevens naar een index kan ook leiden tot gevoelige informatie. Respecteer de labels voor gegevensclassificatie die zijn toegepast op de bron en behoud hetzelfde vertrouwelijkheidsniveau voor deze gegevensset. Wanneer u omgaat met gegevens met persoonlijke gegevens, slaat u persoonsgegevens niet op, tenzij u deze nodig hebt om op de query te reageren. Pas bijvoorbeeld gegevensclassificatie toe bij het indexeren van e-mailberichten. Als een e-mailbericht als gevoelig wordt gemarkeerd, vermijdt u het opslaan in een algemeen vertrouwelijkheidsgegevensarchief.
Tekst normaliseren en standaardiseren. Het adresseren van typfouten en standaardiseren van tekst is cruciaal voor indexen op basis van trefwoorden. Een mogelijke use case is vertalingen, met name bij het omgaan met meertalige inhoud.
Dit type voorverwerking is ook nodig voor insluitingen, waarmee u woorden kunt vergelijken op basis van hun context en betekenis. Een uitdaging treedt echter op uit de hoofdlettergevoeligheid van woorden. Context is belangrijk en er kunnen nuances zijn, zoals de semantische verschillen tussen het bijvoeglijke naamwoord "civic" en het juiste zelfstandig naamwoord "(Honda) Civic."
Gegevens toevoegen. Het uitbreiden van de context is vaak afhankelijk van metagegevens, die doorgaans niet aanwezig zijn in brongegevens. Denk bijvoorbeeld aan een tekstfragment. Een mens in de lus of AI maakt relevante vragen die kunnen worden beantwoord met behulp van de context van het fragment. Wanneer u deze vragen naast de grondgegevens opslaat, kunnen gebruikersquery's worden vergeleken met de gegenereerde query's om de relevantie van documenten te evalueren. Colocatie van deze nieuwe gegevens met grondgegevens is een krachtige manier om gesegmenteerde gegevens te verrijken.
Een andere use-case is het toevoegen van entiteiten die zijn gevonden tijdens het analyseren van ongestructureerde gegevens. Deze entiteiten kunnen worden toegevoegd aan de index en worden gebruikt voor het zoeken en filteren van externe systemen of voor het uitvoeren van complexe berekeningen. Als we bijvoorbeeld een bedrijfsnaam identificeren, kunnen we de branche of andere relevante informatie uit een externe database opzoeken en deze toevoegen aan onze index.
Overweeg gegevensherkomst te onderhouden. Het is belangrijk voor AI-workloads om de gegevensbron bij te houden, omdat die informatie verloren kan gaan wanneer een systeem verschillende onderdelen in één index samenvoegt. Deze informatie wordt mogelijk nooit blootgesteld aan gebruikers, maar informatie over gegevensbronnen is van cruciaal belang voor interne teams voor gegevensbeheer. Deze metagegevens zijn niet noodzakelijkerwijs voor het model. Het helpt transparantie en verantwoordelijkheid te behouden.
Afweging. Aan de ene kant verhoogt het toevoegen van nieuwe gegevens de kans op relevantie binnen de gegevensset. Dit voordeel kost echter wel een vergoeding. Met name de rekenbronnen die nodig zijn om dat veld te verwerken en te beheren. De tijd die nodig is om gegevens te verzamelen en op te slaan, kan aanzienlijk zijn. Houd er rekening mee dat overbelasting met onnodige velden resources kan belasten.
Tekstgegevens verwerken. Overweeg technieken zoals synoniemen, stemming en semantische nabijheid om de relevantie te verbeteren. Delegeer deze technieken indien mogelijk aan hulpprogramma's. Sommige technologieën, zoals Elasticsearch of AI-zoekopdrachten, bieden dergelijke functies voor het vooraf verwerken van gegevens tijdens het maken van de index.
Gegevenstype morphing
Indexvelden in een gegevensarchief zijn gegevenstypen die een specifiek doel dienen. Numerieke velden vergemakkelijken efficiënte query's, tekstvelden maken zoekopdrachten op basis van tekst mogelijk en Booleaanse velden verwerken binaire informatie.
Brongegevens bestaan doorgaans in verschillende typen gegevens, zoals tekst, afbeeldingen en tabellen, en het verwerken van die gegevens kan complex zijn. Mogelijk moet u sleutel-waardeparen extraheren, sectiekoppen identificeren voor semantische segmentering, specifieke id's herkennen, enzovoort.
Als uw brongegevens bijvoorbeeld afbeeldingen bevatten, zijn ze niet inherent doorzoekbaar. Ze moeten worden geconverteerd naar vectorweergaven om efficiënte semantische zoekopdrachten en vergelijkingen mogelijk te maken. Als relevantie is gekoppeld aan de gegevens achter deze indelingen, investeert u in extractie van de gegevens. Transformeer brongegevenstypen naar functionele gegevenstypen die u helpen bij het uitvoeren van query's en analyses.
Segmenteren en insluiten
Grondgegevens bevatten vaak een grote hoeveelheid informatie, maar het model kan slechts een bepaalde hoeveelheid tokeniseren. Segmentering is een belangrijke strategie voor het ontwerpen van gegevens omdat het gaat om het verdelen van een document in kleinere stukken die afzonderlijk kunnen worden verwerkt en geïndexeerd. Met deze strategie kunt u efficiënt zoeken en ophalen ondanks tokenbeperkingen. Controleer het maximum aantal tokens dat uw keuze voor een groot taalmodel kan verwerken. Uw segmenten mogen deze limiet niet overschrijden.
Er zijn veel technieken voor het implementeren van segmentering. Zie Chunking-benaderingen voor meer informatie.
Embeddings is ook een andere ontwerpstrategie die vectorzoekmogelijkheden mogelijk maakt. Insluitingen is een wiskundige weergave van een object dat wordt gegenereerd door AI-modellen op basis van grondgegevens. Ze worden opgeslagen in de index en voegen meer context toe waarmee complexe query's resultaten opleveren met een betere relevantie. Zie Insluitingen genereren voor meer informatie.
Indexonderhoud
Onderhoud in de loop van de tijd is een cruciaal aspect van het indexontwerp. Voor statische gegevens, waarbij documenten ongewijzigd blijven, is indexonderhoud eenvoudig. Maar de meeste indexen zijn dynamisch. Na verloop van tijd zijn er mogelijk nieuwe gegevens toegevoegd en heeft het indexschema mogelijk nieuwe velden nodig. Omgekeerd moeten sommige gegevens en velden mogelijk worden verwijderd als ze niet meer relevant zijn. Veelgebruikte technologieopties voor indexeerfuncties hebben functies voor het automatisch afhandelen van updates. Zie Overwegingen voor een zoekindex voor informatie over de aanbevolen indexkenmerken.
Onderhoudscriteria
Functionaliteitsupdates. De index moet mogelijk worden bijgewerkt als er een wijziging in de toepassingsfunctionaliteit is. Deze situatie treedt op wanneer er nieuwe vragen worden gesteld. Voor deze wijzigingen moet u mogelijk nieuwe velden toevoegen aan de index of filteren, zoeken of tekstverwerkingsopties voor bestaande velden wijzigen.
Gegevens verwijderen. Het verwijderen van gegevens is lastig omdat u beschikbare en ontbrekende gegevens moet analyseren om te bepalen wat niet relevant is. Als u verouderde inhoud van een index wilt uitsluiten, kunt u overwegen om metagegevens te gebruiken die verhinderen dat zoekmachines specifieke pagina's of inhoud indexeren. Wanneer u opslagopties kiest, selecteert u ook een technologie die efficiënt verwijderingen ondersteunt. Blob Storage ondersteunt bijvoorbeeld voorlopig verwijderen. Als u AI-zoek- en laaddocumenten uit de opslag gebruikt, kan blobopslag verwijderde documenten detecteren en bijbehorende vermeldingen verwijderen. Deze benadering is niet ideaal, maar het is noodzakelijk wanneer opnieuw indexeren kostbaar is vanwege een grote indexgrootte.
Het concept van het recht om te vergeten verwijst naar het recht van een persoon om zijn persoonsgegevens te laten verwijderen uit onlineplatforms of databases. Zorg ervoor dat u beleid hebt om persoonlijke gegevens te verwijderen als deze voor training zijn gebruikt. U kunt aan deze vereiste voldoen door uw gegevensset opnieuw te indexeren. Als gegevens uit de transactionele database worden verwijderd, weerspiegelen latere indexupdates deze wijzigingen.
Compatibiliteit behouden. Toepassingen vereisen vaak specifieke gegevensstructuren en elke afwijking kan hun functionaliteit verstoren. Als een veld bijvoorbeeld wordt verwijderd en het veld door de toepassing wordt aangevraagd, kan er een foutvoorwaarde optreden. Zoals u zou doen voor een traditionele database, moet u een vooruitgaand compatibiliteitsmentaliteit hanteren voor indexen en een niveau van striktheid handhaven. Wanneer u wijzigingen aanbrengt in de index, zoals het toevoegen of verwijderen van velden, coördineert u schemawijzigingen met code-updates.
Afweging. Het toevoegen, bijwerken en verwijderen van acties voor een index is duur. Houd rekening met de frequentie van updates en de kosten voor prestaties op basis van de grootte en efficiëntie van het gegevensarchief. Als u verouderde documenten in de index bewaart, worden er kosten voor opslag, onderhoud en query's uitgevoerd.
Implementatiestrategie
Implementatiestrategie. Er zijn twee belangrijke strategieën voor het bijwerken van de index.
Naast elkaar implementaties. Bij deze benadering bevindt zich een nieuwe index met updates naast de bestaande index. Nadat de nieuwe index is getest en volledig operationeel is, worden query's overgeschakeld naar het gebruik van de bijgewerkte index. De toepassing is niet op de hoogte van deze switch, omdat deze alleen communiceert met de nieuwe index. Als u andere problemen ontdekt nadat de nieuwe index is geïmplementeerd voor productiegebruik, kunt u terugkeren naar de oude index. Deze aanpak minimaliseert downtime en zorgt voor continue beschikbaarheid.
Updates naast elkaar werken goed wanneer de kosten voor het herbouwen van de index redelijk zijn en binnen een redelijk tijdsbestek kunnen worden voltooid. Over het algemeen streven we ernaar om indexen zo efficiënt mogelijk te houden, omdat grotere indexen meer resources verbruiken. Controleer en onderhoud regelmatig indexen om onnodige groei te voorkomen.
Tip
Wanneer u resource-intensieve taken uitvoert, zoals entiteitsherkenning, zoekacties en berekeningen, kunt u overwegen een kopie van de resultaten op te slaan. Deze aanpak zorgt ervoor dat wanneer u de index opnieuw moet bouwen, u kunt voorkomen dat alle berekeningen opnieuw worden uitgevoerd. Sommige berekeningen zijn mogelijk niet meer van toepassing vanwege verwijderingen of updates, maar veel blijven relevant.
In-place update-implementaties. Met deze methode wordt de bestaande index rechtstreeks gewijzigd. Het besparen van duplicatiekosten kan nuttig zijn, maar het introduceert ook risico's vanwege potentiële downtime en resource-intensieve bewerkingen. Als uw index groot is en de index helemaal opnieuw bouwt, overschrijdt u de gewenste updatefrequentie, kunt u overwegen om in-place updates te gebruiken. Deze aanpak is echter lastig en draagt het risico dat uw serviceniveaudoelstelling (SLO) wordt overschreden.
Afweging. Evalueer de kosten voor het naast elkaar uitvoeren van implementaties van indexen ten opzichte van het uitvoeren van in-place updates die toevoegingen, updates en verwijderingen implementeren. In de meeste gevallen moet u updates naast elkaar gebruiken in plaats van in-place updates. Wanneer een index opnieuw wordt opgebouwd, verwerkt het proces effectief verwijderingen en updates omdat er een volledig nieuwe gegevensset wordt gemaakt. Deze strategie biedt de mogelijkheid om gegevens te testen. Hoewel naast elkaar implementaties tijdelijk gegevens dupliceren en extra kosten in rekening worden gebracht, rechtvaardigen de voordelen bij het testen en evalueren van prestaties vaak deze opslagvereiste. Voordat u een index live maakt, bekijkt u de gegevens om ervoor te zorgen dat deze overeenkomen met uw verwachtingen.
Geplande updates. In plaats van continue realtime communicatie met gegevensbronnen te onderhouden, kunt u gegevens periodiek vernieuwen. Deze aanpak zorgt ervoor dat de gegevens relevant blijven via geplande updates, waardoor er geen constante interactie meer nodig is.
Updates voor noodgevallen. Onverwachte situaties kunnen zich voordoen, zoals ongewenste gegevens die per ongeluk in de zoekindex lekken. Als dit probleem zich voordoet, moet u mogelijk onmiddellijk actie ondernemen, zoals het verwijderen van specifieke documenten of het aanpassen van gegevens in de index. Ongeacht de implementatiestrategie die u kiest, zoals updates naast elkaar of in-place updates, moet u altijd plannen voor de mogelijkheid van noodoperaties.
Index automatisch bijwerken. Als uw indexeringstechnologie ondersteuning biedt voor het automatisch bijwerken van de index om deze gesynchroniseerd te houden met een externe gegevensbron, kan deze mogelijk automatisch wijzigingen in de gegevens verwerken. Gegevenswijzigingen omvatten toevoegingen of verwijderingen, zonder handmatige tussenkomst. Houd er rekening mee dat elke wijziging een bewerking in de index activeert, die resources verbruikt. De index kan responsief blijven op query's, maar de capaciteit voor het verwerken ervan kan tijdens het updateproces worden verminderd.
Versheidsbewerkingen
Meet het tijdvenster tussen het maken of wijzigen van brongegevens en de toevoeging ervan aan de index als indicator en houd deze bij op SLO's. Met deze indicator worden gegevensbeslissingen genomen voor het bijwerken van het ontwerp van uw gegevenspijplijn om ervoor te zorgen dat gegevens beschikbaar zijn in uw index wanneer u deze nodig hebt. Een index mag alleen zo fris zijn als nodig is.
Als u de versheid wilt behouden, kunt u de index geheel opnieuw opbouwen of incrementeel bijwerken om gesynchroniseerd te blijven met de oorspronkelijke gegevensbronnen. Beide methoden zorgen ervoor dat de index actueel en nauwkeurig blijft.
Vooraf investeren in het afstemmen van het model kan minder duur zijn dan het implementeren van een RAG-patroon, prompt engineering en methoden voor gegevensvergroting.