Delen via


Een RAG-oplossing ontwerpen en ontwikkelen

Het patroon Retrieval-Augmented Generation (RAG) is een industriestandaard benadering voor het bouwen van toepassingen die gebruikmaken van taalmodellen om specifieke of bedrijfseigen gegevens te verwerken die het model nog niet kent. De architectuur is eenvoudig, maar het ontwerpen, experimenteren met en evalueren van RAG-oplossingen die in deze architectuur passen, omvatten veel complexe overwegingen die profiteren van een strenge, wetenschappelijke benadering.

Dit artikel is de introductie van een reeks. Elk artikel in de reeks behandelt een specifieke fase in het ontwerp van de RAG-oplossing.

De andere artikelen in deze reeks hebben betrekking op de volgende overwegingen:

  • Bepalen welke testdocumenten en query's tijdens de evaluatie moeten worden gebruikt
  • Hoe een segmenteringsstrategie kiezen
  • Bepalen welke segmenten u moet verrijken en hoe u deze kunt verrijken
  • Het juiste insluitingsmodel kiezen
  • De zoekindex configureren
  • Bepalen welke zoekopdrachten u moet uitvoeren, zoals vector, volledige tekst, hybride en meervoudige handmatige zoekopdrachten.
  • Elke stap evalueren

RAG-architectuur

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

RAG-toepassingsproces

In de volgende workflow wordt een proces op hoog niveau voor een RAG-applicatie beschreven.

  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. U kunt de orkestrator implementeren met hulpprogramma's of platforms zoals Semantic Kernel, Azure Machine Learning-prompt flow 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 bovenste N resultaten van de query. Het verpakt de belangrijkste resultaten en de query als context binnen een prompt en verzendt de prompt naar het taalmodel. De orkestrator stuurt het antwoord terug naar de intelligente toepassing zodat de gebruiker het kan lezen.

RAG-gegevenspijplijnstroom

In de volgende werkstroom wordt een stroom op hoog niveau beschreven voor een gegevenspijplijn die grondgegevens levert voor een RAG-toepassing.

  1. Documenten worden geëxporteerd of opgeladen in een gegevenspijplijn.
  2. De gegevenspijplijn verwerkt elk document afzonderlijk door de volgende stappen uit te voeren:
    1. Segmentdocument: het document opsplitsen in semantisch relevante onderdelen die idealiter één idee of concept hebben.
    2. Segmenten verrijken: voegt metagegevensvelden toe die door de pijplijn worden gemaakt op basis van de inhoud in de segmenten. De gegevenspijplijn categoriseert de metagegevens in 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. Segmenten behouden: slaat de segmenten op in de zoekindex.

Ontwerp- en evaluatieoverwegingen voor RAG

U moet verschillende implementatiebeslissingen nemen tijdens het ontwerpen van uw RAG-oplossing. In het volgende diagram ziet u enkele van de vragen die u moet stellen wanneer u deze beslissingen neemt.

Diagram met de architectuur op hoog niveau van een RAG-oplossing, inclusief de vragen die u moet stellen tijdens het ontwerpen van de oplossing.

De volgende lijst bevat een korte beschrijving van wat u moet doen tijdens elke fase van de ontwikkeling van de RAG-oplossing.

  • Tijdens de voorbereidingsfasemoet u het volgende doen:

    • Bepaal het oplossingsdomein. Definieer duidelijk de bedrijfsvereisten voor de RAG-oplossing.
    • Verzamel representatieve testdocumenten. Verzamel testdocumenten voor uw RAG-oplossing die representatief zijn voor uw documentverzameling.
    • Testquery's verzamelen. Verzamel informatie en testquery's, en genereer synthetische query's en query's die niet in uw documenten worden behandeld.
  • Tijdens de chunkingfase moet u het volgende doen:

    • Inzicht in segmenteringseconomie. Begrijp welke factoren u moet overwegen bij het evalueren van de totale kosten van uw segmenteringsoplossing voor uw tekstverzameling.
    • Documentanalyse uitvoeren. Stel de volgende vragen om u te helpen beslissingen te nemen wanneer u een documenttype analyseert:
      • Welke inhoud in het document wilt u negeren of uitsluiten?
      • Welke inhoud wilt u vastleggen in segmenten?
      • Hoe wilt u die inhoud opdelen?
    • Begrijp chunkingbenaderingen. Meer informatie over de verschillende methoden voor segmentering, waaronder op zinnen gebaseerde, vaste grootte en aangepaste benaderingen of met behulp van uitbreiding van taalmodellen, analyse van documentindelingen en machine learning-modellen.
    • Begrijpen hoe documentstructuur van invloed is op segmentering. Kies een segmenteringsmethode op basis van de mate van structuur die het document heeft.
  • Tijdens de segmentverrijkingsfase moet u het volgende doen:

    • Schone segmenten. Implementeer reinigingsmethoden om verschillen te elimineren die niet van invloed zijn op de betekenis van de tekst. Deze methode ondersteunt overeenkomsten op basis van nabijheid.
    • Segmenten uitbreiden. Overweeg om uw segmentgegevens te verbeteren met algemene metagegevensvelden en inzicht te krijgen in hun potentiële gebruik in de zoekfunctie. Meer informatie over veelgebruikte hulpprogramma's of technieken voor het genereren van metagegevensinhoud.
  • Tijdens de insluitfasemoet u het volgende doen:

    • Inzicht in het belang van het embeddingmodel. Een insluitmodel kan de relevantie van uw vectorzoekresultaten aanzienlijk beïnvloeden.
    • Het juiste insluitingsmodel kiezen voor uw use-case.
    • Evalueer het insluiten van modellen. Evalueer het insluiten van modellen door insluitingen te visualiseren en de insluitingsafstanden te berekenen.
  • Tijdens de fase voor het ophalen van gegevensmoet u het volgende doen:

    • Maak een zoekindex. Pas de juiste vectorzoekconfiguraties toe op uw vectorvelden.
    • Zoekopties begrijpen. Bekijk de verschillende typen zoekopdrachten, waaronder vector, volledige tekst, hybride en handmatige zoekopdrachten. Meer informatie over het splitsen van een query in subquery's en het filteren van query's.
    • Zoekopdrachten evalueren. Gebruik retrieval evaluatiemethoden om uw zoekoplossing te beoordelen.
  • Tijdens de eind-tot-eind evaluatiefase van het taalmodel moet u het volgende doen:

    • Meer informatie over metrische gegevens over de evaluatie van taalmodellen. Er zijn verschillende metrische gegevens, waaronder geaardheid, volledigheid, gebruik en relevantie, die u kunt gebruiken om het antwoord van het taalmodel te evalueren.
    • Inzicht in similariteits- en evaluatiemaatstaven. U kunt metrische gegevens over overeenkomsten en evaluatie gebruiken om uw RAG-oplossing te evalueren.
    • Inzicht in het belang van documentatie, rapportage en aggregatie. Documenteer de hyperparameters en de evaluatieresultaten. Aggregeren de resultaten van meerdere query's en visualiseer de resultaten.
    • Gebruik de RAG Experiment Accelerator. U kunt de GITHub-opslagplaats van RAG Experiment Accelerator gebruiken om uw team te helpen 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 dat u een gestructureerd evaluatieproces voor uw RAG-oplossing volgt. Evalueer de resultaten van elke stap en breng wijzigingen aan op basis van uw vereisten. U moet elke stap onafhankelijk evalueren voor optimalisatie, maar vergeet niet dat het eindresultaat is wat uw klanten ervaren. Zorg ervoor dat u alle stappen in dit proces begrijpt voordat u uw eigen acceptatiecriteria voor elke stap bepaalt.

Bijdragers

Dit artikel wordt onderhouden door Microsoft. Het is oorspronkelijk geschreven door de volgende inzenders.

Hoofdauteurs:

Als u niet-openbare LinkedIn-profielen wilt zien, meldt u zich aan bij LinkedIn.

Volgende stappen