ഒന്നും മനസ്സിലാകാത്ത അവസ്ഥയിൽ നിന്നും ഒരു RAG ആപ്പ് നിർമ്മിക്കുന്നത് വരെ
എന്റെ സ്വന്തം NLP നോട്ട്സിലെ 31 പേജുകൾ വായിച്ച് ഞാൻ ഇന്നലെ സമയം ചെലവഴിച്ചു.
എനിക്ക് ഒന്നും മനസ്സിലായില്ല.
പ്രശ്നം എന്നിലാണെന്നാണ് ഞാൻ കരുതിയത്. പക്ഷേ അതല്ലായിരുന്നു. പ്രശ്നം എന്റെ രീതിയിലായിരുന്നു. നോട്ട്സ് വായിക്കുന്നത് പഠനമല്ല. ഒരു തുടക്കക്കാരന് വേണ്ടിയല്ല, മറിച്ച് ഒരു വിദഗ്ദ്ധന് വേണ്ടിയുള്ളതായിരുന്നു എന്റെ നോട്ട്സുകൾ.
ഞാൻ എന്റെ രീതി മാറ്റി. ഞാൻ വായിക്കുന്നത് നിർത്തി. പകരം, ഞാൻ ചോദ്യങ്ങൾ ചോദിച്ചു തുടങ്ങി. ലളിതമായ ഉദാഹരണങ്ങൾ ഉപയോഗിച്ചു. ഒരു ആശയം മനസ്സിലാക്കുന്നത് വരെ സാങ്കേതിക പദങ്ങൾ ഉപയോഗിക്കാൻ ഞാൻ വിസമ്മതിച്ചു.
ദിവസാവസാനം, ഞാൻ ഒരു RAG ആപ്പ് നിർമ്മിച്ചു. NLP-യുടെ നാല് തൂണുകൾ ഞാൻ എങ്ങനെ പഠിച്ചു എന്ന് താഴെ നൽകുന്നു.
- Bag of Words കമ്പ്യൂട്ടറുകൾക്ക് ഗണിതം മാത്രമേ മനസ്സിലാകൂ. ടെക്സ്റ്റ് പ്രോസസ്സ് ചെയ്യാൻ, നിങ്ങൾ വാക്കുകളെ സംഖ്യകളാക്കി മാറ്റണം.
ഇമെയിലുകളെ സ്പാം (spam) ആണോ അല്ലയോ എന്ന് തരംതിരിക്കണമെന്ന് സങ്കൽപ്പിക്കുക. നിങ്ങളുടെ ഇമെയിലുകളിലെ ഓരോ വാക്കും നിങ്ങൾ പട്ടികപ്പെടുത്തുന്നു. ഓരോ വാക്കും എത്ര തവണ വരുന്നു എന്ന് നിങ്ങൾ എണ്ണുന്നു. ഇത് ഒരു ഇമെയിലിനെ സംഖ്യകളുടെ ഒരു നിരയാക്കി മാറ്റുന്നു.
ഇതിലെ പോരായ്മ എന്താണ്? ഇത് വാക്കുകളുടെ ക്രമം അവഗണിക്കുന്നു. "Dog bites man", "man bites dog" എന്നിവ ഈ രീതിയിൽ ഒന്നുതന്നെയായി തോന്നും.
- TF-IDF Bag of Words എല്ലാ വാക്കുകളെയും ഒരുപോലെ പരിഗണിക്കുന്നു. എന്നാൽ "the" എന്ന വാക്ക് "viagra" എന്ന വാക്ക് പോലെ പ്രധാനപ്പെട്ടതല്ല.
TF-IDF രണ്ട് നിയമങ്ങൾ ഉപയോഗിക്കുന്നു:
- Term Frequency (TF): ഒരു ഇമെയിലിൽ ഒരു വാക്ക് എത്ര തവണ വരുന്നു എന്നത്.
- Inverse Document Frequency (IDF): എല്ലാ ഇമെയിലുകളിലും ഒരു വാക്ക് എത്രത്തോളം അപൂർവ്വമാണ് എന്നത്.
ഈ ഗണിതരീതി "the" പോലുള്ള അനാവശ്യ വാക്കുകളുടെ പ്രാധാന്യം കുറയ്ക്കുകയും പ്രധാനപ്പെട്ടതും അപൂർവ്വവുമായ വാക്കുകളെ എടുത്തു കാണിക്കുകയും ചെയ്യുന്നു.
- Embeddings "money", "cash" എന്നിവ തമ്മിൽ ബന്ധമില്ലെന്നാണ് Bag of Words കരുതുന്നത്. Embeddings ഇത് പരിഹരിക്കുന്നു.
ഒരു വലിയ ഭൂപടം സങ്കൽപ്പിക്കുക. ആ ഭൂപടത്തിലെ ഓരോ ബിന്ദുവും (dot) ഓരോ വാക്കാണ്. സമാനമായ അർത്ഥമുള്ള വാക്കുകൾ പരസ്പരം അടുത്തായിരിക്കും ഇരിക്കുന്നത്. "Money", "cash" എന്നിവ അയൽവാസികളാണ്. "Banana" എന്നത് വളരെ അകലെയാണ്.
ഒരു വാക്ക് ഏത് വാക്കുകൾക്കൊപ്പമാണ് വരുന്നത് എന്ന് നോക്കിയാണ് കമ്പ്യൂട്ടർ ഈ സ്ഥാനങ്ങൾ പഠിക്കുന്നത്. "money", "cash" എന്നിവ രണ്ടും "bank", "pay" എന്നിവയുടെ അടുത്ത് വരുന്നുണ്ടെങ്കിൽ, കമ്പ്യൂട്ടർ അവയെ പരസ്പരം അടുത്തായി പ്രതിഷ്ഠിക്കുന്നു.
- RAG (Retrieval-Augmented Generation) ഇവിടെയാണ് എല്ലാം ഒത്തുചേരുന്നത്.
നിങ്ങളുടെ ഫയലുകളിലെ ഓരോ നോട്ട്സും ഭൂപടത്തിലെ ഒരു ബിന്ദു ആണെങ്കിൽ, ഏറ്റവും അടുത്തുള്ള ബിന്ദുക്കൾ കണ്ടെത്തുന്നതിലൂടെ നിങ്ങൾക്ക് ഉത്തരങ്ങൾ കണ്ടെത്താനാകും.
RAG പ്രക്രിയ:
- ഒരു ചോദ്യത്തെ ഒരു ബിന്ദുവായി മാറ്റുക.
- ഭൂപടത്തിലെ ഏറ്റവും അടുത്തുള്ള നോട്ട്-ബിന്ദുക്കൾ കണ്ടെത്തുക.
- ആ നോട്ട്സ് ഒരു AI-ക്ക് നൽകുക.
- ആ നോട്ട്സ് മാത്രം ഉപയോഗിച്ച് ഉത്തരം നൽകാൻ AI-യോട് ആവശ്യപ്പെടുക.
ഇത് AI ഊഹങ്ങൾ പറയുന്നതോ തെറ്റായ വിവരങ്ങൾ നൽകുന്നതോ തടയുന്നു. നിങ്ങളുടെ യഥാർത്ഥ ഡാറ്റ ഉപയോഗിക്കാൻ ഇത് AI-യെ നിർബന്ധിക്കുന്നു.
ഈ ഘട്ടങ്ങൾ ഉപയോഗിച്ചാണ് ഞാൻ എന്റെ ആപ്പ്, Synapse നിർമ്മിച്ചത്. ഒരു ദിവസം കൊണ്ട് ഞാൻ പൂജ്യത്തിൽ നിന്ന് പ്രവർത്തിക്കുന്ന ഒരു സിസ്റ്റത്തിലേക്ക് എത്തിച്ചേർന്നു.
പാഠം: വായിക്കുന്നത് നിർത്തുക. ചോദിച്ചു തുടങ്ങുക. ഒരു ആശയത്തെ ലളിതമായ ഒരു ഉപമയിലൂടെ വിശദീകരിക്കാൻ നിങ്ങൾക്ക് കഴിയുന്നില്ലെങ്കിൽ, നിങ്ങൾക്കത് ഇതുവരെ അറിയില്ല എന്നാണ് അർത്ഥം. നിങ്ങൾക്ക് അത് മനസ്സിലായെന്ന് തെളിയിക്കാൻ എന്തെങ്കിലും നിർമ്മിക്കുക.
ഉറവിടം: https://dev.to/sabimantock/from-i-understood-nothing-to-building-a-rag-app-4033
ആവശ്യമെങ്കിൽ ചേരാവുന്ന പഠന കൂട്ടായ്മ: https://t.me/GyaanSetuAi