- Vårt erbjudande
- Kundcase
- Insikter & Inspiration
- Om oss

Hands-on med Azure OpenAI + Azure AI Search
/ AI /
Hands-on med Azure OpenAI + Azure AI Search
I denna artikel tittar vi hands-on på hur Azure OpenAI och Azure AI Search kan fungera tillsammans för att skapa kraftfulla AI-applikationer med tillgång till vår egen icke-publika data.
Vad är det vi ska bygga?
De flesta av oss har provat olika chattapplikationer, till exempel ChatGPT från OpenAI och Microsoft Copilot. Båda använder så kallade Large Language Models (LLM).
Båda fungerar fantastiskt bra och är något vi på Wizardworks använder dagligen. Den data som dessa modeller har blivit tränade på är publik. Applikationerna har även viss förmåga att göra sökningar på data som de inte har blivit tränade på. Detta kallas för Retrieval-Augmented Generation (RAG).
Vad är då RAG? Enkelt uttryckt handlar det om att hämta data till vår applikation och LLM vid frågetillfället. Ofta är detta data från hemsidor eller dokument. Fördelen med RAG är att vi hämtar aktuell data och inte bara förlitar oss på den data som modellen har blivit tränad på, vilken kan vara inaktuell när vi ställer vår fråga.
Men hur gör vi då med icke-publik data?
Bra fråga! Om vi ska bygga en chattapplikation (eller någon annan form av applikation) behöver vi tillföra data till vår modell som inte är publik på ett strukturerat och säkert sätt.
Det är här Azure OpenAI och Azure AI Search kommer in i bilden och möjliggör RAG på ett säkert sätt där det bara vår applikation (och vår organisation) som har tillgång till vår icke-publika data via Azure AI Search.
Bilden nedan ger en bra översikt för hur dessa två kan samverka.

Vår chat AI RAG arkitektur. Källa: Microsoft
Vid frågetillfället går vi ut till vår söktjänst (Azure AI Search) och hämtar in aktuell och eventuellt icke-publik data. Vi hämtar inte in all data som indexerats, utan enbart den data som är relevant för vår fråga. Denna data tillförs sedan till den prompt som genereras.
En prompt är den text eller fråga vi skickar till modellen för att få ett svar. Genom att inkludera relevant data i prompten kan vi förbättra svaren.
Vilka sätt kan vi göra detta på?
Det är alltså kombinationen av Azure OpenAI och Azure AI Search som skapar magi. Det finns olika sätt att sätta upp en applikation där vi kombinerar dessa två.
Exempelvis kan vi via Azure AI Studio sätta upp en egen modell och lägga till en datakälla i form av Azure AI Search. Vi kan sedan exponera detta i form av en chattapplikation och ställa frågor mot vår data.

Lägg till Azure AI Search som egen datakälla i Azure AI Studio
Men eftersom vi tycker om att programmera kan vi bygga en egen applikation där vi har full kontroll över kodbasen och hur vår chattapplikation fungerar.
Som tur är behöver vi inte börja helt från början, utan det finns färdig kod på GitHub från Microsoft som vi kan utgå ifrån. Projektet finns tillgängligt i Python, JavaScript, .NET och Java.
I skrivande stund fungerar dock inte .NET-versionen, så nedanstående exempel är uppsatt med Python-versionen.

There is no spoon
Viktigt att tänka på är att den subscription som projektet körs för måste vara godkänd för Microsoft OpenAI Services. Ansök om detta här.
När projektet väl är uppsatt är det enkelt att addera egen data. När vi adderar egna dokument till vårt lagringsutrymme i Microsoft Azure går dessa igenom en pipeline som extraherar data, vektoriserar den och lägger till den i Azure AI Search så att den blir sökbar.

Vi adderar egen data genom att exekvera bash-scriptet prepdocs.sh
Show me the website!
Absolut! Med projektet får vi en enklare chattapplikation där vi kan ställa frågor mot våra indexerade dokument. Nedan ställer vi några enkla frågor om våra konsulter på Wizardworks efter att vi laddat upp deras CV.

Vi ställer frågor mot vår egen data
Det går även bra att ställa frågor som jämför olika data. Exempelvis nedan där vi ser att Markus är fantastiskt duktig på att bygga integrationer mot Business Central.

Markus Lundberg är en wizard på att bygga integrationer mot Business Central
Men om vi har olika säkerhetsnivåer?
Om vi i vår organisation har olika rättigheter till dokument kan detta hanteras via Access Control List (ACL), vilket ger användare olika rättigheter på mapp- och filnivå. Detta hanteras vid frågetillfället mot Azure AI Search, så olika användare kan få olika svar baserat på de rättigheter de har till olika dokument.
Avslutningsvis
Du kanske har provat ChatGPT eller Microsoft Copilot ett tag nu och funderat över hur du kan utnyttja din icke-publika data på ett strukturerat och säkert sätt. Nu vet du hur!
Genom att kombinera Azure OpenAI och Azure AI Search går det att skapa kraftfulla AI-applikationer som hanterar icke-publik data. Med hjälp av Retrieval-Augmented Generation (RAG) och Access Control List (ACL) kan vi tillföra vår egen data på ett säkert och strukturerat sätt.
Med öppen källkod från Microsoft kan vi snabbt komma igång med att bygga våra applikationer där vi har full kontroll över funktionaliteten och inte minst hur vår AI kan integrera med andra delar av våra system.
