Tusaalooyin wax-ku-ool ah oo xalalka RAG ee gaarka loo habeeyey

Tusaalooyin dhab ah ayaa muujinaya sida nidaamyada soo-celinta lagu xoojiyey ee gaarka loo habeeyey u xalliyaan dhibaatooyinka adag ee aqoonta shirkadaha.

Maalmahan RAG mararka qaarkood sumcad xun ayuu yeeshaa, sababtoo ah dadku waxay u haystaan inuu gebi ahaanba sahlan yahay (bilowgiisu waa sahlan yahay, laakiin ballaarintiisu sidaas ma aha), ama waxay u malaynayaan inay ka hor mareen ‘nidaamyada wakiillada ah’ (kuwaas oo, marka dusha laga yara xoqo, badanaa si dhakhso leh ugu ekaada RAG…)

Qoraalkan balooggu wuxuu soo bandhigayaa hal ama laba tusaale oo la fuliyey si loo muujiyo sida aan u wajahno caqabadaha caamka ah, kuwaas oo ah:

  • Maareynta xog isku jirta qoraal iyo tirooyin iyo sababta ay u fashiliso RAG-ga fudud: ereyada muhiimka ahi way isku dhacaan, tirooyinkuna macne semaantik ah ma gudbiyaan.

  • Sababta ay waxtar u leedahay in embeddings-ka laga bilaabo koobitaan: qayb kasta u samee koobitaan gaaban oo sharraxaya, dabadeed koobitaankaas ku samee embedding iyo weydiin.

  • Sida loo sameeyo koobitaanno macnaha guud leh: ku dar macnaha dukumeentiga waalidka ah si tirakoobyada isu eg loo kala garto.

  • Goorta lagu tiirsanaan karo koodh iyo noocyada Pydantic: marka nuxurka eray-eray ahi muhiim yahay, isku dar koodh gaar ah iyo/ama nooc Pydantic ah iyo wicitaannada LLM (Qaabka Luuqadda Ballaaran) si la isku halayn karo.

Dhisidda xalal RAG oo gaar loo habeeyey

Aasaaska

Nidaamyada RAG waxay awood siiyaan waxyaabo u dhexeeya bot-yada taageerada iyo kaaliyeyaasha aqoonta gudaha.

Gudaha nidaamka, sida caadiga ah waxaad:

  1. Qaybo u kala jebisaa dukumeentiyadaada isha ah

  2. Embedding u samaysaa qayb kasta oo ku jirta meel vector ah

  3. Soo ceshataa qaybaha top-K marka weydiintu timaaddo

  4. Samaysaa jawaab ku salaysan qaybahaas

Qalabka caanka ah—LangChain, LlamaIndex iyo Filestore-ka OpenAI—wuxuu tallaabooyinkaas ka dhigaa kuwo aad u sahlan. Laakiin habsocodyada dhabta ah waxaad la kulmi doontaa xog aan ahayn oo keliya qoraal cufan, taas oo RAG-ga aasaasiga ahi ku adkaan karto. Qaybaha soo socda, waxaan ku muujinaynaa tusaalooyin dhab ah oo caqabadaha xogta ah, annagoo xalka si tartiib ah u dhisayna marka kakanaantu korodho.

Markay arrimuhu sii adkaadaan

  1. Marka xogtaadu aanay qoraal keliya ahayn (taasina dhab ahaan waa wax caadi ah)

Ka fiirso qaybtan xogta ah ee ku jirta xaalad ciyaareed:

JSON

{ "Attack": { "Range": { "default": 5, "with_Draconic_Ascension": 5.5, }, "Speed": { "default": "2 seconds", "with_Draconic_Ascension": "2.2 seconds", }, "Damage": { "default": 10, "with_Draconic_Ascension": 12, } }} 

Embeddings-ku waxay shaqeeyaan iyadoo ay ugu wacan tahay xiriirrada la bartay ee ereyada, macnahooda semaantik ah iyo naxwahooda. Xogta kore waxay isku dartay qoraal iyo tirooyin; marka laga saaro xaaladdan gaarka ah, tirooyinku wax xiriir ah lama laha ereyada. Sidaas darteed, qaybtan xogtu waxay ku dhowdahay inay tahay isku-dar ereyo waxoogaa wax sharraxaya oo ay ku xigaan tirooyin aan nidaam lahayn.

Tani dhib ma noqon lahayn haddii ay ahaan lahayd nooca keliya ee xogta aan hayno, waayo weli waxaan xogta ku soo ceshan karnaa embeddings-ka ereyada kooban ee wax sharraxaya ee jira (ama si fudud u adeegsan karnaa text-to-sql). Hase yeeshee, maxaa dhacaya haddii qaybtani ku dhex qarsoon tahay qaybo badan oo qoraal cufan ah oo isla ereyadan lagu isticmaalay? Tusaale ahaan:

JSON

{"Draconic_Ascension": { "description": "Transform into dragon form. Attack range and speed are increased by 10%, damage is boosted by 20%.", "details": { "activation_conditions": "Can only be activated when HP is below 50%or Fury meter is full.", "visual_effects": "Wings unfurl, scales shimmer with embers, voice lines change to echoing growls.", "lore": "An ancient bloodline awakens. The bearer of the mark channels the soul of the last Flamewing Wyrm, becoming a living storm of fire and fury." } }}

Hadda qiyaas inaan rabno inaan soo ceshanno “What is the attack range with Draconic Ascension?” Waxay u badan tahay inaynaan soo ceshan karin qaybta khusaysa ee aan rabno, waayo waxay ku dhex luntay qaylada qaybaha kale ee leh isla ereyada muhiimka ah.

Dhibaatada asaasiga ahi waa inaanan si fiican u kala saari karin qaybahan xogta ah, inkastoo ay xambaarsan yihiin noocyo kala duwan oo macluumaad ah oo ku saabsan isla mowduuca. Ma jirtaa si aan xogtaas u hodminno ama u wanaajinno? Dabcan way jirtaa:smile:

  1. Xogtaada hodmi adigoo koobaya—haa, si sax ah ayaad u akhriday

Halkii aan qaybta lafteeda si toos ah embedding ugu samayn lahayn, marka hore waxaan samayn karnaa koobitaan sharraxaya waxa xogtu ku saabsan tahay, dabadeed koobitaankaas ayaan embedding iyo soo-celin ku samayn karnaa. Tallaabada samaynta jawaabta, weli waxaan adeegsan lahayn xogta asalka ah ee koobitaanka ku xiran.

Sidaas darteed, labada tusaale ee qaybaha ah ee kore waxaan u samayn lahayn koobitaanno sidan oo kale ah:

  1. Tirakoobyada baaxadda, xawaaraha iyo waxyeellada weerarka (caadiga ah iyo marka la adeegsado Draconic Ascension).

  2. Sharraxaadda iyo faahfaahinta Draconic Ascension, oo ay ku jiraan shuruudaha hawlgelinta, saamaynta muuqaalka iyo sooyaalka sheekada.

Dabadeed weydiinta ayaan sidoo kale ballaarinaynaa si ay koobitaanka ula “jaanqaaddo”. Tusaale ahaan, waxaan “What is the attack range with Draconic Ascension?” u beddeli lahayn “What is the statistics of attack range with Draconic Ascension?” Tani si gaar ah ayay muhiim u tahay marka weydiinta soo-celintu ka timaaddo isticmaaleyaal aan farsamo-yaqaanno ahayn oo wax ku weydiinaya luuqad bani’aadam oo ~~aan nidaam lahayn~~ caadi ah, waayo ugu dambayn ma aha aqoontooda ama danahooda sida RAG u shaqeeyo si loo kordhiyo saxnaanta iyo heerka soo-celinta.

Jaantus muujinaya marka arrimuhu sii adkaadaan.

  1. Waxyaabaha ha ka saarin macnahooda guud (waa talo guud oo nolosha khusaysa)

Xaaladda xigta waa la tacaalidda qaybo xogeed aad u badan oo isu eg, sida kuwa hoose:

Plain Text

# Chunk one{ "Attack": { "Range": { "default": 9, }, ... }}# Chunk two{ "Attack": { "Range": { "default": 6, }, ... }}# Chunk three{ "Attack": { "Range": { "default": 7, }, ... }}

Haddii aan isla habkii sii wadno, qiyaas inaad weydiiso “what is character X’s attack range?” Koobitaannada aan hadda samaynay waxay naga dhigi lahaayeen inaan ciyaarno qiyaas ku dhisan nasiib, waayo iyaguna aad bay isugu ekaan lahaayeen. Haddaba sideen u kala saari karnaa?

Jawaabta fudud waa: ku dar macnaha guud. Waxaan qaybta xogta si fudud ugu dari karnaa tixraac ku saabsan dukumeentigeeda waalidka ah, tusaale ahaan {”character”: “X”} xaaladdan. Markaas waxaan si sax ah u soo ceshan karnaa xogta ku habboon jilaha X, xitaa marka aan hayno isla xogta jilayaasha Y iyo Z.

Hase yeeshee, hab ka wanaagsan oo si guud loo adeegsan karo waa in qaybta loo sameeyo koobitaan macnaha guud xambaarsan. Taas oo ah, halkii aan koobitaan uga samayn lahayn qaybta xogta oo keliya, waxaan gelin karnaa dukumeentigeeda waalidka ah iyo qaybta labadaba si loo sameeyo koobitaan guud oo macne leh, kaas oo sharraxaya sida qaybtani ugu habboon tahay dukumeentiga waalidka ah, tusaale ahaan:

  1. Qaybtani waxay bixisaa tirakoob faahfaahsan oo ku saabsan … ee jilaha X. Qaybtani waxay dukumeentiga buuxa ugu habboon tahay iyadoo muujinaysa awoodda X ee xawaaraha weerarka…

  2. Qaybtani waxay bixisaa tirakoob faahfaahsan oo ku saabsan … ee jilaha Y. Qaybtani waxay dukumeentiga buuxa ugu habboon tahay iyadoo muujinaysa tirakoobyada Y ee awooddeeda gaarka ahi xoojiso…

  3. Qaybtani waxay bixisaa tirakoob faahfaahsan oo ku saabsan … ee jilaha Z. Qaybtani waxay dukumeentiga buuxa ugu habboon tahay iyadoo muujinaysa tirakoobyada Z ee si fiican ugu habboon doorka gaashaanka kooxda marka la ciyaarayo kulamada kooxeed…

Habkan (oo qayb ahaan laga dhiirrigeliyey Anthropic) wuxuu tusaalaha kore ugu muuqan karaa mid ka badan intii loo baahnaa, laakiin aad buu waxtar ugu leeyahay qaybaha si khaldan loo fahmi karo marka “macnaha guud laga saaro”; sidoo kale wuxuu bixiyaa hab mideysan oo dhammaan qaybaha u shaqeeya, isaga oo habsocodka injineernimada nidaamsan ilaalinaya.

Jaantus muujinaya marka arrimuhu sii adkaadaan.

  1. Marka aad u baahan tahay inaad noqoto ~~qof wax walba xakameeya~~ mid aad u taxaddar badan

Caadi ahaan xogta waxaan ku helnaa qaybo dhammaystiran, dabadeedna qaybo yaryar ayaan ugu jebinnaa nidaamka RAG. Tusaalahan waxaan ku muujinaynaa wax yar oo ka duwan—xog qaybo loo kala jebiyey, laakiin qaybo xun ah—waa qaybo aan nidaam lahayn oo laga soo jaray qayb macquul ah, kuwaas oo dhab ahaan u baahan in dib la isugu geeyo. Qayb macquul ahi waa qayb nuxur ah oo si dabiici ah ay tahay inay isku meel ahaato, sida qayb-hoosaad dukumeenti ama tuduc isku xiran.

Jaantus muujinaya marka arrimuhu sii adkaadaan.

Isku-daygeennii koowaad wuxuu ahaa inaan xogta oo dhan gelinno wicitaan LLM (Qaabka Luuqadda Ballaaran), kana codsanno inuu sida uu ku habboon u arko u kooxeeyo, dabadeed soo celiyo nuxurka la kooxeeyey. LLM (Qaabka Luuqadda Ballaaran) waa inuu arrintan ku fiicnaadaa, sax? Hagaag, haa iyo maya labadaba.

Waxaan marar kale oo badan ogaanay in LLM (Qaabka Luuqadda Ballaaran) uu u janjeero inuu caajis u shaqeeyo oo aan la isku hallayn karin marka la rabo nuxurka oo dhan, si sax ahna loo soo celiyo, gaar ahaan marka macnaha la geliyey dheer yahay. Taasina si buuxda ayay macno u samaynaysaa. Laakiin taasi waxay burinaysay adeegsigan gaarka ah, waayo waxaan u baahanahay nuxurka saxda ah eray-eray—koobitaan ma jiro, qayb ka mid ah nuxurka asalka ahna lama dhaafi karo. Wax faahfaahin ah kama tegi karno.

Dabcan, dhinaca “haa” wuxuu ahaa inuu si heer sare ah u fahmay macnaha semaantiga ah iyo qaab-dhismeedka qaybaha jajaban. Waa haddii aanu diidin inuu nuxurka saxda ah dib u soo xigto. Wallee hoogaye:/

Sideen haddaba uga faa’iidaysan karnaa waxa LLM (Qaabka Luuqadda Ballaaran) ku fiican yahay, annagoo ka fogaanayna meelaha aanu isku hallayn lahayn? Waxaan u noqonay saaxiibkeennii hore ee wanaagsanaa, koodhka (waxaa loola jeedaa hawl Python oo gaar loo habeeyey). Iyo nooc pydantic ah oo “aan ka sii fududaan karin”. Xalku waa kan:

  • Dulmar qaybaha adigoo ilaalinaya qaybta macquulka ah ee hadda la ururinayo

  • Qayb kasta markaad gaadho, weydii LLM (Qaabka Luuqadda Ballaaran): does this section belong to the current logical chunk, answer yes or no (following the pydantic model)?

  • Haddii jawaabtu haa tahay, qaybta ku lifaaq qaybta macquulka ah; haddii ay maya tahay, soo saar qaybta macquulka ah ee hadda jirta maadaama ay dhammaystiran tahay, dabadeed qayb cusub ku bilow qaybtaas.

Jaantus muujinaya marka arrimuhu sii adkaadaan.

Dabcan, halkan waxaan adeegsanaynaa tokens wax yar ka badan inta lagu isticmaali lahaa hal mar oo nuxurka oo dhan ah, laakiin adeegsigan gaarka ah oo mudnaanta koowaad ay tahay in nuxurka saxda ah la hayo, kharashka dheeraadka ah ee yar wuu u qalmaa.

Kani waa xal aad u fudud, laakiin wuxuu raacayaa mabda’ muhiim ah: marka saxnaan adag loo baahan yahay, ma doonayno inaan ku tiirsanaanno LLM (Qaabka Luuqadda Ballaaran) oo keliya, maadaama uu ugu dambayn ku shaqeeyo itimaal.

Koodhka ama hawlaha gaarka loo sameeyey iyo noocyada pydantic ayaa loo adeegsan karaa in lagu helo natiijo la saadaalin karo oo la isku hallayn karo, iyadoo weli si buuxda looga faa’iidaysanayo awoodaha LLM (Qaabka Luuqadda Ballaaran).

Gunaanad

Dhisidda xal AI jiil-sameeye ah waa caqabad injineernimo la mid ah sida ay u tahay caqabad AI. Waxaan rajaynaynaa in tusaalooyinkani kugu dhiirrigeliyeen inaad wajahdo caqabadahaaga gaarka ah. Si aad wax badan uga akhrido xalalka AI jiil-sameeye ee injineernimada mudnaanta siiya, eeg qoraalkayaga baloogga ee ku saabsan naqshadaynta nidaam wakiillo leh oo router-ku salaysan yahay.

Qoraa

Cynthia Yu