എന്റെ RAG പൈപ്പ്ലൈനിൽ ഞാൻ ഒരു reranker ചേർത്തു — അത് എല്ലാം തകരാറിലാക്കി
ഞാൻ എന്റെ RAG പൈപ്പ്ലൈനിൽ ഒരു reranker ചേർത്തു. അത് ഉടൻതന്നെ എന്റെ ടെസ്റ്റുകളെ തകരാറിലാക്കി.
വേർഷൻ 2-ൽ, ഞാൻ FAISS-ഉം BM25-ഉം ഉപയോഗിച്ചുള്ള hybrid retrieval ആണ് ഉപയോഗിച്ചത്. എന്റെ 19 ടെസ്റ്റ് ചോദ്യങ്ങളും അത് വിജയകരമായി പൂർത്തിയാക്കി. തുടർന്ന്, കൃത്യത (precision) വർദ്ധിപ്പിക്കുന്നതിനായി ഞാൻ ഒരു cross-encoder reranker ചേർത്തു.
ഇതിന്റെ സിദ്ധാന്തം ലളിതമാണ്:
- സ്റ്റേജ് 1: കൂടുതൽ ഉദ്യോഗാർത്ഥികളെ (candidates) കണ്ടെത്താൻ വേഗതയേറിയ retrieval ഉപയോഗിക്കുക.
- സ്റ്റേജ് 2: അവയിൽ നിന്ന് ഏറ്റവും മികച്ചവ തിരഞ്ഞെടുക്കാൻ ഒരു സ്മാർട്ട് reranker ഉപയോഗിക്കുക.
ഇത് നടപ്പിലാക്കാൻ 20 മിനിറ്റ് എടുത്തു. എന്നാൽ ഉടൻതന്നെ എന്റെ 19 ടെസ്റ്റുകളിൽ 2 എണ്ണം പരാജയപ്പെട്ടു.
ഡാറ്റാ ഫോർമാറ്റ് കാരണമാണ് ഈ പരാജയം ഉണ്ടായത്. എന്റെ ഡാറ്റയിൽ ഇത്തരത്തിലുള്ള ഡെൻസ് ആയ ടേബുലാർ ചങ്ക്സ് (tabular chunks) അടങ്ങിയിരിക്കുന്നു: "Company: Zentara Robotics | CEO: Iris Kallas | Employees: 287"
cross-encoder മോഡൽ പരിശീലിപ്പിച്ചത് സ്വാഭാവിക ഭാഷയിലുള്ള പാരഗ്രാഫുകൾ ഉപയോഗിച്ചാണ്. ഒരു ടേബിൾ റോ കണ്ടപ്പോൾ, അത് വളരെ കുറഞ്ഞ സ്കോർ നൽകി. ആ ചങ്ക് പ്രസക്തമല്ലെന്നാണ് അത് കരുതിയത്.
Hybrid retrieval ഉത്തരം കണ്ടെത്തിയെങ്കിലും, reranker അത് ഒഴിവാക്കി.
ഇത് പരിഹരിക്കാൻ ഞാൻ 7 വ്യത്യസ്ത വഴികൾ പരീക്ഷിച്ചു:
- വലിയൊരു candidate pool ഉപയോഗിക്കുക.
- reranker-ൽ നിന്നും retriever-ൽ നിന്നുമുള്ള സ്കോറുകൾ കൂട്ടിച്ചേർക്കുക (blending).
- rank fusion ഉപയോഗിക്കുക.
ഇതൊന്നും ഫലിച്ചില്ല. reranker സ്കോർ വളരെ നെഗറ്റീവ് ആയതുകൊണ്ട് അത് മറ്റെല്ലാറ്റിനെയും മറികടന്നു. മോഡൽ വെറുതെ റാങ്ക് കുറയ്ക്കുകയല്ല ചെയ്തത്, മറിച്ച് ടേബിൾ ഫോർമാറ്റിനെ സജീവമായി നിരസിക്കുകയായിരുന്നു.
കണക്കുകൾ (math) ശരിയാക്കാൻ ശ്രമിക്കുന്നത് നിർത്തി ഞാൻ ഘടന (structure) മാറ്റി.
എല്ലാം തീരുമാനിക്കാൻ reranker-നെ വിടുന്നതിന് പകരം, ഞാൻ എന്റെ മികച്ച ഫലങ്ങളെ സംരക്ഷിച്ചു. ഞാൻ ഒരു "guaranteed slot" തന്ത്രം ഉപയോഗിച്ചു:
- നിങ്ങൾക്ക് ആദ്യത്തെ 3 ഫലങ്ങൾ വേണമെങ്കിൽ, ആദ്യ ഘട്ടത്തിൽ നിന്നുള്ള മികച്ച 2 ഫലങ്ങൾ നിലനിർത്തുക.
- മൂന്നാമത്തെ ഫലം തിരഞ്ഞെടുക്കാൻ മാത്രം reranker ഉപയോഗിക്കുക.
ഇത് hybrid search ഫലങ്ങൾ അവസാന ലിസ്റ്റിൽ ഉണ്ടെന്ന് ഉറപ്പാക്കുന്നു. ബാക്കിയുള്ള സ്ലോട്ടുകൾ മെച്ചപ്പെടുത്താൻ മാത്രമേ reranker സഹായിക്കുന്നുള്ളൂ.
ഫലം: 19/19 ടെസ്റ്റുകളും വിജയിച്ചു.
പഠിച്ച പാഠങ്ങൾ:
- Rerankers ഒരു ഇൻസ്റ്റന്റ് അപ്ഗ്രേഡല്ല. അവ സ്ട്രക്ചേർഡ് അല്ലെങ്കിൽ ടേബുലാർ ഡാറ്റയുടെ പ്രവർത്തനത്തെ ദോഷകരമായി ബാധിച്ചേക്കാം.
- നിങ്ങളുടെ evaluation set ആണ് നിങ്ങളുടെ സുരക്ഷാ വലയം (safety net). എന്റെ 19 ടെസ്റ്റുകൾ ഇല്ലായിരുന്നെങ്കിൽ, ഞാൻ ഒരു തകരാറുള്ള സിസ്റ്റം പുറത്തിറക്കുമായിരുന്നു.
- പ്രവർത്തിക്കുന്നതിനെ സംരക്ഷിക്കുക. നിങ്ങളുടെ ആദ്യ ഘട്ടത്തിലുള്ള retrieval നല്ലതാണെങ്കിൽ, ഒരു reranker അതിനെ മറികടക്കാൻ അനുവദിക്കരുത്.
ഒരു reranker ഉപയോഗിക്കുന്നതിന് മുമ്പ് ശക്തമായ ഒരു retriever നിർമ്മിക്കുക.
Optional learning community: https://t.me/GyaanSetuAi
