Lokaal Intelligent Q&A-systeem

In het hedendaagse veld van AI worden algemene grote taalmodellen (zoals GPT-3, GPT-4, enz.) op grote schaal gebruikt om chatbots te bouwen. Deze modellen beschikken over krachtige natural language processing-mogelijkheden en kunnen een verscheidenheid aan vragen behandelen, waarbij ze antwoorden genereren die lijken op menselijke taal. Ondanks hun uitstekende prestaties in algemene scenario's missen deze modellen echter vaak precisie in domeinspecifieke Q&A-scenario's. Dit komt doordat algemene grote taalmodellen een diep begrip missen van specifieke domeinkennis; hun trainingsdata zijn uitgebreid maar niet doelgericht, wat leidt tot onnauwkeurige, breedsprakige of irrelevante antwoorden bij het omgaan met specifieke scenario's.

Om dit probleem aan te pakken, heeft de industrie een reeks oplossingen voorgesteld die zijn afgestemd op specifieke scenario's om de professionaliteit en nauwkeurigheid van chatbots te verbeteren. Dit artikel introduceert deze oplossingen in detail en demonstreert ze met een eenvoudig voorbeeld.

Waarom LLM Lokaal Implementeren?

Het lokaal implementeren van grote taalmodellen (gelokaliseerde implementatie) is een keuze die gebaseerd is op verschillende zakelijke behoeften en technische scenario's. Hier zijn enkele van de belangrijkste redenen:

Gegevensprivacy en -beveiliging

In scenario's met strenge eisen voor gegevensprivacy en -beveiliging, zoals gezondheidszorg, financiën en overheid, is gelokaliseerde implementatie de onvermijdelijke keuze. Gevoelige data in deze velden zijn mogelijk niet geschikt om naar de cloud te uploaden voor verwerking vanwege strenge wettelijke en compliance-eisen. Het lokaal implementeren van grote taalmodellen zorgt ervoor dat data de lokale netwerkomgeving niet verlaat, waardoor datalekken of externe risico's worden vermeden.

Verminderde Netwerkafhankelijkheid

Cloud-implementatie is doorgaans afhankelijk van internetconnectiviteit. In situaties met onstabiele netwerkomstandigheden of beperkte bandbreedte kunnen de prestaties van cloudservicetoegang lijden. Gelokaliseerde implementatie voorkomt afhankelijkheid van externe netwerken, en zorgt ervoor dat het systeem te allen tijde efficiënt werkt, vooral in scenario's die realtime reacties vereisen.

Aanpassing en Controle

Door grote taalmodellen lokaal te implementeren, kunnen ontwikkelaars de modellen aanpassen en optimaliseren om beter aan specifieke zakelijke behoeften te voldoen. Bij cloudservices hebben gebruikers alleen toegang tot generieke API's, terwijl lokale implementatie ontwikkelaars in staat stelt om modellen te fine-tunen, uit te breiden en grotere flexibiliteit te hebben bij het aanpassen van het modelgedrag.

Kostenoptimalisatie

Hoewel de cloud handige schaalbaarheids- en onderhoudsdiensten biedt, kan langdurig gebruik van grote modellen in de cloud aanzienlijke kosten met zich meebrengen, vooral voor bedrijven die continue modelaanroepen vereisen. Het lokaal implementeren van modellen kan kosten van cloudservices besparen, met name voor ondernemingen met grootschalig gebruik.

Oplossingen voor de Beperkingen van Algemene Modellen

Geconfronteerd met het probleem van onvoldoende prestaties van algemene modellen in specifieke scenario's, zijn de volgende oplossingen op grote schaal toegepast en erkend:

Kennisverrijkte Modellen (Retrieval-Augmented Generation, RAG)

RAG is een technisch framework dat retrieval combineert met generatie, en de kennislacunes in grote taalmodellen aanpakt door externe kennisbanken te introduceren. In de RAG-architectuur wordt de zoekopdracht van de gebruiker eerst naar een retrieval-module gestuurd, die relevante documenten of informatie uit een vooraf gebouwde kennisbank haalt. Deze stukjes informatie worden vervolgens gecombineerd met het generatiemodel om nauwkeurigere antwoorden te produceren. Deze methode benut de taalkundige mogelijkheden van het generatiemodel terwijl de professionaliteit en nauwkeurigheid van de antwoorden worden gewaarborgd. Deze aanpak is bijzonder geschikt voor domeinspecifieke Q&A-scenario's, zoals gezondheidszorg, recht of bedrijfsinterne kennis-Q&A.

RAG

Afbeeldingsbron: https://transformers.run/c1/transformer/

Fine-tuning van Modellen

Fine-tuning is een andere veelvoorkomende methode die wordt gebruikt om algemene modellen te optimaliseren voor specifieke scenario's. Door voorgetrainde taalmodellen te fine-tunen, kunnen de modellen beter worden afgestemd op specifieke domeingegevens en -taken. Men kan bijvoorbeeld grote taalmodellen opnieuw trainen met interne bedrijfsdocumenten, technische handleidingen of branchespecifieke Q&A-data. Deze aanpak kan de prestaties van het model in specifieke domeinen aanzienlijk verbeteren.

Het nadeel van fine-tuning is dat het een aanzienlijke hoeveelheid domeinspecifieke data vereist, en het trainingsproces kan aanzienlijke computationele middelen vereisen. Echter, zodra de fine-tuning is voltooid, wordt het model professioneler en preciezer bij het omgaan met domeinspecifieke kwesties.

Bovendien zijn er nog veel andere oplossingen zoals Knowledge Graphs, op regels gebaseerde systemen, hybride systemen en meer. De juiste methode kan worden gekozen op basis van de werkelijke situatie.

Een Domeinspecifiek Q&A-systeem Bouwen met RAG

We zullen via een eenvoudig voorbeeld demonstreren hoe je een chatbot kunt bouwen die wordt aangedreven door een kennisbank met behulp van RAG. Voor demonstratiedoeleinden zullen we Ollama gebruiken als inferentie-engine om het grote taalmodel te laden, Anything LLM om de RAG-kennisbank te bouwen, en alle services implementeren op een lokaal Jetson-apparaat.

  • Ollama: Inferentie-engine voor grote taalmodellen
  • Anything LLM: Tool voor het bouwen van AI-applicaties
  • Jetson: Edge computing-apparaat met hoge prestaties

RAG

Stap 1. Ollama Installeren en Uitvoeren

Hier gebruiken we jetson-examples om het grote taalmodel snel op het Jetson-apparaat te implementeren.

bash
sudo apt install python3-pip
pip3 install jetson-examples
reComputer run ollama
ollama run llama3

Houd deze terminal alstublieft actief.

Stap 2. AnythingLLM Installeren en Uitvoeren

We kunnen AnythingLLM direct implementeren met Docker:

bash
docker pull mintplexlabs/anythingllm

export STORAGE_LOCATION=$HOME/anythingllm 
mkdir -p $STORAGE_LOCATION 
touch "$STORAGE_LOCATION/.env" 
docker run -d -p 3001:3001 --cap-add SYS_ADMIN \
    -v ${STORAGE_LOCATION}:/app/server/storage \
    -v ${STORAGE_LOCATION}/.env:/app/server/.env \
    -e STORAGE_DIR="/app/server/storage" \
    mintplexlabs/anythingllm

Stap 3. De Lokale Kennisbank Configureren

Zodra AnythingLLM succesvol is gestart, kunnen we een browser gebruiken om http://<ip-jetson>:3001 te openen om toegang te krijgen tot de WebUI-interface en het kennisbankbestand in de WebUI te uploaden.

Hier heb ik ChatGPT gebruikt om enkele korte verhalen te genereren en deze verhalen geüpload naar AnythingLLM.

upload

Stap 4. Effectiviteitstest

test

Meer Inhoud