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.
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
Stap 1. Ollama Installeren en Uitvoeren
Hier gebruiken we jetson-examples om het grote taalmodel snel op het Jetson-apparaat te implementeren.
sudo apt install python3-pip
pip3 install jetson-examples
reComputer run ollama
ollama run llama3Houd deze terminal alstublieft actief.
Stap 2. AnythingLLM Installeren en Uitvoeren
We kunnen AnythingLLM direct implementeren met Docker:
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/anythingllmStap 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.
Stap 4. Effectiviteitstest