Overview

I tried building a RAG-based chat using Azure OpenAI, LlamaIndex, and Gradio, so here are my notes.

Azure OpenAI

Create an Azure OpenAI resource.

Then, click “Endpoint: Click here to view endpoint” to note down the endpoint and key.

Then, navigate to the Azure OpenAI Service.

Go to “Model catalog” and deploy “gpt-4o” and “text-embedding-3-small”.

The result is displayed as follows.

Downloading the Text

This time, we target “The Tale of Genji” published on Aozora Bunko (a free digital library of Japanese literature).

https://www.aozora.gr.jp/index_pages/person52.html

Download the texts in bulk using the following script.

ifiursfmrmreeopoplslromoperr=ocsmftbtnteeos"silmrr4oheoebestncemaffqit=streoooumpismzrrepsr=oboso:en=ermiafoirrsdtowtr/qrraefoipfeeoixsist/ueis_tzlassuvt.tgesneiuamoetopppmhBesplnrdearnhsc#oo==afentoselatoaa.onn=ko.ajsnecmstaz_m=pnpsssdepwui.slteadoueataeeBoidert.geeim=arrftis.euviniide[cobital="hns=eap.r(tflt"tne[na_d.unu.gsoeu.(si[r][uiaaeerctfe(p(liueo"sm"rnotxeoiitoatStrlnm:ellzaiqdfn_stxoclesemasao/suiudt.htu.)c:mbborttenl(ep,)pu.tbee=zaessgS"xa-jierlo_x(todtt"tsor["mrutos=ui(hwoons"]ear/p.pv)."kns"mt_l{agr(".d)y("]e=au.fteer,sio)]t=drsihtsetra.aalpl)(pscrnsad"tsle:aopliacaaa:inonoapmf.to[tazsns(e:jaz"(moess)(p"ov"er.e_o/]ra/}aa.=pd:al"._pt"aa"u)tupemtt:e[xraxaha"-tlrti)/]1")e,n,i.]n_ns.t"tefps_hexolpetxi.ilnmtsjticl"ts(to.)_o"(dpon,"iak".nr=""gsT))er[ru0"e]))

Creating the Index

Prepare environment variables.

AAZZUURREE__OOPPEENNAAII__EANPDIP_OKIENYT==xxxxxxxx

Then, create the index using the following script.

ifff#aaa#l#eSS#d#iimrrrppzlmeeo.nnpoooEiiuLmEbttDclSddommmn__rLmettauoaeervkveM=mdaaabdmdaaaiitmiavxxtllliee_oepzpe_oepzpnnaende.lllryreAdpiuidmdpiuiggnp_=soaaaosnzel_r_doel_r_ssStudtsmmmn=idulokevidlokev..ostaVoaaamopr=ye_ene=ye_eleu_ter___eonoe"myergl"myerlmr=dacaiiinsiOge=nste=nsmbci(tgnnnt.=nppnadi=enadieeSr)oedddgtettppoxtppo=di=r_eeeve"n-_ionAt_ion_m"Scxxxat2=A4n_i=z-n_i=lmp.to...re0Ioaknaueaknalol/onlecin2o("metprmmetpmdDedrtlmoav4s,ey=iebey=ieoDaeembrb(-.=,a_Oe=,a_lcitIxseel"0g"zvpd"zvurant.deA5egueedtue=me/d.adisZ-tprrnierrectepzimU0etesAnxesentexeunpR1n-_iIgt_imtox.rrgoE-v4eoE--eobrtfsesr_p(onnm3ennecy"ri_.tOr""d,b-md,doRosoaPeA,pesbp_nemtpzSEvZodmeomva_(euiNiUidadioeddpnrmAeRnildndreoeaepIwEtnlitesrcri_l_"_,g"n,li(usoeAO(,gomiipDPP-nesmeiIE3ntpnr_N-st_oaeKAstsdricEIme(ittY_apdrio"Elo=Amr)Nlc"zpyD"u.uoRP,m/rreOedetaInaOdNttpAeTsaezr")/nu,)iArnIeSdOeeptxet"ni)AnIgEsm,beVdedcitnogrStoreIndex

Gradio

Finally, create an app using Gradio.

iifffaaal#eSS#s#iq#dddmmrrrppzlmeetnueeeppoooiiumYbttroldeFfmmoommm__roetteroeruoorrkve=mdaaaudmdaaaiibaaxynepcfrhrfe]t.ttlllee_oepzp_oepzpnnugd_ccroueie=nx,illllyreAdpiuinmdpiuiggie=ethinlsst=ataogaaasnzel_r_eoel_r_ssl_iniontlptugemlusrmmm=idulokevedlokev..dcnlgo(te_oorrcp""enaaaaopr=ye_ede=ye_eleodoinm(xcnrn.hlWW=cd___onoe"myerl"myerlmsneane"tosyCoehh"hiiiisiOge=nstte=nsmbttxdetsHne.rh,saaL(onnn.=nppnadio=enadieoe_osi=taea=ttl)dddgtettppoxtppo=drxi=ase=pst[aaeeee"n-_iondAt_ion_atnhgt"xppIkkmsxxxt2=A4n_i=ez-n_i=lmgdiaeo\tqeoniia...e0Ioaknapueaknaloe=enn,rnunntnngclen2o("metplrmmetpmdxddy"=edseddIrolmv4s,ey=ioebey=iecS_elh:.r(ernrmb(-.=,a_yOe=,a_lotfxei"jfy(foodese"0g"zvpd"zvnor.s,o"_m#affe.dA5egueyedtue=troacti{eecxiadZ-tprronierreamshohncnsheppmziU0etesuAnxesexg__ari(ogsi(eeCpunR1n-_irIgt_imtesqtys[niasrrhorgE-v4eoE--eobCtu)tftngtssares_p(onnom3enneooem:o"eeeooott_.Or""d,wb-md,dnrrerUx.,rnnboaPeA,pnesbp_taysystqyoSpzEvZodmeomeg_s)e}uriitteuNiUiedadioxeear\eess"onrAeRnmildndt(ng:nrs,raeIwEtbnlite.sgeUypHYai__"_,eg"n,lftis{s(oiugoAOd(,gronuefnkgeipPPd-orewsrusaaCmeIEi3ma(ie:leroopn_Nn-_gstrl)u?noaKAgsdeih_{_)"triEIme_mmmcGetY_mafcihseoexi"EolaoligsnntAm)Ndlunas}stj,zpDe"ltrt\aeiuoPl,teiongx?lrrOsxtrBet"oetIa(tyyo}),aONsp)_t".dpATet:r_ez"wroeinu)esp{snArli_bpdIelskooeOt=tnxpa_1_s_esd0mefni)srAyrgoIo=}mEu""_mr.sb/fteodoodwarrdntaiaugnc/seghie,anrtd_Semecxsto"gtm),ipnlbgeostti_omnsgmoidnelhistory])

The chatbot was successfully created as shown below.

Summary

There may be some misunderstandings on my part, but I hope this serves as a helpful reference.