Bewerken

Delen via


Een RAG-oplossing ontwerpen en ontwikkelen

Azure AI services
Azure AI Search
Azure OpenAI Service
Azure Machine Learning

Het RAG-patroon (Retrieval-Augmented Generation) is een industriestandaardbenadering voor het bouwen van toepassingen die gebruikmaken van grote taalmodellen om te redeneren voor specifieke of eigen gegevens die nog niet bekend zijn bij het grote taalmodel. Hoewel de architectuur eenvoudig is, omvat het ontwerpen, experimenteren en evalueren van RAG-oplossingen die in deze architectuur passen veel complexe overwegingen die profiteren van een strenge, wetenschappelijke benadering.

Deze handleiding wordt gepresenteerd als een reeks. Elk artikel in de reeks behandelt een specifieke fase bij het ontwerpen van RAG-oplossingen.

Deze overwegingen in de artikelen in deze handleidingen omvatten:

  • Bepalen welke testdocumenten en query's tijdens de evaluatie moeten worden gebruikt
  • Een segmenteringsstrategie kiezen
  • Bepalen wat en hoe u de segmenten moet verrijken
  • Het juiste insluitingsmodel kiezen
  • Bepalen hoe de zoekindex moet worden geconfigureerd
  • Bepalen welke zoekopdrachten u wilt uitvoeren: vector, volledige tekst, hybride, handmatig meerdere
  • Elke stap evalueren

In de artikelen in deze handleiding worden al deze overwegingen besproken.

RAG-architectuur

Diagram met de architectuur op hoog niveau van een RAG-oplossing, inclusief de aanvraagstroom en de gegevenspijplijn.

Figuur 1. RAG-architectuur op hoog niveau

RAG-toepassingsstroom

Hier volgt een stroom op hoog niveau voor een RAG-toepassing.

  1. De gebruiker geeft een query uit in een intelligente gebruikersinterface van een toepassing.
  2. De intelligente toepassing maakt een API-aanroep naar een orchestrator. De orchestrator kan worden geïmplementeerd met hulpprogramma's of platforms zoals Semantic Kernel, Azure Machine Learning-promptstroom of LangChain.
  3. De orchestrator bepaalt welke zoekopdracht moet worden uitgevoerd op Azure AI Search en geeft de query uit.
  4. De orchestrator verpakt de belangrijkste N-resultaten van de query, verpakt deze als context binnen een prompt, samen met de query en verzendt de prompt naar het grote taalmodel. De orchestrator retourneert het antwoord op de intelligente toepassing die de gebruiker kan lezen.

RAG-gegevenspijplijnstroom

Hier volgt een stroom op hoog niveau voor een gegevenspijplijn die grondgegevens levert voor een RAG-toepassing.

  1. Documenten worden gepusht of opgehaald in een gegevenspijplijn.

  2. De gegevenspijplijn verwerkt elk document afzonderlijk met de volgende stappen:

    1. Segmentdocument - Het document opsplitsen in semantisch relevante onderdelen die idealiter één idee of concept hebben.
    2. Segmenten verrijken : voegt metagegevensvelden toe die zijn gemaakt op basis van de inhoud in de segmenten naar afzonderlijke velden, zoals titel, samenvatting en trefwoorden.
    3. Segmenten insluiten: maakt gebruik van een insluitmodel om het segment en eventuele andere metagegevensvelden te vectoriseren die worden gebruikt voor vectorzoekopdrachten.
    4. Blijft segmenten behouden- Slaat de segmenten op in de zoekindex.

Ontwerp- en evaluatieoverwegingen voor RAG

Er zijn verschillende implementatiebeslissingen die u moet nemen bij het ontwerpen van uw RAG-oplossing. In de volgende afbeelding ziet u enkele van deze beslissingen.

Diagram met de architectuur op hoog niveau van een RAG-oplossing, inclusief vragen die zich voordoen bij het ontwerpen van de oplossing.

Figuur 2. Vragen die zich voordoen bij het ontwerpen van een RAG-oplossing

De reeks artikelen in deze handleiding behandelt deze overwegingen en meer.

Voorbereidingsfase

  • Oplossingsdomein bepalen - Het belang van het duidelijk definiëren van de bedrijfsvereisten voor de RAG-oplossing
  • Verzamel representatieve testdocumenten - Bespreekt overwegingen en richtlijnen voor het verzamelen van testdocumenten voor uw RAG-oplossing die representatief zijn voor uw corpus.
  • Testquery's verzamelen: hier wordt besproken welke informatie u samen met uw testquery's moet verzamelen. Dit biedt richtlijnen voor het genereren van synthetische query's en query's die niet worden behandeld in uw documenten.

Segmenteringsfase

  • Inzicht in segmenteringseconomie - Bespreekt de factoren die u moet overwegen bij het bekijken van de totale kosten van uw segmenteringsoplossing voor uw tekstinhoud
  • Documentanalyse uitvoeren: bevat een lijst met vragen die u kunt stellen bij het analyseren van een documenttype waarmee u kunt bepalen wat u in het document wilt negeren of uitsluiten, wat u wilt vastleggen in segmenten en hoe u wilt segmenten
  • Inzicht in segmenteringsmethoden : geeft een overzicht van de verschillende benaderingen voor segmenteren, zoals op zinnen gebaseerd, vast formaat, aangepaste, grote taalmodelvergroting, analyse van documentindelingen, met behulp van machine learning-modellen
  • Begrijpen hoe de documentstructuur van invloed is op segmentering - Bespreekt hoe de mate van structuur van een document invloed heeft op uw keuze voor een segmenteringsbenadering

Segmentverrijkingsfase

  • Schone segmenten - Bespreekt verschillende schoonmaakmethoden die u kunt implementeren om closenessovereenkomsten te ondersteunen door potentiële verschillen te elimineren die niet materiaal zijn voor de semantiek van de tekst
  • Segmenten uitbreiden - Hier worden enkele algemene metagegevensvelden besproken die u moet overwegen om uw segmentgegevens te verbeteren, samen met enkele richtlijnen over hun potentiële gebruik in de zoekfunctie en hulpprogramma's of technieken die vaak worden gebruikt om de metagegevensinhoud te genereren

Insluitingsfase

  • Inzicht krijgen in het belang van het insluitmodel - Bespreekt hoe een insluitmodel een aanzienlijk effect kan hebben op de relevantie van uw vectorzoekresultaten
  • Een insluitmodel kiezen - Biedt richtlijnen voor het kiezen van een insluitmodel
  • Insluitingsmodellen evalueren - Bespreekt twee manieren om een insluitmodel te evalueren: het visualiseren van insluitingen en het berekenen van insluitingsafstanden

Fase voor het ophalen van gegevens

  • Zoekindex maken - Bespreekt enkele belangrijke beslissingen die u moet nemen voor de vectorzoekconfiguratie die van toepassing is op vectorvelden
  • Inzicht in zoekopties - Biedt een overzicht van de typen zoekopdrachten die u kunt overwegen, zoals vector, volledige tekst, hybride en handmatig veelvoud. Biedt richtlijnen voor het splitsen van een query in subquery's, het filteren van query's
  • Zoekopdrachten evalueren - Biedt richtlijnen voor het evalueren van uw zoekoplossing

Fase van evaluatie van grote taalmodel end-to-end

  • Meer informatie over metrische gegevens over evaluatie van grote talenmodellen: biedt een overzicht van verschillende metrische gegevens die u kunt gebruiken om de reactie van grote taalmodellen te evalueren, waaronder basis-, volledigheid, gebruik en relevantie
  • Inzicht in overeenkomsten en metrische evaluatiegegevens : biedt een kleine lijst met overeenkomsten en metrische evaluatiegegevens die u kunt gebruiken bij het evalueren van uw RAG-oplossing
  • Inzicht in het belang van documentatie, rapportage en aggregatie : bespreekt het belang van het documenteren van de hyperparameters, samen met evaluatieresultaten, het samenvoegen van resultaten van meerdere query's en het visualiseren van de resultaten
  • De RAG Experiment Accelerator - Biedt een koppeling naar de Rag Experiment Accelerator, een hulpprogramma dat is ontworpen om teams te helpen snel de beste strategieën voor RAG-implementatie te vinden door meerdere experimenten uit te voeren, persistent te maken en de resultaten te evalueren

Gestructureerde benadering

Vanwege het aantal stappen en variabelen is het belangrijk om uw RAG-oplossing te ontwerpen via een gestructureerd evaluatieproces. Evalueer de resultaten van elke stap en pas deze aan, gezien uw vereisten. Hoewel u elke stap onafhankelijk moet evalueren voor optimalisatie, wordt het eindresultaat ervaren door uw gebruikers. Zorg ervoor dat u alle stappen in dit proces begrijpt voordat u uw eigen acceptatiecriteria voor elke afzonderlijke stap bepaalt.

Medewerkers

Volgende stappen