મોટાભાગના AI એજન્ટો પાસે ઉત્તમ યાદશક્તિ (recall) હોય છે પરંતુ શું યાદ રાખવું જોઈએ તે અંગેની નિર્ણયશક્તિ (judgment) ખરાબ હોય છે. તેઓ હજારો પેજ ગ્રહણ કરી શકે છે, છતાં તેમના પોતાના સંદર્ભમાં ડૂબી જાય છે કારણ કે કોઈએ તેમને બિનજરૂરી ભાગો ભૂલવાનું શીખવ્યું નથી. Knowledge and Memory Management version 0.0.2 બરાબર આ સમસ્યાના ઉકેલ માટે બનાવવામાં આવ્યું છે. તે માત્ર એક નાનો પેચ નથી. તે એજન્ટ જે જાણે છે તેને કેવી રીતે સંગ્રહિત કરે છે, ટ્રાન્સપોર્ટ કરે છે અને પ્રાથમિકતા આપે છે તેના વિશે ફરીથી વિચારે છે.

મેમરીની સમસ્યા

એજન્ટો નિયમિતપણે ટેક્સ્ટના દરેક ટુકડાને પવિત્ર માને છે. એક કાચી વેબ પેજ તેના નેવિગેશન મેનૂ, કૂકી બેનર્સ અને ફૂટર લિંક્સ સાથે સ્ટોરેજમાં નાખી દેવામાં આવે છે. વિડિયો ટ્રાન્સક્રિપ્ટમાં દરેક “um,” ટાઈમસ્ટેમ્પ અને સ્પોન્સર રીડ અકબંધ આવે છે. એક લેખમાં વાસ્તવિક સમજણ કરતાં વધુ એડ-કોપી માર્કઅપ હોઈ શકે છે. જ્યારે રિટ્રીવલ (retrieval) થાય છે, ત્યારે સિસ્ટમ સિગ્નલ શોધવા માટે આ બધો નોઈઝ (noise) તપાસે છે. આ બગાડ બે જગ્યાએ દેખાય છે: કચરા સાથે તમારું કોન્ટેક્સ્ટ વિન્ડો (context window) નાનું થઈ જાય છે, અને તમારું ઇન્ફ્રાસ્ટ્રક્ચર બિલ વધે છે કારણ કે તમે અર્થહીન ટેક્સ્ટને પ્રોસેસ અને એમ્બેડ કરવા માટે ચૂકવણી કરી રહ્યા છો.

સ્કેલિંગની સમસ્યા પણ એટલી જ નિરાશાજનક છે. મોટાભાગના પ્રારંભિક તબક્કાના એજન્ટો હાર્ડકોડેડ પાથ દ્વારા સિંગલ મશીન સાથે જોડાયેલા હોય છે. પ્રોજેક્ટને તમારા લેપટોપથી સર્વર પર, અથવા એક VPS થી બીજા પર લઈ જાઓ, અને તમે બ્રોકન રેફરન્સને ઠીક કરવા માટે કોન્ફિગરેશન ફાઇલોમાં grepping કરવામાં આખું બપોર વિતાવી દો છો. એજન્ટ સોફ્ટવેર રહેવાને બદલે એક નાજુક આર્ટ ઇન્સ્ટોલેશન બની જાય છે જે ફક્ત એક જ રૂમમાં અસ્તિત્વ ધરાવી શકે છે.

V0.0.2 માં શું બદલાયું

આ રિલીઝ બંને સમસ્યાઓનો સીધો સામનો કરે છે. તે પોર્ટેબલ પાથિંગ સ્કીમ અને એક યુનિફાઇડ સમરાઇઝેશન પાઇપલાઇન રજૂ કરે છે જે મેમરી સુધી પહોંચતા પહેલા જ જ્ઞાનને સાફ કરે છે. પરિણામ એ એજન્ટ છે જેને ખસેડવો સરળ છે અને ચલાવવો સસ્તો છે.

તમે તમારા ઇન્ફ્રાસ્ટ્રક્ચર સાથે લડવાનું બંધ કરો છો. તમે મર્યાદિત કોન્ટેક્સ્ટમાં ફૂલેલા દસ્તાવેજો ભરવાનું બંધ કરો છો. એજન્ટ ફક્ત વધુ સારી રીતે યાદ રાખે છે.

$AGENT_HOME સાથે ડિઝાઇન દ્વારા પોર્ટેબલ

સૌથી વ્યવહારુ ફેરફાર $AGENT_HOME એન્વાયરમેન્ટ વેરિયેબલનો પરિચય છે. સિસ્ટમ જે પણ પાથને સ્પર્શે છે—knowledge bases, working memory, cached summaries, session logs—તે આ રૂટના સાપેક્ષમાં રિઝોલ્વ થાય છે. તેનો અર્થ એ છે કે તમે કોડની એક લાઇનને અડક્યા વગર તમારી આખી એજન્ટ ડિરેક્ટરી ગમે ત્યાં ખસેડી શકો છો.

સામાન્ય માઇગ્રેશનનો વિચાર કરો. ગઈકાલે તમારો એજન્ટ /srv/ai-agent પર DigitalOcean ડ્રોપલેટ પર હતો. આજે તમે તેને લોકલી ચલાવવા માંગો છો અથવા તમારા સાથીદારને સોંપવા માંગો છો. ભૂતકાળમાં, તમે JSON કોન્ફિગ્સ, Python સ્ક્રિપ્ટ્સ અને શેલ રેપર્સમાં વિખરાયેલા હાર્ડકોડેડ એબ્સોલ્યુટ પાથ શોધી કાઢતા હતા. તમે ડઝનબંધ ફાઇલોમાં sed નો ઉપયોગ કરીને, આશા સાથે દરેક રેફરન્સ પકડવાની કોશિશ કરતા હતા. વર્ઝન 0.0.2 સાથે, તમે તે બધું જ છોડી શકો છો. તમે ફોલ્ડર કોપી કરો છો, export AGENT_HOME=/your/path સેટ કરો છો, અને રન કરો છો. ઇન્જેશન સ્ક્રિપ્ટ્સ, મેમરી ઇન્ડેક્સ અને રિટ્રીવલ લેયર બધું આપમેળે એલાઈન થઈ જાય છે કારણ કે તેઓ પહેલેથી જ જાણે છે તેમ માની લેવાને બદલે ઓપરેટિંગ સિસ્ટમને પૂછે છે કે હોમ ક્યાં છે.

આ પોર્ટેબિલિટી સુવિધાથી પણ વધુ મહત્વની છે. તે તમારા સેટઅપને રિપ્રોડ્યુસિબલ (reproducible) બનાવે છે. તમે તમારા મશીન પર જ કામ લાગે તેવા પાથથી રિપોઝિટરીને બગાડ્યા વગર વર્ઝન કંટ્રોલમાં તમારી નોલેજ ડિરેક્ટરીને ટ્રેક કરી શકો છો. એક સાથીદાર રિપો ક્લોન કરે છે, $AGENT_HOME ને તેમના પોતાના ફાઇલ સિસ્ટમ પર પોઇન્ટ કરે છે, અને તેમનો પોતાનો ડેટા ઇન્જેસ્ટ કરે છે. તમારું CI પાઇપલાઇન દરેક એન્વાયરમેન્ટ માટે કોન્ફિગ્સ ફરીથી લખ્યા વગર એક નવો એજન્ટ શરૂ કરી શકે છે, એક વેરિયેબલ સેટ કરી શકે છે અને વર્તનને વેલિડેટ કરી શકે છે.

જો તમે એજન્ટને systemd સર્વિસ તરીકે ચલાવો છો, તો વેરિયેબલને સર્વિસ યુનિટમાં ઉમેરો. જો તમે તેને કન્ટેનરાઇઝ કરો છો, તો તેને તમારા Dockerfile અથવા compose ફાઇલમાં પાસ કરો. જો તમે મલ્ટિપલ શેલ્સમાં કામ કરો છો, તો તેને તમારા .bashrc અથવા .zshrc માં મૂકો જેથી તે કાયમી રહે. સેટઅપ જાણીજોઈને બોરિંગ રાખવામાં આવ્યું છે કારણ કે ઇન્ફ્રાસ્ટ્રક્ચર બોરિંગ હોવું જોઈએ.

ત્રણ સ્ત્રોત, એક ક્લીનઅપ પાઇપલાઇન

સિસ્ટમ ત્રણ ચોક્કસ ચેનલોમાંથી જ્ઞાન ગ્રહણ કરે છે:

  • વેબ પેજ. આ HTML બોઇલરપ્લેટમાં લપેટાયેલા આવે છે. વાસ્તવિક સામગ્રી માર્કઅપ, નેવિગેશન અને કોમેન્ટ સેક્શનના ત્રણ હજાર શબ્દોની અંદર છુપાયેલા ત્રણસો શબ્દો હોઈ શકે છે.
  • વિડિયો ટ્રાન્સક્રિપ્ટ્સ. સ્પીચ-ટુ-ટેક્સ્ટ આઉટપુટ જાણીતી રીતે બિનજરૂરી રીતે લાંબુ (verbose) હોય છે. ફિલર્સ, પુનરાવર્તનો, ટાઈમસ્ટેમ્પ અને વિષય બહારની વાતો એક લો-ડેન્સિટી સ્ટ્રીમ બનાવે છે જે કોઈ સમજણ આપ્યા વગર ટોકન્સનો વપરાશ કરે છે.
  • લેખ. ફોર્મેટમાં ઘણો તફાવત હોય છે. કેટલાક સ્વચ્છ ટેક્સ્ટ પ્રકાશિત કરે છે. અન્ય જાહેરાતો, ન્યૂઝલેટર સાઇનઅપ બોક્સ અને સોશિયલ એમ્બેડ્સ સાથે વાંચવાના અનુભવને ખરાબ કરે છે.

વર્ઝન 0.0.2 આને સંભાળવા માટે અલગ અલગ સાઇલો (silos) તરીકે ગણતું નથી. તેના બદલે, તે વર્કિંગ મેમરીમાં પ્રવેશતા પહેલા ત્રણેયને સમાન સમરાઇઝેશન લેયર (summarization layer) દ્વારા પસાર કરે છે. આ લેયર દાવાઓ (claims), પ્રક્રિયાઓ (procedures), ડેટા પોઈન્ટ્સ અને સંબંધોને નિષ્કર્ષિત કરે છે. તે એવા અવાજ (noise) ને દૂર કરે છે જેને માણસો કુદરતી રીતે અવગણી દેતા હોય.

સમરાઇઝેશન શા માટે સ્કેલિંગ વ્યૂહરચના છે

સમરાઇઝેશનને એક લક્ઝરી ફીચર તરીકે જોવાની વૃત્તિ છે, જે હોય તો સારું પણ અનિવાર્ય નથી. તે ખોટું છે. લેંગ્વેજ-મોડેલ એજન્ટ માટે, સમરાઇઝેશન એ સ્કેલિંગ માટેની જરૂરિયાત છે.

કોન્ટેક્સ્ટ વિન્ડોઝ (Context windows) ની મર્યાદાઓ હોય છે. રિટ્રીવલ બજેટ (Retrieval budgets) ની કિંમત હોય છે. કૂકી બેનર અથવા વીડિયો સ્પોન્સર રીડ પર ખર્ચાયેલ દરેક ટોકન એ ટોકન છે જે તમે રીઝનિંગ (reasoning) પર ખર્ચ કરી શકતા નથી. જ્યારે તમારો એજન્ટ પ્રતિસાદ તૈયાર કરે છે, ત્યારે તેની આસપાસ વધુ ટેક્સ્ટ હોવાથી તે વધુ સ્માર્ટ બનતું નથી. તે તેની આસપાસ યોગ્ય ટેક્સ્ટ હોવાથી સ્માર્ટ બને છે.

ઇન્જેસ્ટિયન (ingestion) સમયે નોઈઝ (noise) ને દૂર કરીને, સિસ્ટમ સિગ્નલને કોમ્પ્રેસ કરે છે. તમારો એજન્ટ સમાન કોન્ટેક્સ્ટ બજેટની અંદર સ્ત્રોતોના વ્યાપક સેટનો ઉપયોગ કરી શકે છે. જ્યાં પહેલા બે કાચા દસ્તાવેજો (raw documents) માટે મુશ્કેલી પડતી હતી, ત્યાં દસ નિસ્યંદિત (distilled) દસ્તાવેજો સમાઈ શકે છે. આ ઘનતા જ એજન્ટને પાંચ સ્ત્રોતોનું સંચાલન કરતા ટોય પ્રોટોટાઇપમાંથી સેંકડો સ્ત્રોતોનું સંચાલન કરતા પ્રોડક્શન સિસ્ટમ સુધી સ્કેલ કરવામાં મદદ કરે છે. મેમરી ફૂટપ્રિન્ટ મેનેજેબલ રહે છે. રિટ્રીવલ ક્વોલિટી સુધરે છે કારણ કે બિનજરૂરી ઓવરલેપ દૂર થઈ જાય છે. ટોકન ખર્ચ ઘટે છે કારણ કે તમે બોઈલરપ્લેટ (boilerplate) ને એમ્બેડ અને ક્વેરી કરવા માટે ચૂકવણી કરવાનું બંધ કરી દીધું છે.

આ ન્યુઆન્સ (nuance) ને ફેંકી દેતી આક્રમક લોસી કોમ્પ્રેસન (lossy compression) વિશે નથી. તે પાઇપલાઇનમાં એન્કોડ કરેલા એડિટોરિયલ જજમેન્ટ વિશે છે. સમરી ટેકનિકલ વિશિષ્ટતાઓ, નામિત એન્ટિટીઝ (named entities), કારણભૂત લિંક્સ અને સૂચનાત્મક પગલાંઓને જાળવી રાખે છે. તે ફોર્મેટિંગના કચરા અને વાતચીતની વધારાની વિગતોને દૂર કરે છે.

શરૂઆત કેવી રીતે કરવી

સેટઅપ જાણીજોઈને ન્યૂનતમ રાખવામાં આવ્યું છે કારણ કે સિસ્ટમ તમારા કામમાં અવરોધ ન બને તે રીતે બનાવવામાં આવી છે.

તમારું ટર્મિનલ ખોલો અને રૂટ પાથ સેટ કરો:

export AGENT_HOME=/your/path

આ લાઇનને તમારા શેલ પ્રોફાઇલમાં ઉમેરીને તેને કાયમી બનાવો, અથવા તમારા એજન્ટને ચલાવતા ઓર્કેસ્ટ્રેશન લેયર (orchestration layer) માં તેને ઇન્જેક્ટ કરો. નીચેની ડિરેક્ટરી સ્ટ્રક્ચર સુસંગત રાખો. એજન્ટ તેની ફોલ્ડર્સ—પછી ભલે તમે તેને knowledge/, memory/, summaries/ અથવા બીજું કંઈપણ નામ આપો—તે રૂટની સાપેક્ષમાં હોવાની અપેક્ષા રાખે છે. એકવાર વેરિએબલ લાઇવ થઈ જાય પછી, એજન્ટને તમારા વેબ પેજ, ટ્રાન્સક્રિપ્ટ્સ અને લેખો તરફ નિર્દેશિત કરો. ઇન્જેસ્ટિયન અને સમરાઇઝેશન પાઇપલાઇન બાકીનું કામ સંભાળી લેશે.

જો તમે અગાઉના વર્ઝનમાંથી માઇગ્રેટ કરી રહ્યા હોવ, તો પ્રક્રિયા એટલી જ સરળ છે. તમારા હાલના ડેટાને નવા $AGENT_HOME હાયરાર્કીમાં ખસેડો, વેરિએબલ અપડેટ કરો અને ખાતરી કરો કે એજન્ટ પાથને યોગ્ય રીતે રિઝોલ્વ કરે છે. કોઈ માઇગ્રેશન સ્ક્રિપ્ટ્સ નથી. કોઈ ડેટાબેઝ સ્કીમા બમ્પ નથી. ડિસ્ક પર એજન્ટ ક્યાં રહે છે તેના માટે ફક્ત એક જ સિંગલ સોર્સ ઓફ ટ્રુથ (single source of truth).

મુખ્ય તારણ

વધુ સારું મેમરી મેનેજમેન્ટ એ વધુ ડેટા ભેગો કરવા વિશે નથી. તે તમારી પાસે પહેલેથી જ રહેલા ડેટાને ક્યુરેટ (curate) કરવા વિશે છે. વર્ઝન 0.0.2 પોર્ટેબિલિટી અને સમરાઇઝેશનને afterthought (પછીથી વિચારવા જેવી બાબત) ને બદલે પ્રથમ-ક્રમની ચિંતા તરીકે ગણે છે. તમે કંઈપણ તોડ્યા વિના તમારા એજન્ટને મશીનો વચ્ચે ખસેડવાની સ્વતંત્રતા મેળવો છો, અને તમે એવા કોન્ટેક્સ્ટ વિન્ડોની કાર્યક્ષમતા મેળવો છો જેમાં ખરેખર કોન્ટેક્સ્ટ હોય છે.

તમારી હોમ ડિરેક્ટરી સેટ કરો. એજન્ટને વાસ્તવિક સ્ત્રોતો આપો. સિસ્ટમને કચરો દૂર કરવા દો. તમે પાથ એરર ડિબગ કરવામાં ઓછો સમય અને નોઈઝ પ્રોસેસ કરવામાં ઓછા પૈસા ખર્ચશો, અને એજન્ટે ખરેખર જે શીખ્યું છે તેનો ઉપયોગ કરવામાં વધુ સમય વિતાવશો.


સ્ત્રોત: https://dev.to/mage0535/thinking-1-analyze-the-request-12go

કમ્યુનિટી: https://t.me/GyaanSetuAi