Share via


Grote taalmodellen uitbreiden met retrieval-verrijkte generatie of fijnslijpen.

In dit artikel wordt uitgelegd hoe grote taalmodellen (LLM's) extra gegevens kunnen gebruiken om betere antwoorden te geven. Standaard weet een LLM alleen wat er tijdens de training is geleerd. U kunt realtime of persoonlijke gegevens toevoegen om deze nuttiger te maken.

Er zijn twee manieren om deze extra gegevens toe te voegen:

  • Rag (Retrieval-augmented generation): maakt gebruik van semantische zoekopdrachten en contextuele priming om nuttige informatie te vinden en toe te voegen vóór de antwoorden van het model. Meer informatie over belangrijke concepten en overwegingen voor het bouwen van generatieve AI-oplossingen.
  • Afstemmen: hiermee wordt de LLM opnieuw getraind op een kleinere, specifieke gegevensset, zodat deze beter wordt bij bepaalde taken of onderwerpen.

In de volgende secties worden beide methoden onderverdeeld.

Rag begrijpen

RAG maakt het sleutelscenario 'chatten via mijn gegevens' mogelijk. In dit scenario heeft een organisatie mogelijk een grote verzameling tekstinhoud, zoals documenten, documentatie en andere eigendomsgegevens. Het gebruikt dit corpus als basis voor antwoorden op gebruikersprompts.

MET RAG kunt u chatbots bouwen die vragen beantwoorden met behulp van uw eigen documenten. Dit werkt als volgt:

  1. Uw documenten (of delen ervan, segmenten genoemd) opslaan in een database
  2. Maak een insluiting voor elk segment; een lijst met getallen die deze beschrijven
  3. Wanneer iemand een vraag stelt, vindt het systeem vergelijkbare segmenten
  4. Stuur de relevante segmenten samen met de vraag naar de LLM om een antwoord te maken

Een index van gevectoriseerde documenten maken

Begin met het bouwen van een vectorgegevensarchief. Dit archief bevat de insluitingen voor elk document of segment. In het volgende diagram ziet u de belangrijkste stappen voor het maken van een gevectoriseerde index van uw documenten.

Diagram met de verschillende fasen van documentopname in een chatsysteem op basis van RAG.

In het diagram ziet u een gegevenspijplijn. Deze pijplijn brengt gegevens in, verwerkt deze en beheert deze voor het systeem. Ook worden de gegevens voorbereid op opslag in de vectordatabase en wordt ervoor gezorgd dat deze de juiste indeling voor de LLM hebben.

Met insluitingen worden het hele proces aangedreven. Een insluiting is een set getallen die de betekenis van woorden, zinnen of documenten vertegenwoordigen, zodat een machine learning-model deze kan gebruiken.

Een manier om een insluiting te maken, is door uw inhoud te verzenden naar de Azure OpenAI Embeddings-API. De API retourneert een vector, een lijst met getallen. Elk getal beschrijft iets over de inhoud, zoals het onderwerp, de betekenis, grammatica of stijl.

  • Onderwerp
  • Semantische betekenis
  • Syntaxis en grammatica
  • Gebruik van woorden en woordgroepen
  • Contextuele relaties
  • Stijl of toon

Al deze getallen laten zien waar de inhoud zich in een multidimensionale ruimte bevindt. Stel u een 3D-grafiek voor, maar met honderden of duizenden dimensies. Computers kunnen met dit soort ruimte werken, zelfs als we het niet kunnen tekenen.

De zelfstudie: Azure OpenAI verkennen in Azure AI Foundry Models insluiten en documentzoekopdrachten biedt een handleiding voor het gebruik van de Azure OpenAI Embeddings-API voor het maken van insluitingen voor uw documenten.

De vector en inhoud opslaan

De volgende stap omvat het opslaan van de vector en de inhoud (of een aanwijzer naar de locatie van de inhoud) en andere metagegevens in een vectordatabase. Een vectordatabase is net als elk ander type database, maar met twee belangrijke verschillen:

  • Vectordatabases gebruiken een vector als index om te zoeken naar gegevens
  • Vectordatabases maken vaak gebruik van algoritmen voor dichtstbijzijnde buren, die cosinus-overeenkomsten kunnen gebruiken als een metrische afstandswaarde om vectoren te vinden die het meest overeenkomen met de zoekcriteria

Met het verzameling documenten dat is opgeslagen in een vectordatabase, kunnen ontwikkelaars een retriever-onderdeel bouwen om documenten op te halen die overeenkomen met de query van de gebruiker. Het systeem gebruikt deze gegevens om de LLM te leveren met wat het nodig heeft om de query van de gebruiker te beantwoorden.

Query's beantwoorden met behulp van uw documenten

Een RAG-systeem maakt eerst gebruik van semantische zoekopdrachten om artikelen te vinden die nuttig kunnen zijn voor de LLM wanneer het een antwoord opstelt. De volgende stap omvat het verzenden van de overeenkomende artikelen met de oorspronkelijke prompt van de gebruiker naar de LLM om een antwoord op te stellen.

In het volgende diagram ziet u een eenvoudige RAG-implementatie (ook wel naïve RAG genoemd):

diagram met een eenvoudige RAG-stroom.

In het diagram verzendt een gebruiker een query. Ten eerste verandert het systeem de prompt van de gebruiker in een insluiting. Vervolgens wordt in de vectordatabase gezocht naar de documenten of segmenten die het meest lijken op de prompt.

Cosinus-gelijkenis meet hoe dicht twee vectoren zijn door de hoek ertussen te bekijken. Een waarde in de buurt van 1 betekent dat de vectoren vergelijkbaar zijn; een waarde in de buurt van -1 betekent dat ze heel anders zijn. Met deze aanpak kan het systeem documenten vinden met vergelijkbare inhoud.

Dichtstbijzijnde buuralgoritmen vinden de vectoren die zich het dichtst bij een bepaald punt bevinden. Het K-dichtstbijzijnde buren-algoritme (KNN) zoekt naar de beste k dichtstbijzijnde overeenkomsten. Systemen zoals aanbevelingsengines maken vaak gebruik van KNN en cosinus-overeenkomsten om de beste overeenkomsten voor de behoeften van een gebruiker te vinden.

Verzend na de zoekopdracht de best overeenkomende inhoud en de prompt van de gebruiker naar de LLM, zodat er een relevanter antwoord kan worden gegenereerd.

Uitdagingen en overwegingen

Een RAG-systeem heeft zijn eigen uitdagingen:

  • Gegevensprivacy: afhandelen van gebruikersgegevens op verantwoorde wijze, met name bij het ophalen of verwerken van informatie van externe bronnen.
  • Rekenvereisten: Verwacht stappen voor het ophalen en genereren van belangrijke rekenresources.
  • Nauwkeurigheid en relevantie: focus op het leveren van nauwkeurige, relevante reacties en het controleren op vooroordelen in uw gegevens of modellen.

Ontwikkelaars moeten deze uitdagingen aanpakken om RAG-systemen te bouwen die efficiënt, ethisch en waardevol zijn.

Zie Geavanceerde systemen voor het ophalen van uitgebreide generatiesystemen bouwen voor meer informatie over het bouwen van rag-systemen die gereed zijn voor productie.

Wilt u proberen een generatieve AI-oplossing te bouwen? Begin met Aan de slag met de chat met behulp van uw eigen gegevensvoorbeeld voor Python. Zelfstudies zijn ook beschikbaar voor .NET, Java en JavaScript.

Een model verfijnen

Met het afstemmen van een LLM wordt een LLM opnieuw getraind op een kleinere, domeinspecifieke gegevensset na de eerste training voor een grote, algemene gegevensset.

Tijdens voortraining leren LLM's taalstructuur, context en algemene patronen van brede gegevens. Het model verfijnen met nieuwe, gerichte gegevens, zodat het beter kan worden uitgevoerd op specifieke taken of onderwerpen. Zoals het leert, wordt het gewicht van het model bijgewerkt om de details van de nieuwe gegevens te verwerken.

Belangrijke voordelen van het afstemmen

  • Specialisatie: Het model kan beter worden afgestemd op specifieke taken, zoals het analyseren van juridische of medische documenten of het verwerken van klantenservice.
  • Efficiëntie: Bij het afstemmen worden minder gegevens en minder resources gebruikt dan het trainen van een volledig nieuw model.
  • Aanpassingsvermogen: Door het model af te stemmen kunnen nieuwe taken of domeinen worden geleerd die niet in de oorspronkelijke training worden behandeld.
  • Verbeterde prestaties: het model kan beter inzicht hebben in de taal, stijl of terminologie van een nieuw domein.
  • Persoonlijke instellingen: Door af te stemmen kunnen de reacties van het model aan de behoeften of voorkeuren van een gebruiker of organisatie voldoen.

Beperkingen en uitdagingen

Het afstemmen heeft ook enkele uitdagingen:

  • Gegevensvereiste: U hebt een grote, hoogwaardige gegevensset nodig voor uw specifieke taak of domein.
  • Risico op overfitting: Met een kleine gegevensset kan het model goed presteren op trainingsgegevens, maar slecht op nieuwe gegevens.
  • Kosten en resources: afstemmen heeft nog steeds rekenkracht nodig, met name voor grote modellen of gegevenssets.
  • Onderhoud en bijwerken: u moet nauwkeurig afgestemde modellen bijwerken wanneer uw domein verandert.
  • Modeldrift: Door het model af te stemmen voor een specifieke taak, kan het model minder effectief zijn bij algemene taaltaken.

Een model aanpassen door middel van het verfijnen van wordt uitgelegd hoe u een model kunt verfijnen.

Fine-tuning versus RAG

Met fine-tuning en RAG kunnen LLMs beter werken, maar elk past bij verschillende behoeften. Kies de juiste benadering op basis van uw doelen, de gegevens en rekenkracht die u hebt en of u wilt dat het model zich specialiseert of algemeen blijft.

Wanneer moet u afstemmen

  • Taakspecifieke prestaties: Kies nauwkeurig afstemmen wanneer u de belangrijkste resultaten voor een specifieke taak nodig hebt en voldoende domeingegevens hebt om overfitting te voorkomen.
  • Controle over gegevens: gebruik verfijning als u unieke of bedrijfseigen gegevens hebt die heel anders zijn dan waarop het basismodel vooraf is getraind.
  • Stabiele inhoud: kies afstemmen als uw taak geen constante updates nodig heeft met de meest recente informatie.

Wanneer kiest u RAG?

  • Dynamische of veranderende inhoud: Gebruik RAG wanneer u de meest recente informatie nodig hebt, zoals voor nieuws of recente gebeurtenissen.
  • Brede onderwerpdekking: Kies RAG als u sterke resultaten wilt voor veel onderwerpen, niet slechts één gebied.
  • Beperkte resources: Ga met RAG als u niet veel gegevens of rekenkracht voor training hebt en het basismodel al een goede taak heeft.

Definitieve gedachten voor het ontwerpen van toepassingen

Bepaal tussen afstemmen en RAG op basis van wat uw app nodig heeft. Afstemmen is het meest geschikt voor gespecialiseerde taken, terwijl RAG u flexibiliteit en up-to-datuminhoud biedt voor dynamische scenario's.