Photon: ആദ്യം മുതൽ ഒരു വീണ്ടെടുക്കൽ, റാങ്കിംഗ് എഞ്ചിൻ നിർമ്മിക്കുന്നു

പ്രത്യേക ഡാറ്റ ഫോർമാറ്റുകൾ, ബാച്ച് ചെയ്ത റീഡുകൾ, ക്വറി സെർവിംഗിൽ നിന്ന് ഇൻഡക്സ് നിർമ്മാണം വേർപെടുത്തൽ എന്നിവ AI-നേറ്റീവ് സെർച്ച് എങ്ങനെ മെച്ചപ്പെടുത്തുന്നു.

രചയിതാക്കൾPerplexity Engineering

ആമുഖം

Perplexity-യുടെ AI-നേറ്റീവ് സെർച്ച് സ്റ്റാക്ക് കാൻഡിഡേറ്റ് പേജുകൾ വീണ്ടെടുക്കുകയും റാങ്ക് ചെയ്യുകയും ചെയ്യുന്നു, മോഡലിന് അതിന്റെ ഉത്തരങ്ങൾക്ക് അടിത്തറയിടാൻ ഏറ്റവും പ്രസക്തമായ ഉള്ളടക്കം ഉപരിതലത്തിൽ എത്തിക്കുന്നു. യഥാർത്ഥത്തിൽ, ഈ ഘട്ടം ഞങ്ങൾ ഞങ്ങളുടെ സിസ്റ്റത്തിലേക്ക് പൊരുത്തപ്പെടുത്തിയ ഒരു ഓപ്പൺ സോഴ്സ് എഞ്ചിനിലാണ് പ്രവർത്തിച്ചിരുന്നത്. എന്നിരുന്നാലും, ഞങ്ങളുടെ ഇൻഡക്സും വർക്ക്ലോഡുകളും വളർന്നപ്പോൾ, നിലവിലുള്ള തേർഡ്-പാർട്ടി പ്ലാറ്റ്‌ഫോമിനുള്ളിൽ പരിഹരിക്കാൻ കഴിയാത്ത ചെലവുകൾ, ടെയിൽ ലേറ്റൻസി, നോഡ് വീണ്ടെടുക്കൽ സമയം എന്നിവയിൽ ഞങ്ങൾ കഠിനമായ പരിധികൾ നേരിട്ടു.

ഈ വെല്ലുവിളികളെ അതിജീവിക്കാൻ, ഞങ്ങൾ ഒരു പുതിയ ഇൻ-ഹൗസ് വീണ്ടെടുക്കൽ, റാങ്കിംഗ് എഞ്ചിനായ ഫോട്ടോൺ നിർമ്മിച്ചു. പേജ് റെക്കോർഡുകൾ സെർവ് ചെയ്യുന്നതിനുള്ള ഞങ്ങളുടെ ഡിസ്ട്രിബ്യൂട്ടഡ് കീ-വാല്യൂ സ്റ്റോറായ CobbleDB, ഞങ്ങളുടെ Search API എന്നിവയിലൂടെ ഞങ്ങൾ ചെയ്തതുപോലെ, AI-ആദ്യ സെർച്ച് ഇൻഫ്രാസ്ട്രക്ചർ ആദ്യം മുതൽ നിർമ്മിക്കുന്ന ഞങ്ങളുടെ സമീപനം ഇത് തുടരുന്നു.

ഡിസ്ക് ആക്സസ് കുറയ്ക്കുന്നതിനും കാത്തിരിപ്പുകൾ ഓവർലാപ്പ് ചെയ്യുന്നതിനുമായി ബാച്ച്-അെയർ കാഷിംഗും അസിൻക്രണസ് റീഡുകളും ഉപയോഗിച്ച്, ഓരോ അന്വേഷണത്തിനും (ക്വറി) ആവശ്യമുള്ളത് മാത്രം വായിക്കാനും ഡീകോഡ് ചെയ്യാനും ഫോട്ടോൺ കോംപാക്റ്റ് ഡാറ്റ ഫോർമാറ്റുകൾ ഉപയോഗിക്കുന്നു. ഇൻഡക്സ് നിർമ്മാണം ക്വറി സെർവിംഗിൽ നിന്ന് പ്രത്യേകം പ്രവർത്തിക്കുന്നു, ഓരോ തവണയും ഒരു സെർവിംഗ് ഗ്രൂപ്പ് അപ്ഡേറ്റ് ചെയ്യുകയും തത്സമയ ക്വറികൾ അതിലേക്ക് റൂട്ട് ചെയ്യുന്നതിന് മുമ്പ് അതിന്റെ കാഷുകൾ വാർം ചെയ്യുകയും ചെയ്യുന്നു.

ഫോട്ടോൺ ഇപ്പോൾ ഞങ്ങളുടെ സെർച്ച് പൈപ്പ്‌ലൈന് ശക്തി നൽകുന്നു കൂടാതെ ഞങ്ങളുടെ സെർച്ച് API-നായുള്ള പുതിയ വേഗതയേറിയ പ്രീസെറ്റിന്റെ അടിസ്ഥാനവുമാണ്, p50-ൽ 160 മി.സെക്കൻഡും p95-ൽ 230 മി.സെക്കൻഡും ആണ് സിംഗിൾ-സെർച്ച്-കോൾ ലേറ്റൻസി. ആറ് പബ്ലിക് ബെഞ്ച്മാർക്കുകളിലുടനീളം, ഡിഫോൾട്ട് പ്രീസെറ്റിന് തുല്യമായ മൊത്തത്തിലുള്ള ടാസ്ക് ഗുണനിലവാരം നിലനിർത്തിക്കൊണ്ട്, വേഗതയേറിയ പ്രീസെറ്റ് ടാസ്കിന് കണക്കാക്കിയ മോഡൽ-പ്ലസ്-സെർച്ച് ചെലവ് 68% കുറച്ചു. ഡെവലപ്പർമാർക്ക് ഈ മെച്ചപ്പെടുത്തലുകൾ ആക്സസ് ചെയ്യാൻ കഴിയുന്ന തരത്തിൽ ഞങ്ങൾ ഇത് ഇന്ന് പുറത്തിറക്കുന്നു.

സ്വയം റിപ്പോർട്ട് ചെയ്ത സിംഗിൾ-സെർച്ച്-കോൾ ലേറ്റൻസി. PPLX Fast 160 മി.സെക്കൻഡ് p50 ലേറ്റൻസിയും 230 മി.സെക്കൻഡ് p95 ലേറ്റൻസിയും റിപ്പോർട്ട് ചെയ്യുന്നു. Exa Instant അതിന്റെ ഹൈ-ടെയിൽ മൂല്യത്തിനായി p95 അല്ല, p90 റിപ്പോർട്ട് ചെയ്യുന്നു; Parallel-ന്റെ ഹൈ-ടെയിൽ മൂല്യങ്ങൾ പ്രസിദ്ധീകരിച്ചിട്ടില്ല. റിപ്പോർട്ട് ചെയ്യപ്പെട്ട പെർസെന്റൈലുകളും മെഷർമെന്റ് സജ്ജീകരണങ്ങളും നിയന്ത്രിതമായ ഒരു താരതമ്യമല്ല.
തിരഞ്ഞെടുത്ത അതേ 3,554 ടാസ്കുകൾക്കായുള്ള മൊത്തത്തിലുള്ള ടാസ്ക് ഗുണനിലവാരം കണക്കാക്കിയ മൊത്തം മോഡൽ-പ്ലസ്-സെർച്ച് ചെലവുമായി താരതമ്യം ചെയ്യുന്നു. ടാസ്ക് കൗണ്ട് അനുസരിച്ച് സ്കോറുകൾ വെയിറ്റ് ചെയ്തിരിക്കുന്നു, കൂടാതെ ചെലവുകൾ മുഴുവൻ ടാസ്ക് സെറ്റും ഉൾക്കൊള്ളുന്നു. PPLX Fast $59.73-ൽ 64.3% സ്കോർ ചെയ്യുന്നു, ഡിഫോൾട്ട് PPLX പ്രീസെറ്റിനായി $187.60-ൽ 64.0% ഉള്ളതുമായി താരതമ്യം ചെയ്യുമ്പോൾ, തുല്യ എണ്ണം ടാസ്കുകൾക്ക് ഏകദേശം 68% കുറഞ്ഞ ചെലവാണ്.

വീണ്ടെടുക്കലും റാങ്കിംഗ് എഞ്ചിനും ആവശ്യപ്പെടുന്നത് എന്താണ്

ഓരോ ക്വറിക്കും, വീണ്ടെടുക്കൽ, റാങ്കിംഗ് എഞ്ചിൻ സെർച്ച് സ്റ്റാക്കിന്റെ ലേറ്റൻസി ബഡ്ജറ്റിനുള്ളിൽ പ്രസക്തമായ ചെറിയൊരു സെറ്റ് പേജുകൾ തിരഞ്ഞെടുത്ത് ഓർഡർ ചെയ്യുന്നതിനായി വലിയ, വിതരണം ചെയ്യപ്പെട്ട (distributed) ഒരു ഇൻഡക്സ് തിരയുന്നു. തത്സമയ ക്വറികൾ മന്ദഗതിയിലാക്കാൻ അനുവദിക്കാതെ തന്നെ, പുതിയ പേജുകൾ എത്തുമ്പോഴും നിലവിലുള്ള പേജുകൾ മാറുമ്പോഴും സിസ്റ്റം ഇൻഡക്സ് അപ്ഡേറ്റായി സൂക്ഷിക്കുകയും വേണം.

ഞങ്ങൾ നിരവധി ഓപ്പൺ-സോഴ്‌സ് ഓപ്ഷനുകൾ വിലയിരുത്തി, ഞങ്ങളുടെ പ്രാരംഭ ആവശ്യങ്ങൾ നിറവേറ്റിയ, പാകപ്പെട്ടതും പൊതുപയോഗത്തിനുതകുന്നതുമായ ഒരു റിട്രീവൽ ആൻഡ് റാങ്കിംഗ് എഞ്ചിൻ തിരഞ്ഞെടുത്തു. തുടർന്ന് ഞങ്ങൾ അതിനെ നമ്മുടെ ആർക്കിടെക്ചറിനും വർക്ലോഡുകൾക്കും അനുസൃതമാക്കി, ഉൽപ്പാദന സ്കെയിലിൽ സ്ഥിരമായ ലാറ്റൻസിയും ത്രൂപ്പുട്ടും നിലനിർത്തി.

ഞങ്ങളുടെ മുൻകാല സിസ്റ്റം എവിടെയാണ് പരാജയപ്പെട്ടത്

വളർന്നുവരുന്ന ഇൻഡക്സിലേക്ക് എഞ്ചിനെ പൊരുത്തപ്പെടുത്താൻ ഞങ്ങൾ ഞങ്ങളുടെ സ്വന്തം ഫോർക്ക് നിലനിർത്തി, എന്നാൽ പ്രധാന പരിമിതികൾ പരിഹരിക്കുന്നതിന് പ്ലാറ്റ്‌ഫോമിന്റെ വലിയ ഭാഗങ്ങൾ പുനർരൂപകൽപ്പന ചെയ്യേണ്ടതായി വന്നു. അടിസ്ഥാനപരമായ ആർക്കിടെക്ചറൽ മാറ്റങ്ങളില്ലാതെ പരിഹരിക്കുന്നത് ബുദ്ധിമുട്ടാണെന്ന് നിരവധി തടസ്സങ്ങൾ തെളിഞ്ഞു:

1. സ്കേലിംഗ് ചെലവുകൾ. ഞങ്ങൾ സംഭരിക്കുന്ന ഡോക്യുമെന്റുകളുടെ എണ്ണവും വീണ്ടെടുക്കാനും റാങ്ക് ചെയ്യാനും ആവശ്യമായ പെർ-ഡോക്യുമെന്റ് ഡാറ്റയുടെ അളവും കാലക്രമേണ വർദ്ധിച്ചുകൊണ്ടിരിക്കുന്നു. ഈ സ്കേലിംഗ് ഞങ്ങളുടെ ഹാർഡ്‌വെയറിൽ സമ്മർദ്ദം ചെലുത്തി, പ്രത്യേകിച്ചും ലഭ്യമായ RAM-ന്റെ അളവ്. ചെലവുകൾ നിയന്ത്രിക്കുന്നതിന്, ഞങ്ങൾക്ക് കൂടുതൽ കോംപാക്റ്റ് ഡാറ്റ പ്രതിനിധീകരണങ്ങളും മെമ്മറിയിൽ എന്ത് സൂക്ഷിക്കണം, ഡിസ്കിൽ നിന്ന് ഡിമാൻഡിൽ എന്ത് വായിക്കണം എന്നതിനെക്കുറിച്ചുള്ള മികച്ച നിയന്ത്രണവും ആവശ്യമായിരുന്നു.

2. മോശമായ ടെയിൽ ലേറ്റൻസി. പ്രൊഡക്ഷൻ ട്രാഫിക്കിൽ, പഴയ സിസ്റ്റത്തിന്റെ p99 പ്രതികരണ സമയം ഏകദേശം 800 മി.സെക്കൻഡ് ആയിരുന്നു. ഡാറ്റാസെറ്റ് ലഭ്യമായ RAM കവിഞ്ഞു, അതിനാൽ ഇത് പൂർണ്ണമായും മെമ്മറിയിൽ സൂക്ഷിക്കാൻ ഞങ്ങൾക്ക് mlock ഉപയോഗിക്കാൻ കഴിഞ്ഞില്ല. റസിഡന്റ് അല്ലാത്ത ഡാറ്റ ആക്സസ് ചെയ്യുന്നത് പ്രധാന പേജ് ഫോൾട്ടുകൾക്ക് കാരണമാകും, ഓപ്പറേറ്റിംഗ് സിസ്റ്റം ഡിസ്കിൽ നിന്ന് വായിക്കുമ്പോൾ ക്വറി എക്സിക്യൂഷൻ തടസ്സപ്പെടുന്നു.

എഞ്ചിൻ ആനുകാലികമായി അതിന്റെ പ്രധാന ഡിസ്ക് ഇൻഡക്സ് മെമ്മറിയിൽ നിന്ന് ഫ്ലഷ് ചെയ്ത ചെറിയ ഇൻഡക്സുകളുമായി മെർജ് ചെയ്യുകയും ചെയ്തു. ഈ ഡിസ്ക് ഇൻഡക്സ് ഫ്യൂഷൻ പ്രക്രിയയിൽ, പേജ് ഫോൾട്ടുകളുടെ എണ്ണം ഇത്രയധികം ഉയർന്നു, 10-15 മിനിറ്റത്തേക്ക് p99 ലേറ്റൻസി ഏകദേശം 1.2 സെക്കൻഡിൽ എത്തി. കാഷുകൾ വാർം ആയപ്പോൾ, പേജ് ഫോൾട്ടുകളുടെ ആവൃത്തിയും ലേറ്റൻസിയും കുറഞ്ഞു, ഇത് കോൾഡ് റീഡുകളാണ് സ്പൈകുകൾക്ക് പ്രധാന കാരണം എന്ന് സൂചിപ്പിക്കുന്നു. ഡാറ്റ മുൻകൂട്ടി ലോഡ് ചെയ്യുന്നതും ഇൻഡക്സ് വാർം ചെയ്യുന്നതും സ്പൈകുകൾ കുറച്ചുവെങ്കിലും ഉയർന്ന ടെയിൽ ലേറ്റൻസി പര്യാപ്തമായി അഭിസംബോധന ചെയ്തില്ല.

3. നീണ്ട വീണ്ടെടുക്കലും സമന്വയവും. മുൻകാല സിസ്റ്റത്തിൽ, ഒരു അധിക ക്ലസ്റ്റർ വിന്യചിക്കുന്നതിനും അതിന്റെ ഡാറ്റ സമന്വയിപ്പിക്കുന്നതിനും ഒരാഴ്ചയിലധികം എടുത്തേക്കാം. അധിക ഡാറ്റ പകർപ്പുകൾ സൂക്ഷിക്കുന്നതിനായി നോഡുകളുടെ ഗ്രൂപ്പുകൾ ചേർക്കുമ്പോഴോ നോഡ് പരാജയങ്ങളിൽ നിന്ന് കരകയറുമ്പോഴോ സമന്വയം ആവശ്യമായിരുന്നു. വീണ്ടെടുക്കൽ സമയത്ത്, സെർച്ച് പ്രതികരണങ്ങളുടെ വലിയൊരു പങ്ക് ഭാഗികമായിരുന്നു, ഇത് അന്തിമ ഉത്തരത്തിന്റെ ഗുണനിലവാര സ്കോറുകൾ കുറച്ചു.

ആത്യന്തികമായി, ഞങ്ങളുടെ ഫോർക്ക് അഡാപ്റ്റ് ചെയ്ത് മെയിന്റൈൻ ചെയ്യുന്നത് തുടരുന്നതിനേക്കാൾ ആദ്യം മുതൽ നിർമ്മിക്കുന്നത് ലളിതവും ചെലവുകുറഞ്ഞതുമാണെന്ന് ഞങ്ങൾ നിഗമനം ചെയ്തു. മുൻകാല സിസ്റ്റം പ്രവർത്തിപ്പിച്ചതിന്റെ ഞങ്ങളുടെ അനുഭവം പ്രയോജനപ്പെടുത്തി, ഫോട്ടോൺ നിർമ്മിക്കാൻ സ്ഥിരമായ കോഡിംഗ് ഏജന്റുകളുടെ ഒരു സംഘത്തോടൊപ്പം ഒരു ചെറിയ എഞ്ചിനീയറിംഗ് ടീം പ്രവർത്തിച്ചു.

സെർച്ച് സ്റ്റാക്കിൽ ഫോട്ടോൺ എവിടെ യോജിക്കുന്നു

ഫോട്ടോൺ രണ്ട് പ്രാഥമിക വർക്ക്ഫ്ലോകൾക്കായി രൂപകൽപ്പന ചെയ്‌തിരിക്കുന്നു: സെർച്ച് അഭ്യർത്ഥനകൾ സെർവ് ചെയ്യുക, പ്രോസസ്സിംഗ് പൈപ്പ്‌ലൈനിൽ നിന്നുള്ള അപ്ഡേറ്റുകൾ സ്വീകരിക്കുക.

ഉയർന്ന തലത്തിലുള്ള സെർച്ച് സേവനത്തിൽ നിന്നുള്ള ഒരു അഭ്യർത്ഥന ലോഡ് ബാലൻസർ വഴി ഫോട്ടോൺ ബ്രോക്കറിലെത്തുന്നു. ബ്രോക്കർ ഒരു ഷാർഡ് ഗ്രൂപ്പ് തിരഞ്ഞെടുത്ത് അഭ്യർത്ഥന ഓരോ ഷാർഡിലേക്കും കൈമാറുന്നു, സമയപരിധി നിരീക്ഷിക്കുകയും ആവശ്യമുള്ളപ്പോൾ അധിക അഭ്യർത്ഥനകൾ നൽകുകയും ചെയ്യുന്നു.

ഓരോ ഷാർഡും വീണ്ടെടുക്കൽ, പ്രാരംഭ റാങ്കിംഗ്, രണ്ടാം ഘട്ട റാങ്കിംഗ് എന്നിവ നടത്തുന്നു, തുടർന്ന് അതിന്റെ മികച്ച കാൻഡിഡേറ്റുകളെ ബ്രോക്കറിലേക്ക് തിരികെ നൽകുന്നു. ബ്രോക്കർ ഈ കാൻഡിഡേറ്റുകളെ ഒരൊറ്റ റാങ്ക് ചെയ്ത ലിസ്റ്റിലേക്ക് സംയോജിപ്പിക്കുകയും പ്രസക്തമായ ഷാർഡുകളിൽ നിന്ന് തിരഞ്ഞെടുത്ത പേജുകൾക്കായി പ്രധാന ഡോക്യുമെന്റ് ഫീൽഡുകൾ ഫെച്ച് ചെയ്യുകയും ചെയ്യുന്നു. തുടർന്ന് അത് ഈ ഫലങ്ങൾ ഉയർന്ന തലത്തിലുള്ള സെർച്ച് സേവനത്തിലേക്ക് തിരികെ നൽകുന്നു, ഇത് ഏജന്റിന് അടിസ്ഥാനപരമായ ഉത്തരം നൽകാൻ ആവശ്യമായ പേജ് ഉള്ളടക്കം ശേഖരിക്കുന്നു.

ഇൻഡക്സ് അപ്ഡേറ്റുകൾ ഒരു പ്രത്യേക പാത പിന്തുടരുന്നു. ഞങ്ങളുടെ പ്രസിദ്ധീകരണ പാളിയായ പില്ലർ, ഡാറ്റ തയ്യാറാക്കി YTsaurus ടേബിളുകളിൽ സംഭരിക്കുന്നു. ഇൻഡക്സർമാർ ഈ ടേബിളുകളെ സെർച്ചിനായി ഷാർഡുകൾക്ക് ലോഡ് ചെയ്യാൻ കഴിയുന്ന ഇൻഡക്സ് ഘടനകളാക്കി മാറ്റുന്നു. കൺട്രോളർ ഡാറ്റ തയ്യാറെടുപ്പ്, ഇൻഡക്സ് നിർമ്മാണം, സെർവിംഗ് ഗ്രൂപ്പുകളിലേക്ക് പുതിയ ഇൻഡക്സ് പതിപ്പുകൾ വിന്യചിക്കൽ എന്നിവ ഏകോപിപ്പിക്കുന്നു. തത്സമയ ട്രാഫിക് കൈകാര്യം ചെയ്യുന്നതിന് മുമ്പ്, ഓരോ ഷാർഡും അതിന്റെ കാഷുകൾ വാർം ചെയ്യുന്നതിനായി യഥാർത്ഥ സെർച്ച് ക്വറികൾ റീപ്ലേ ചെയ്യുന്നു.

ഒരു ക്വറി ഉയർന്ന തലത്തിലുള്ള സെർച്ച് സേവനത്തിൽ നിന്ന് ലോഡ് ബാലൻസറും ബ്രോക്കറും വഴി തിരഞ്ഞെടുത്ത ഷാർഡ് ഗ്രൂപ്പിലേക്ക് നീങ്ങുന്നു. ഓരോ ഷാർഡും കാൻഡിഡേറ്റുകളെ വീണ്ടെടുക്കുകയും റാങ്ക് ചെയ്യുകയും ചെയ്യുന്നു; ബ്രോക്കർ ഫലങ്ങൾ മെർജ് ചെയ്യുന്നു, തിരഞ്ഞെടുത്ത പേജുകൾക്കായി ഡോക്യുമെന്റ് ഫീൽഡുകൾ ഫെച്ച് ചെയ്യുന്നു, അവ ഉയർന്ന തലത്തിലുള്ള സെർച്ച് സേവനത്തിലേക്ക് തിരികെ നൽകുന്നു. നംബറുകളുള്ള ഘട്ടങ്ങൾ ക്രമം കാണിക്കുന്നു. സോളിഡ് ആരോകൾ അഭ്യർത്ഥനകൾ കൊണ്ടുപോകുന്നു, ഡാഷ്ഡ് ആരോകൾ ഫലങ്ങൾ തിരികെ കൊണ്ടുപോകുന്നു. ഇടതുവശത്തെ ഫേസ് ലേബലുകൾ കാൻഡിഡേറ്റ് തിരഞ്ഞെടുക്കലിനെ സംഗ്രഹ വായനകളിൽ നിന്ന് വേർതിരിക്കുന്നു.

ഞങ്ങളുടെ വർക്ക്ഫ്ലോകൾക്കായി ഫോട്ടോൺ രൂപകൽപ്പന ചെയ്യുന്നു

മൂന്ന് ഡിസൈൻ തിരഞ്ഞെടുപ്പുകൾ ഫോട്ടോണിനെ ഞങ്ങളുടെ വർക്ക്ലോഡിന് അനുയോജ്യമാക്കുന്നു: കോംപാക്റ്റ് ഡാറ്റ പ്രതിനിധീകരണങ്ങൾ, കാഷിംഗും അസിൻക്രണസ് ഡിസ്ക് റീഡുകളും, ഇൻഡക്സ് അപ്ഡേറ്റുകളെ ക്വറി സെർവിംഗിൽ നിന്ന് വേർപെടുത്തൽ.

വീണ്ടെടുക്കലിനും റാങ്കിംഗിനുമുള്ള ഡാറ്റ പ്രതിനിധീകരണങ്ങൾ

വീണ്ടെടുക്കലും റാങ്കിംഗും ഡോക്യുമെന്റ് ഡാറ്റ വ്യത്യസ്ത രീതിയിലാണ് ആക്സസ് ചെയ്യുന്നത്. ലെക്സിക്കൽ വീണ്ടെടുക്കൽ ക്വറി പദങ്ങളിൽ ആരംഭിച്ച് അവ അടങ്ങിയിരിക്കുന്ന ഡോക്യുമെന്റുകൾ കണ്ടെത്തുന്നു. തിരഞ്ഞെടുത്ത ഓരോ ഡോക്യുമെന്റിനെക്കുറിച്ചും പദങ്ങളുടെ ആവൃത്തികളും (frequencies) സ്ഥാനങ്ങളും ഉൾപ്പെടെയുള്ള വിശദമായ വിവരങ്ങൾ റാങ്കിംഗിന് ആവശ്യമാണ്.

ഈ ആക്സസ് പാറ്റേണുകളെ പിന്തുണയ്ക്കുന്നതിനായി ഫോട്ടോൺ പരസ്പര പൂരകമായ രണ്ട് പ്രതിനിധീകരണങ്ങൾ ഉപയോഗിക്കുന്നു. കാൻഡിഡേറ്റ് തിരഞ്ഞെടുക്കലിനെ പിന്തുണയ്ക്കുന്നതിനായി, ഒരു ഇൻവേർട്ടഡ് ഇൻഡക്സ് ഓരോ പദത്തിനും പൊരുത്തപ്പെടുന്ന ഡോക്യുമെന്റുകളുടെ ഒരു ലിസ്റ്റ് സംഭരിക്കുന്നു, അതിനെ പോസ്റ്റിംഗ് ലിസ്റ്റ് എന്ന് വിളിക്കുന്നു. റാങ്കിംഗിന് ആവശ്യമായ ഡാറ്റ പ്രത്യേക പെർ-ഡോക്യുമെന്റ് റെക്കോർഡുകൾ നൽകുന്നു. ഒരു നിശ്ചിത വർക്ക് ബഡ്ജറ്റിനുള്ളിൽ തിരഞ്ഞെടുപ്പ് മെച്ചപ്പെടുത്തുന്നതിനായി പോസ്റ്റിംഗ് ലിസ്റ്റുകൾ സംഭരിക്കുന്നതും ട്രാവേഴ്സ് ചെയ്യുന്നതും ഞങ്ങൾ ഒപ്റ്റിമൈസ് ചെയ്യുന്നു.

പ്രധാന ഡാറ്റ കൂടുതൽ കാര്യക്ഷമമായി സംഭരിക്കാൻ പ്രത്യേക ഡാറ്റ പ്രതിനിധീകരണങ്ങൾ ഞങ്ങളെ പ്രാപ്തരാക്കുന്നു. കൂടുതൽ കോംപാക്റ്റായ ഇൻവേർട്ടഡ് ഇൻഡക്സ് ഓരോ ക്വറിക്കും വായിക്കുന്നതോ നീക്കുന്നതോ ആയ ഡാറ്റയുടെ അളവ് കുറയ്ക്കുന്നു, അനാവശ്യ I/O പ്രവർത്തനങ്ങൾ ഇല്ലാതാക്കിക്കൊണ്ട് ലേറ്റൻസി മെച്ചപ്പെടുത്തുന്നു. ഈ ഫോർമാറ്റുകൾ, പൂർണ്ണമായി ഡീകോഡ് ചെയ്യാതെ തന്നെ ഒരു ഡോക്യുമെന്റ് ലിസ്റ്റിൽ ദൃശ്യമാകുന്നുണ്ടോയെന്ന് പരിശോധിക്കുന്നത് സാധ്യമാക്കുന്നു, ഒരു നിശ്ചിത ബഡ്ജറ്റിന് കീഴിൽ ഒരു ക്വറി എത്ര ജോലി ചെയ്യുന്നുവെന്ന് നിയന്ത്രിക്കാൻ ഞങ്ങളുടെ ട്രാവേഴ്സൽ ലോജിക് ആശ്രയിക്കുന്ന ഒരു സവിശേഷതയാണിത്. പെർ-ഡോക്യുമെന്റ് റെക്കോർഡുകൾ ഒപ്റ്റിമൈസ് ചെയ്യുന്നത് റാങ്കിംഗിനായി ഓരോ ഡോക്യുമെന്റിലും കൂടുതൽ ഡാറ്റ സംഭരിക്കാൻ ഞങ്ങളെ അനുവദിക്കുന്നു, അതേസമയം ഞങ്ങളുടെ മുൻകാല സിസ്റ്റവുമായി ബന്ധപ്പെട്ട സ്കേലിംഗ് ചെലവുകൾ കുറയ്ക്കുകയും ചെയ്യുന്നു.

ഇൻവേർട്ടഡ് ഇൻഡക്സ്

ഓരോ പദത്തിനും, ഇൻവേർട്ടഡ് ഇൻഡക്സ് ഒരു പോസ്റ്റിംഗ് ലിസ്റ്റ് സംഭരിക്കുന്നു. ഈ ലിസ്റ്റുകൾക്ക് ഏതാനും ഡോക്യുമെന്റുകൾ മുതൽ ദശലക്ഷക്കണക്കിന് ഡോക്യുമെന്റുകൾ വരെ ഉണ്ടാകാം, അതിനാൽ ഒരൊറ്റ ഫോർമാറ്റും ഓരോ ലിസ്റ്റിനും നന്നായി പ്രവർത്തിക്കില്ല. പദം അടങ്ങിയിരിക്കുന്ന ഡോക്യുമെന്റുകളുടെ എണ്ണത്തെ അടിസ്ഥാനമാക്കി ഫോട്ടോൺ ഫോർമാറ്റ് തിരഞ്ഞെടുക്കുന്നു.

ചെറിയ ലിസ്റ്റുകൾ ഒറ്റ പേജിൽ ഒതുങ്ങുന്നതും ബ്ലോക്ക് ടേബിൾ ആവശ്യമില്ലാത്തതുമായ ഇൻലൈൻ പ്രതിനിധീകരണമാണ് ഉപയോഗിക്കുന്നത്. ഇൻലൈൻ ഫോർമാറ്റിൽ ഒതുങ്ങാത്ത വലിയ ലിസ്റ്റുകളെ ഡോക്യുമെന്റ് ഐഡന്റിഫയറുകളുടെ നിശ്ചിത ശ്രേണികൾ ഉൾക്കൊള്ളുന്ന ബ്ലോക്കുകളായി തിരിച്ചിരിക്കുന്നു. ഓരോ ബ്ലോക്കിന്റെയും പ്രതിനിധീകരണം അതിന്റെ സാന്ദ്രതയെ ആശ്രയിച്ചിരിക്കുന്നു: സ്പേസ്ഡ് ബ്ലോക്കുകൾ ഡോക്യുമെന്റ്-ഐഡി ഓഫ്സെറ്റുകളുടെ സോർട്ട് ചെയ്ത അറേകൾ സംഭരിക്കുന്നു, അതേസമയം ഡെൻസ് ബ്ലോക്കുകൾ ബിറ്റ്മാപ്പുകൾ ഉപയോഗിക്കുന്നു. സ്പേസ്ഡ് ബ്ലോക്കുകൾ ഗാലപ്പിംഗ് സെർച്ച് ഉപയോഗിക്കുന്നു, ഇത് ലിസ്റ്റിന്റെ മേഖലകൾ ഒഴിവാക്കാൻ വലിയ ഘട്ടങ്ങളിലായി മുന്നോട്ട് പോകുന്നു. ഒരു ഡോക്യുമെന്റിന് അനുയോജ്യമായ ബിറ്റ് ലുക്ക് അപ്പ് ചെയ്തുകൊണ്ട് അംഗത്വ പരിശോധനകൾ നടത്താൻ ഡെൻസ് ബ്ലോക്കുകൾ അനുവദിക്കുന്നു.

ഒരു പദത്തിന്റെ ക്വറി ഫ്രീക്വൻസി അതിന്റെ പോസ്റ്റിംഗ് ലിസ്റ്റ് ഡിസ്കിൽ എവിടെയാണ് സ്ഥാപിക്കേണ്ടതെന്ന് നിർണ്ണയിക്കുന്നു. പതിവായി ക്വറി ചെയ്യുന്ന ലിസ്റ്റുകൾ പരസ്പരം അടുത്ത് സംഭരിക്കപ്പെടുന്നു, ഇത് ഹോട്ട് ഡാറ്റയെ ചെറിയ സ്റ്റോറേജ് മേഖലയിൽ കേന്ദ്രീകരിക്കുന്നു. ഓരോ ലിസ്റ്റിനുള്ളിലും, കൂടുതൽ വാഗ്ദാനങ്ങൾ നൽകുന്ന കാൻഡിഡേറ്റുകൾ നേരത്തെ എത്തുന്ന തരത്തിൽ ഡോക്യുമെന്റുകൾ പ്രത്യേക യൂസ്ഫുൾനെസ് സിഗ്നൽ അനുസരിച്ച് ഓർഡർ ചെയ്യപ്പെടുന്നു.

നീളവും ബ്ലോക്ക് സാന്ദ്രതയും അനുസരിച്ച് ഫോട്ടോൺ ഒരു പോസ്റ്റിംഗ്-ലിസ്റ്റ് പ്രതിനിധീകരണം തിരഞ്ഞെടുക്കുന്നു. ചെറിയ ലിസ്റ്റുകൾ ഒരു പേജിനുള്ളിൽ ഇൻലൈൻ ആയി ഒതുങ്ങുന്നു. നീളമേറിയ ലിസ്റ്റുകളെ നിശ്ചിത ഡോക്യുമെന്റ്-ഐഡി ശ്രേണികളായി തിരിച്ചിരിക്കുന്നു, സ്പേസ്ഡ് ബ്ലോക്കുകൾക്കായി സോർട്ട് ചെയ്ത ഓഫ്സെറ്റ് അറേകളും ഡെൻസ് ബ്ലോക്കുകൾക്കായി ബിറ്റ്മാപ്പുകളും ഉപയോഗിക്കുന്നു.

ഒരു വർക്ക് ബഡ്ജറ്റിനുള്ളിൽ ലിസ്റ്റുകൾ ട്രാവേഴ്സ് ചെയ്യുന്നു

സാധ്യതയുള്ള പ്രസക്തമായ ഡോക്യുമെന്റുകൾ കണ്ടെത്താൻ കാൻഡിഡേറ്റ് തിരഞ്ഞെടുക്കലിന് പോസ്റ്റിംഗ് ലിസ്റ്റുകൾ ട്രാവേഴ്സ് ചെയ്യേണ്ടതുണ്ട്. എല്ലാ ലിസ്റ്റുകളും പൂർണ്ണമായി സ്കാൻ ചെയ്യുന്നത് ചെലവേറിയതാണ്, അതിനാൽ ഫോട്ടോൺ WAND പോലുള്ള ഒരു അൽഗോരിതം ഉപയോഗിക്കുന്നു, ഇത് മറ്റ് പൊരുത്തങ്ങൾ കണക്കിലെടുക്കുമ്പോൾ തന്നെ ചില ലിസ്റ്റുകൾ മാത്രം ട്രാവേഴ്സ് ചെയ്യുന്നു.

അൽഗോരിതം ലിസ്റ്റുകളെ രണ്ട് ഗ്രൂപ്പുകളായി തിരിക്കുന്നു. ഡ്രൈവിംഗ് ലിസ്റ്റുകൾ ട്രാവേഴ്സൽ മുന്നോട്ട് കൊണ്ടുപോകുകയും കാൻഡിഡേറ്റ് ഡോക്യുമെന്റുകൾ നിർദ്ദേശിക്കുകയും ചെയ്യുന്നു. പ്രോബ് ലിസ്റ്റുകൾ ആ കാൻഡിഡേറ്റുകളുടെ സ്കോറുകളിലേക്ക് സംഭാവന ചെയ്യുന്നു എന്നാൽ അവ സ്വന്തമായി കാൻഡിഡേറ്റുകളെ സൃഷ്ടിക്കുന്നില്ല.

കാൻഡിഡേറ്റ് സ്കോറിംഗ്, വെയിറ്റഡ് ക്വറി-ടേം കവറേജും ഫ്രീക്വൻസി സംഭാവനയും സംയോജിപ്പിക്കുന്നു, ഡോക്യുമെന്റ്-ലെങ്ത് നോർമലൈസേഷനും ആവർത്തിച്ചുള്ള പദങ്ങളിൽ നിന്നുള്ള നേട്ടങ്ങളുടെ ഒരു ക്യാപ്പും ഇതിലുണ്ട്. ഓരോ കാൻഡിഡേറ്റിന്റെയും പരമാവധി സാധ്യമായ സ്കോർ പരിമിതപ്പെടുത്തുന്നതിന് ഫോട്ടോൺ ആദ്യം അറേകളിലെയും ബിറ്റ്മാപ്പുകളിലെയും പദത്തിന്റെ സാന്നിധ്യം പരിശോധിക്കുന്നു. സെലക്ഷൻ പരിധി പാലിക്കാൻ സാധ്യതയുള്ള കാൻഡിഡേറ്റുകൾക്ക് മാത്രം ഇത് കൃത്യമായ പദ ആവൃത്തികൾ വായിക്കുന്നു.

തിരഞ്ഞെടുപ്പ് മൂന്ന് ഘട്ടങ്ങളായി തുടരുന്നു:

  • ട്രാവേഴ്സൽ: കർശനമായ ക്വറി-കവറേജ് ആവശ്യകതയോടെ ആരംഭിക്കുക. വളരെ കുറച്ച് കാൻഡിഡേറ്റുകളെയാണ് കണ്ടെത്തുന്നതെങ്കിൽ, ഇളവ് വരുത്തിയ ആവശ്യകതയോടെ ആവർത്തിക്കുക.
  • റിട്ടൻഷൻ: കവറേജും ഫ്രീക്വൻസിയും സംയോജിപ്പിക്കുന്ന ഒരു സ്കോർ ഉപയോഗിച്ച് കാൻഡിഡേറ്റുകൾ ഒരു ബൗണ്ടഡ് സെറ്റിൽ സൂക്ഷിക്കപ്പെടുന്നു. ശേഖരിച്ച ഉയർന്ന കാൻഡിഡേറ്റുകൾ മെച്ചപ്പെടുമ്പോൾ, പ്രവേശന പരിധി ഉയരുന്നു.
  • അന്തിമ തിരഞ്ഞെടുപ്പ്: ഫ്രീക്വൻസി സ്കോറുകളെ അടിസ്ഥാനമാക്കി നിലനിർത്തിയ സെറ്റിൽ നിന്നാണ് പാസിനായുള്ള അന്തിമ ഫലങ്ങൾ തിരഞ്ഞെടുക്കുന്നത്. ഓരോ ഫീൽഡും സ്വന്തമായി ഒരു പാസ് പ്രവർത്തിപ്പിക്കുന്നു, ഫീൽഡ് വെയിറ്റുകൾ ഉപയോഗിച്ച് ഫലങ്ങൾ മെർജ് ചെയ്യപ്പെടുന്നു.

കൂടുതൽ റാങ്കിംഗിൽ ഉപയോഗിക്കേണ്ട പ്രസക്തമായ ഡോക്യുമെന്റുകളുടെ ഒരു കാൻഡിഡേറ്റ് സെറ്റ് അൽഗോരിതം നിർമ്മിക്കുന്നു.

വിവരണാത്മകമായ ബൗണ്ടഡ് കാൻഡിഡേറ്റ് ട്രാവേഴ്സൽ. ഡ്രൈവിംഗ് ലിസ്റ്റുകൾ ഡോക്യുമെന്റുകൾ നിർദ്ദേശിക്കുന്നു, അതേസമയം പ്രോബ് ലിസ്റ്റുകളോ കൃത്യമായ ഫ്രീക്വൻസികളോ വായിക്കാതെ തന്നെ നിലവിലെ പ്രവേശന പരിധിക്ക് താഴെയുള്ള കാൻഡിഡേറ്റുകളെ പ്രൂൺ ചെയ്യാൻ അപ്പർ ബൗണ്ടുകൾ അനുവദിക്കുന്നു. നിലനിർത്തിയ സെറ്റ് മെച്ചപ്പെടുമ്പോൾ പരിധി ഉയരുന്നു. ചിത്രീകരണത്തിനായി സ്കോറുകൾ സങ്കൽപ്പിച്ചതാണ്, കൂടാതെ നിലനിർത്തിയ കാൻഡിഡേറ്റുകൾ ഗ്യാരണ്ടീഡ് കൃത്യമായ ടോപ്-കെ അല്ല.

Docblob

ഉദ്യോഗാർത്ഥി പേജുകൾ തിരഞ്ഞെടുക്കപ്പെട്ടശേഷം, റാങ്കിംഗ് ഘട്ടത്തിന് ടേം ആവർത്തനങ്ങൾ, ഫീൽഡ് കവറേജ്, സംഭവങ്ങളുടെ സ്ഥാനങ്ങളും അടുത്തായ്മയും ആവശ്യമാണ്. ഇൻവേർട്ടഡ് ഇൻഡക്സ് വഴി ഈ ഡാറ്റ നേടുന്നത് പല ടേം-ഡോക്യുമെന്റ് ജോഡികളിലായി ചിതറിക്കിടക്കുന്ന ആക്‌സസ്സുകൾ ആവശ്യപ്പെടും. Photon-ൽ, docblob എന്നു വിളിക്കുന്ന ഒരു സംക്ഷിപ്ത ഡോക്യുമെന്റ്-പ്രതി റെക്കോർഡ് നാം സംഭരിക്കുന്നു; അതിൽ ടേം ആവർത്തനങ്ങൾ, ഒരു ടേം ഏത് ഫീൽഡുകളിൽ പ്രത്യക്ഷപ്പെട്ടു, ഡോക്യുമെന്റിൽ അത് എവിടെ സംഭവിച്ചു എന്നിവ ഉൾക്കൊള്ളുന്നു. അതിന്റെ ഫലമായി, ഒരു ഉദ്യോഗാർത്ഥിയെ റാങ്ക് ചെയ്യാൻ ഓരോ ഡോക്യുമെന്റിനും ഒരൊറ്റ ലുക്കപ്പ് മതി.

ഡീകോഡിംഗ് ആവശ്യത്തിനേക്കാൾ കൂടുതലാകാതിരിക്കാൻ ഈ ഫോർമാറ്റ് രൂപകൽപ്പന ചെയ്തിരിക്കുന്നു. ഒരു docblob-ിൽ, ഫീൽഡുകൾ ടെക്സ്റ്റ് അനലൈസർ പ്രകാരം ഗ്രൂപ്പുചെയ്തിരിക്കുന്നു. ഓരോ ഗ്രൂപ്പിലും Elias-Fano ഉപയോഗിച്ച് എൻകോഡ് ചെയ്ത ഒരു ക്രമീകരിച്ച ടേം ലിസ്റ്റ് സംഭരിച്ചിരിക്കുന്നു, അതിനാൽ മുഴുവൻ ലിസ്റ്റും ആദ്യം വ്യാപിപ്പിക്കാതെ തന്നെ ഒരു ക്വറി ടേം നേരിട്ട് തിരയാൻ കഴിയും. ഒരു ഫീൽഡ് മാസ്ക് ഒരു ടേം എവിടെ സംഭവിച്ചെന്ന് അടയാളപ്പെടുത്തുന്നു, ഒരു ഫ്രീക്വൻസി കൗണ്ട് അത് എത്രത്തവണ സംഭവിച്ചെന്ന് പിന്തുടരുന്നു, കൂടാതെ യഥാർത്ഥ സ്ഥാനങ്ങൾ സ്ഥാനം വ്യത്യാസങ്ങളായി എൻകോഡ് ചെയ്ത ഓരോ ടേം-ഫീൽഡ് ജോഡിയിലെയും പ്രത്യേക ബ്ലോക്കുകളിൽ നിലകൊള്ളുന്നു. യഥാർത്ഥത്തിൽ പൊരുത്തപ്പെട്ട ടേമുകളുമായി ബന്ധപ്പെട്ട ബ്ലോക്കുകൾ മാത്രമേ ഡീകോഡ് ചെയ്യുകയുള്ളൂ, അതേസമയം റെക്കോർഡിലെ മറ്റെല്ലാം കംപ്രസ് ചെയ്ത ഫോർമാറ്റിലേയ്ക്ക് തന്നെ തുടരുന്നു.

ആ സെലക്ടീവ് ഡീകോഡിംഗ് അനുപാതികമായ ചെലവ് വർദ്ധനവില്ലാതെ കൂടുതൽ ഡാറ്റ ഓരോ ഡോക്യുമെന്റിലും സംഭരിക്കാൻ docblob-നെ സഹായിക്കുന്നു. റെക്കോർഡ് വളർത്തുന്നത് ഓരോ ലുക്ക് അപ്പിനും കൂടുതൽ ജോലി ചെയ്യാൻ നിർബന്ധിക്കുന്നില്ല, കാരണം റാങ്കിംഗ് മുഴുവൻ റെക്കോർഡിനേക്കാളും പൊരുത്തപ്പെടുന്ന പദങ്ങൾക്ക് പ്രസക്തമായ ഭാഗങ്ങളിൽ മാത്രമേ സ്പർശിക്കുന്നുള്ളൂ.

ഒരു docblob റാങ്കിംഗ് ഡാറ്റയെ കോംപാക്റ്റായ പെർ-ഡോക്യുമെന്റ് റെക്കോർഡായി ഗ്രൂപ്പ് ചെയ്യുന്നു. എലിയാസ്-ഫാനോ എൻകോഡ് ചെയ്ത ടേം ലിസ്റ്റിൽ ക്വറി പദങ്ങൾ ലുക്ക് അപ്പ് ചെയ്യപ്പെടുന്നു; ബന്ധമില്ലാത്ത പദങ്ങൾ കംപ്രസ് ചെയ്യപ്പെടുമ്പോൾ പൊരുത്തപ്പെടുന്ന പദങ്ങൾക്ക് ആവശ്യമായ ഡാറ്റ ഫീൽഡ് മാസ്കുകൾ, ഫ്രീക്വൻസികൾ, പൊസിഷൻ ബ്ലോക്കുകൾ എന്നിവ നൽകുന്നു. ടേം ഐഡികളും സ്ഥാനങ്ങളും ചിത്രീകരണത്തിനായി നൽകിയിരിക്കുന്നവയാണ്.

ബാച്ച് ചെയ്ത റീഡുകളും മെമ്മറിയുമായി പ്രവർത്തിക്കലും

കൂടുതൽ കാര്യക്ഷമമായ ഡാറ്റ പ്രതിനിധീകരണങ്ങൾ ഉണ്ടെങ്കിലും, മറ്റ് റിസോഴ്സുകൾ തീരുന്നതിന് മുമ്പ് RAM തീർന്നുപോകുന്നു, അതിനാൽ ഡിസ്കിൽ സംഭരിച്ചിരിക്കുന്ന ഡാറ്റ ഞങ്ങൾ ഇടയ്ക്കിടെ ആക്സസ് ചെയ്യേണ്ടതുണ്ട്. ഫോട്ടോൺ അസിൻക്രണസ് ഡിസ്ക് റീഡുകളും ബാച്ച് റീഡുകൾക്കായി ഒപ്റ്റിമൈസ് ചെയ്ത കാഷെയും ഉപയോഗിച്ച് ഈ ആക്സസുകൾ വേഗത്തിലാക്കുന്നു, ഓരോ അഭ്യർത്ഥനയ്ക്കും വേണ്ടിയുള്ള കാത്തിരിപ്പ് സമയം വെട്ടിക്കുറയ്ക്കുന്നു. മുൻകാല സിസ്റ്റവുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ ടെയിൽ ലേറ്റൻസിയിൽ ഗണ്യമായ പുരോഗതിക്ക് ഇത് സംഭാവന ചെയ്യുന്നു.

ഡിസ്ക് റീഡുകൾ നൽകുന്നതിന് മുമ്പ് ഫോട്ടോൺ അതിന്റെ കാഷെയിലെ അറിയപ്പെടുന്ന റെക്കോർഡ് ഓഫ്സെറ്റുകളുടെ ഒരു ബാച്ച് പരിശോധിക്കുന്നു. കാഷെ ഹിറ്റുകൾ തയ്യാറാക്കിയ ബഫറിലേക്ക് പകർത്തപ്പെടുന്നു; മിസ്സുകൾ io_uring വഴി സമർപ്പിക്കപ്പെടുന്നു, അതുവഴി ഡിസ്ക് കാത്തിരിപ്പുകൾ ഓവർലാപ്പ് ചെയ്യാൻ കഴിയും, കൂടാതെ മടക്കിനൽകിയ ഡാറ്റ കാഷെ പോപ്പുലേറ്റ് ചെയ്യുന്നു. റെക്കോർഡുകളും ടൈംലൈനുകളും സ്കീമാറ്റിക് ആണ്, അളന്ന ലേറ്റൻസികളല്ല.

ഓവർലാപ്പിംഗ് ഡിസ്ക് കാത്തിരിപ്പുകൾ

ഒരു ഫയലിന്റെ വിവിധ ഭാഗങ്ങളിൽ സ്ഥിതി ചെയ്യുന്ന നൂറ് ഡോക്യുമെന്റുകളുടെ ഫീച്ചറുകൾ നേടിയെടുക്കാൻ റാങ്കിംഗിന് ആവശ്യമാണ്. മെമ്മറി പോയിന്ററുകൾ വഴി വായിക്കാൻ കഴിയുന്ന തരത്തിൽ ഫയലിനെ വെർച്വൽ അഡ്രസ് സ്പേസിലേക്ക് മാപ്പ് ചെയ്യാൻ ഞങ്ങളുടെ മുൻകാല സിസ്റ്റം mmap ഉപയോഗിച്ചു. എന്നിരുന്നാലും, മെമ്മറിയിൽ ഇല്ലാത്ത ഒരു പേജ് ആക്സസ് ചെയ്യുന്നതിന് ഇപ്പോഴും ഒരു ഡിസ്ക് റീഡ് ആവശ്യമാണ്. കണക്കുകൂട്ടൽ തുടരുന്നതിന് മുമ്പ് ത്രെഡിന് ഡാറ്റയ്ക്കായി കാത്തിരിക്കേണ്ടി വന്നു, കൂടാതെ കോൾഡ് റെക്കോർഡുകൾ സീക്വൻഷ്യലായി വായിക്കേണ്ടി വന്നപ്പോൾ ഈ കാത്തിരിപ്പ് സമയം വർദ്ധിച്ചു.

റെക്കോർഡ് ഓഫ്‌സെറ്റുകൾ മുൻകൂട്ടി അറിയാമെന്ന വസ്തുത ഫോട്ടോൺ പ്രയോജനപ്പെടുത്തുന്നു, അതിനാൽ നമുക്ക് ഒരേസമയം നിരവധി റീഡുകൾ സമർപ്പിക്കാം. ഇത് റിയാക്ടർ കൈകാര്യം ചെയ്യുന്നു: സമർപ്പിത വർക്കർ ത്രെഡുകൾ io_uring വഴി ബാച്ചുകൾ സമർപ്പിക്കുകയും അവർ വായിച്ച ഡാറ്റ കോളിംഗ് കോഡിലേക്ക് കൈമാറുകയും ചെയ്യുന്നു. ഓരോ ത്രെഡും സ്വന്തമായി io_uring പരിപാലിക്കുന്നു; ലോഡ് ഏറ്റവും കുറഞ്ഞ റിയാക്ടറിലേക്ക് ബാച്ചുകൾ അയക്കുന്നു. മുൻകൂട്ടി രജിസ്റ്റർ ചെയ്ത ഫയൽ ഡെസ്ക്രിപ്റ്ററുകളും ബഫർ പൂളുകളും ആവർത്തിച്ചുള്ള റീഡുകളുടെ ഓവർഹെഡ് കുറയ്ക്കുന്നു. ഈ അസിൻക്രണസ് എക്സിക്യൂഷൻ ഒന്നിലധികം പ്രവർത്തനങ്ങൾക്കായുള്ള കാത്തിരിപ്പുകൾ ഒവർലാപ്പ് ചെയ്യാൻ അനുവദിക്കുന്നു, ഇത് ടെയിൽ ലേറ്റൻസി കുറയ്ക്കുന്നു.

ഡ്രൈവ് ആക്സസുകളുടെ എണ്ണം കുറയ്ക്കൽ

റീഡുകൾ സമർപ്പിക്കുന്നതിന് മുമ്പ്, ഫോട്ടോൺ ഇൻ-മെമ്മറി കാഷെയിലെ മുഴുവൻ ബാച്ചും പരിശോധിക്കുന്നു. നഷ്ടപ്പെട്ട റെക്കോർഡുകൾക്കായുള്ള അഭ്യർത്ഥനകൾ മാത്രം ഡിസ്കിലേക്ക് പോകുന്നു; വായിച്ച ഡാറ്റ പിന്നീട് കാഷെ പോപ്പുലേറ്റ് ചെയ്യുന്നു.

ബാച്ച് ചെയ്ത റീഡുകൾക്കായി കാഷെ രൂപകൽപ്പന ചെയ്‌തിരിക്കുന്നു. പ്രത്യേകിച്ചും:

  • ഹിറ്റ് ആയതിന് ശേഷം പ്രത്യേക അലോക്കേഷൻ ഇല്ല. പകരം, കോളിംഗ് കോഡ് മുൻകൂട്ടി തയ്യാറാക്കിയ ബഫറിലേക്ക് ഡാറ്റ പകർത്തപ്പെടുന്നു.
  • റീഡർ ലോക്ക് അക്വിസിഷൻ നടത്തുന്നില്ല. പകരം, ഇത് ഡാറ്റ പതിപ്പ് പരിശോധിക്കുകയും ഒരു റൈറ്ററുമായി വൈരുദ്ധ്യമുണ്ടെങ്കിൽ വീണ്ടും ശ്രമിക്കുകയും ചെയ്യുന്നു.
  • ഓരോ റീഡിലും പങ്കിട്ട LRU ലിസ്റ്റിലേക്കുള്ള അപ്ഡേറ്റുകൾ ആവശ്യമുള്ളതിന് പകരം ഇത് CLOCK എവിക്ഷൻ ഉപയോഗിക്കുന്നു.
  • ഇത് സിപിയു കാഷെ പ്രെഫെച്ചിംഗ് ഉപയോഗിക്കുന്നു, അവിടെ വരാനിരിക്കുന്ന റെക്കോർഡുകൾക്കായുള്ള മെറ്റാഡാറ്റയും ഡാറ്റയും മുൻകൂട്ടി അഭ്യർത്ഥിക്കപ്പെടുന്നു.

ഈ ഒപ്റ്റിമൈസേഷനുകൾ ഞങ്ങൾ ശ്രദ്ധിക്കുന്ന വർക്ക്ലോഡുകളിലെ പ്രകടനത്തിന് ഹാനികരമാകാതെ ലേറ്റൻസി കുറയ്ക്കുന്നു.

സെർവിംഗിൽ നിന്ന് പ്രത്യേകം ഇൻഡക്സ് നിർമ്മിക്കുകയും അപ്ഡേറ്റ് ചെയ്യുകയും ചെയ്യുന്നു

ഫോട്ടോണിൽ, ഇൻഡക്സ് നിർമ്മാണവും ക്വറി സെർവിംഗും വ്യത്യസ്ത നോഡുകളിലാണ് പ്രവർത്തിക്കുന്നത്. ഇൻഡക്സർമാർ ഡാറ്റയെ റെഡി സ്റ്റോറേജ് ഘടനകളാക്കി മാറ്റുന്നു, അതേസമയം സെർവിംഗ് നോഡുകൾ അവ വായിക്കുകയും വീണ്ടെടുക്കലും റാങ്കിംഗും നടത്തുകയും ചെയ്യുന്നു. ഫലമായി, ഇൻഡക്സ് നിർമ്മാണം സിപിയുവിനായി സെർച്ച് ക്വറികളുമായി മത്സരിക്കുന്നില്ല, കൂടാതെ ഈ ടാസ്കുകൾക്കായുള്ള റിസോഴ്സുകൾ സ്വതന്ത്രമായി സ്കെയിൽ ചെയ്യാൻ കഴിയും.

ഈ വേർതിരിവ് മുൻകാല ഇംപ്ലിമെന്റേഷനിലുണ്ടായിരുന്ന വീണ്ടെടുക്കൽ, സമന്വയ തടസ്സങ്ങൾ പരിഹരിക്കുന്നു. ക്വറികൾ സെർവ് ചെയ്ത അതേ ക്ലസ്റ്ററിനുള്ളിലാണ് ഇൻഡക്സ് നിർമ്മാണം പ്രവർത്തിച്ചിരുന്നത് എന്നതിനാൽ, പരാജയപ്പെട്ട ഒരു നോഡ് വീണ്ടെടുക്കുന്നതിനോ ഡാറ്റയുടെ പുതിയ പകർപ്പ് ചേരുന്നതിനോ ഡോക്യുമെന്റുകൾ യഥാസ്ഥാനത്ത് വീണ്ടും ഇൻഡക്സ് ചെയ്യേണ്ടി വന്നിരുന്നു, ഈ പ്രക്രിയ ദിവസങ്ങൾ എടുക്കുകയും വീണ്ടെടുക്കൽ സമയത്ത് ഭാഗിക പ്രതികരണങ്ങൾ വർദ്ധിപ്പിക്കുകയും ചെയ്തു. ഫോട്ടോൺ ആ കപ്ലിംഗ് നീക്കം ചെയ്യുന്നു; ഇൻഡക്സർമാർ വിതരണം ചെയ്ത ജോലികളായി പ്രവർത്തിക്കുന്നു, അത് സെർവിംഗ് നോഡുകളിൽ നിന്ന് സ്വതന്ത്രമായി പതിപ്പ് തയ്യാറാക്കിയ, സെർവ് ചെയ്യാൻ തയ്യാറായ ഇൻഡക്സ് ഘടനകൾ നിർമ്മിക്കുന്നു, അതിനാൽ ഇൻഡക്സിന്റെ അടുത്ത പതിപ്പ് നിർമ്മിക്കുന്നത് ഇനി തത്സമയ ട്രാഫിക്കുമായി മത്സരിക്കുന്നില്ല.

തത്സമയ ക്വറി സെർവിംഗിൽ നിന്ന് ഇൻഡക്സ് നിർമ്മാണം പ്രത്യേകം പ്രവർത്തിക്കുന്നു. പില്ലർ സോഴ്സ് ഡാറ്റ എക്സ്പോർട്ട് ചെയ്യുന്നു, YTsaurus ഷാർഡ് പ്രകാരം പതിപ്പ് ടേബിളുകൾ തയ്യാറാക്കുന്നു, കൂടാതെ സമാന്തര ഇൻഡക്സർമാർ സെർവ് ചെയ്യാൻ തയ്യാറായ ഇൻഡക്സ് ഘടനകൾ ഒബ്ജക്റ്റ് സ്റ്റോറേജിലേക്ക് എഴുതുന്നു. വീണ്ടെടുക്കലിനും റാങ്കിംഗിനുമായി സെർവിംഗ് നോഡുകൾ ആ ഘടനകൾ ലോഡ് ചെയ്യുന്നു; ഇൻഡക്സർ കറൻസിയും ഷാർഡ് കൗണ്ടും സ്വതന്ത്രമായി കോൺഫിഗർ ചെയ്യപ്പെട്ടിരിക്കുന്നു.

തയ്യാറെടുപ്പും വിതരണം ചെയ്ത നിർമ്മാണവും

സജീവമായ ഇൻഡക്സിനായി ഡോക്യുമെന്റുകൾ തിരഞ്ഞെടുത്ത് സോഴ്സ് എക്സ്പോർട്ട് തയ്യാറാക്കിക്കൊണ്ട് ഒരു നിർമ്മാണം ആരംഭിക്കുന്നു. കൺട്രോളർ സോഴ്സ് പതിപ്പ്, ഇൻപുട്ട് ടേബിളുകൾ, ഷാർഡുകളുടെ പ്രതീക്ഷിക്കുന്ന എണ്ണം എന്നിവ രേഖപ്പെടുത്തുന്നു. YTsaurus-ലെ MapReduce ജോലികൾ ടെക്സ്റ്റ്, മെറ്റാഡാറ്റ, ഫ്രാഗ്മെന്റുകൾ, ഫീച്ചറുകൾ, മുൻകൂട്ടി കണക്കാക്കിയ എംബെഡിംഗുകൾ എന്നിവ ഷാർഡ് പ്രകാരം വിഭജിക്കപ്പെട്ട പതിപ്പ് ടേബിളുകളിലേക്ക് തയ്യാറാക്കുന്നു. ഓരോ ഇൻഡക്സറും തയ്യാറാക്കിയ ടേബിൾ സ്ട്രീം ചെയ്യുകയും അതിന്റെ ഷാർഡിനായുള്ള ഘടനകൾ നിർമ്മിക്കുകയും ടെക്സ്റ്റ് സെഗ്മെന്റുകൾ മെർജ് ചെയ്യുകയും ചെയ്യുന്നു. അതിന്റെ ഘടകങ്ങളുടെ വിവരണത്തോടൊപ്പം തയ്യാറായ ഇൻഡക്സ് ഒബ്ജക്റ്റ് സ്റ്റോറേജിലേക്ക് അപ്‌ലോഡ് ചെയ്യപ്പെടുന്നു.

ഷാർഡ് കൗണ്ടും ഒരേസമയം പ്രവർത്തിക്കുന്ന ഇൻഡക്സർമാരുടെ എണ്ണവും സ്വതന്ത്രമായി കോൺഫിഗർ ചെയ്‌തിരിക്കുന്നു, അതിനാൽ ഒരു നിർമ്മാണത്തിന് നിരവധി തരംഗങ്ങളായി പ്രവർത്തിക്കാനാകും, അല്ലെങ്കിൽ കൂടുതൽ മെഷീനുകൾ സമാന്തരമായി പ്രവർത്തിക്കാൻ അനുവദിക്കാം. വിതരണം ചെയ്ത തയ്യാറെടുപ്പും സമാന്തര ഇൻഡക്സർമാരും മുഴുവൻ വെബ് ഇൻഡക്സും ഒറ്റക്കക്കത്തിലുള്ള മണിക്കൂറുകൾക്കുള്ളിൽ നിർമ്മിക്കാൻ അനുവദിക്കുന്നു, ഇത് മുൻകാല സിസ്റ്റത്തെ അപേക്ഷിച്ച് ഗണ്യമായ പുരോഗതിയാണ്.

ഒരു പുതിയ പതിപ്പ് വിന്യചിക്കുന്നു

വിന്യാസത്തിന് മുമ്പ്, പുതിയ ഇൻഡക്സ് തയ്യാറാണോ എന്ന് കൺട്രോളർ പരിശോധിക്കുന്നു. ഡാറ്റ അപൂർണ്ണമാണെങ്കിൽ, വിന്യാസം സ്വയമേവ തടയപ്പെടും.

ഒന്നിലധികം സെർവിംഗ് ഗ്രൂപ്പുകൾ ഉള്ളപ്പോൾ, കൺട്രോളർ അവ ഓരോന്നായി അപ്ഡേറ്റ് ചെയ്യുന്നു. ഇത് ആദ്യം ബ്രോക്കർ റൂട്ടിംഗിൽ നിന്ന് ഒരു ഗ്രൂപ്പിനെ നീക്കം ചെയ്യുകയും പുതിയ ഇൻഡക്സ് പതിപ്പിൽ അത് ആരംഭിക്കുകയും ചെയ്യുന്നു. അഭ്യർത്ഥനകൾ സെർവ് ചെയ്യുന്നതിന് മുമ്പ്, ഷാർഡുകൾ സെർച്ച് ലോഗുകളെ അടിസ്ഥാനമാക്കി ഒരു പ്രത്യേക വാർംഅപ്പ് ഘട്ടത്തിലൂടെ കടന്നുപോകുന്നു, ഇത് പ്രാരംഭ അവസ്ഥ മുൻകൂട്ടി പോപ്പുലേറ്റ് ചെയ്യുകയും യഥാർത്ഥ ട്രാഫിക്കിലേക്കുള്ള മാറ്റം സുഗമമാക്കുകയും ചെയ്യുന്നു. വാർംഅപ്പിന് ശേഷം, കൺട്രോളർ ഇൻഡക്സ് അവസ്ഥയും റെഡിനസും പരിശോധിക്കുന്നു, തുടർന്ന് ഗ്രൂപ്പിനെ റൂട്ടിംഗിലേക്ക് മടക്കുന്നു. ഈ സമയത്ത് മറ്റ് ഗ്രൂപ്പുകൾ അഭ്യർത്ഥനകൾ സെർവ് ചെയ്യുന്നത് തുടരുന്നു. പ്രവർത്തന അവസ്ഥ പെർസിസ്റ്റ് ചെയ്തിരിക്കുന്നതിനാൽ, ഒരു റീസ്റ്റാർട്ട് ഒരു നിർമ്മാണം ആദ്യം മുതൽ ആരംഭിക്കാൻ നിർബന്ധിക്കുന്നില്ല; കൺട്രോളറിന് ഇതിനകം പുരോഗമിച്ചുകൊണ്ടിരിക്കുന്ന തയ്യാറെടുപ്പുകളിലേക്ക് വീണ്ടും അറ്റാച്ചുചെയ്യാനോ, തയ്യാറായ ഫലം വീണ്ടും ഉപയോഗിക്കാനോ, സേവ് ചെയ്ത ഘട്ടത്തിൽ നിന്ന് തടസ്സപ്പെട്ട റൊട്ടേഷൻ തുടരാനോ കഴിയും.

സെർച്ച് വെർട്ടിക്കലുകളിലുടനീളം ഡാറ്റ അപ്ഡേറ്റ് സമയങ്ങൾ വ്യത്യാസപ്പെടുന്നു. ഉയർന്ന ഫ്രെഷ്‌നെസ് ആവശ്യകതകളുള്ള വെർട്ടിക്കലുകൾക്ക്, ഡോക്യുമെന്റ് ഡെെവറിക്ക് ഒറ്റക്കക്കത്തിലുള്ള മിനിറ്റുകൾ മാത്രമേ എടുക്കൂ. സോഴ്സ് ഡോക്യുമെന്റുകൾ വീണ്ടും ഇൻഡക്സ് ചെയ്യാതെ തന്നെ ഡാറ്റയുടെ ഒരു അധിക പകർപ്പ് ഏകദേശം അരമണിക്കൂറിനുള്ളിൽ വിന്യചിക്കാൻ കഴിയും; തയ്യാറായ ഇൻഡക്സുകൾ ലോഡ് ചെയ്യുകയും ഷാർഡുകളുമായി അറ്റാച്ചുചെയ്യുകയും ചെയ്യുന്നു.

പുതിയ ഇൻഡക്സ് പൂർത്തിയായി എന്ന് കൺട്രോളർ പരിശോധിക്കുന്നു, തുടർന്ന് ഒരു സമയം ഒരു സെർവിംഗ് ഗ്രൂപ്പ് റൊട്ടേറ്റ് ചെയ്യുന്നു. ഒരു ഗ്രൂപ്പ് ബ്രോക്കർ റൂട്ടിംഗിൽ നിന്ന് പുറത്തുകടക്കുന്നു, പുതിയ പതിപ്പ് ലോഡ് ചെയ്യുന്നു, സെർച്ച്-ലോഗ് ക്വറികൾ ഉപയോഗിച്ച് അതിന്റെ കാഷുകൾ വാർം ചെയ്യുന്നു, കൂടാതെ ട്രാഫിക്കിലേക്ക് മടങ്ങുന്നതിന് മുമ്പ് റെഡിനസ് പരിശോധനകളിൽ വിജയിക്കുന്നു. മറ്റ് ഗ്രൂപ്പുകൾ സെർവിംഗ് തുടരുന്നു, കൂടാതെ പെർസിസ്റ്റ് ചെയ്ത കൺട്രോളർ അവസ്ഥ തടസ്സപ്പെട്ട റൊട്ടേഷൻ പുനരാരംഭിക്കാൻ അനുവദിക്കുന്നു.

ഞങ്ങളുടെ സെർച്ച് സ്റ്റാക്കിനുള്ളിലെ മൈഗ്രേഷനും വാലിഡേഷനും

പ്രതികരണ സമയം കുറയ്ക്കുമ്പോൾ പ്രവർത്തനക്ഷമതയും സെർച്ച് ഗുണനിലവാരവും സംരക്ഷിച്ച ഒരു എഞ്ചിൻ ഉപയോഗിച്ച് പഴയ സിസ്റ്റം മാറ്റിസ്ഥാപിക്കുക എന്നതായിരുന്നു ഞങ്ങളുടെ ആദ്യ ലക്ഷ്യം. തത്സമയ ട്രാഫിക്കിലേക്ക് നീങ്ങുന്നതിന് മുമ്പ് പുനർനിർമ്മിക്കാവുന്ന ലോഡ് ടെസ്റ്റുകളും ഓഫ്‌ലൈൻ ഗുണനിലവാര മൂല്യനിർണ്ണയങ്ങളും ഉപയോഗിച്ച് ഫോട്ടോൺ ഞങ്ങൾ ഘട്ടങ്ങളായി സാധൂകരിച്ചു. ഫോട്ടോൺ ഇപ്പോൾ ഞങ്ങളുടെ പ്രൊഡക്ഷൻ സെർച്ച് സ്റ്റാക്കിൽ വീണ്ടെടുക്കലിനും റാങ്കിംഗിനും ശക്തി നൽകുന്നു, പഴയ സിസ്റ്റത്തേക്കാൾ ഗണ്യമായി കുറഞ്ഞ പ്രതികരണ സമയമാണുളളത്.

ലോഡ് ടെസ്റ്റിംഗും മൂല്യനിർണ്ണയങ്ങളും

പ്രകടന പരിശോധനയ്ക്കായി, കോൺഫിഗർ ചെയ്യാവുന്ന അറൈവൽ റേറ്റുകളിൽ ഞങ്ങളുടെ സെർച്ച് ലോഗുകളിൽ നിന്നുള്ള ക്വറികൾ റീപ്ലേ ചെയ്യുന്ന ഒരു ലോഡ്-ടെസ്റ്റിംഗ് ടൂൾ ഞങ്ങൾ നിർമ്മിച്ചു. ഇത് റണ്ണുകളിലുടനീളമുള്ള ഫലങ്ങൾ താരതമ്യം ചെയ്യുകയും നിരീക്ഷിച്ച പ്രകടനം തമ്മിലുള്ള വ്യത്യാസങ്ങൾ സ്ഥിരമാണോ എന്ന് വിലയിരുത്താൻ സ്റ്റാറ്റിസ്റ്റിക്കൽ പരിശോധനകൾ പ്രയോഗിക്കുകയും ചെയ്യുന്നു. ഗുണനിലവാരത്തിലെ കുറവുകൾ പരിശോധിക്കുന്നതിനായി ഞങ്ങളുടെ ആന്തരിക ഓഫ്‌ലൈൻ മൂല്യനിർണ്ണയ സിസ്റ്റങ്ങളിൽ ഫോട്ടോണും പഴയ സിസ്റ്റവും ഞങ്ങൾ സമാന ഡാറ്റാസെറ്റുകളിൽ പ്രത്യേകം വിലയിരുത്തി.

ഈ പരിശോധനകൾക്ക് ശേഷം, ഷാഡോ ട്രാഫിക് ഉപയോഗിച്ച് ഞങ്ങൾ ഒരേസമയം രണ്ട് എഞ്ചിനുകളിലേക്കും തത്സമയ ക്വറികൾ അയച്ചു. ഉപയോക്താക്കൾക്ക് ഏത് എഞ്ചിനാണ് സേവനം നൽകിയതെന്ന് മാറ്റുന്നതിന് മുമ്പ് പ്രൊഡക്ഷൻ വർക്ക്ലോഡുകളിൽ അവയുടെ പ്രകടനവും ഫലങ്ങളും താരതമ്യം ചെയ്യാൻ ഇത് ഞങ്ങളെ അനുവദിച്ചു. തുടർന്ന് ഉപയോക്താക്കളുടെ ചെറിയ ഉപസെറ്റുകൾക്കായി ഞങ്ങൾ ഫോട്ടോൺ പ്രവർത്തനക്ഷമമാക്കുകയും ക്രമേണ റോൾഔട്ട് വിപുലീകരിക്കുകയും ചെയ്തു, ഉടനീളം ഗുണനിലവാരവും പ്രകടനവും നിരീക്ഷിച്ചു. ഗുണനിലവാരത്തിൽ കുറവുകളൊന്നുമില്ലാതെ ആദ്യ പതിപ്പ് സ്വീകാര്യതാ പരിശോധനയിൽ വിജയിച്ചു, കൂടാതെ എല്ലാ പ്രൊഡക്ഷൻ ട്രാഫിക്കും ഫോട്ടോൺ സെർവ് ചെയ്യുന്നത് വരെ ഞങ്ങൾ റോൾഔട്ട് തുടർന്നു.

പ്രൊഡക്ഷനിൽ അളന്ന മെച്ചപ്പെടുത്തലുകൾ

ഞങ്ങളുടെ പ്രൊഡക്ഷൻ വർക്ക്ഫ്ലോയിൽ, p99 പ്രതികരണ സമയം പഴയ സിസ്റ്റത്തിലെ ഏകദേശം 800 മി.സെക്കൻഡിൽ നിന്ന് ഫോട്ടോണിൽ ഏകദേശം 65 മി.സെക്കൻഡായി കുറഞ്ഞു. ഈ അളവെടുപ്പ് ഫോട്ടോണിനുള്ളിലെ എല്ലാ ഘട്ടങ്ങളും ഉൾക്കൊള്ളുന്നു, എന്നാൽ ഉയർന്ന തലത്തിലുള്ള സെർച്ച് സ്റ്റാക്കിലെ തുടർന്നുള്ള ഘട്ടങ്ങളെ ഒഴിവാക്കുന്നു. ഇൻഡക്സ് പതിപ്പുകൾ മാറുന്നതുമായി ബന്ധപ്പെട്ട ലേറ്റൻസി സ്പൈകുകൾ ഞങ്ങൾക്ക് ഇനി അനുഭവപ്പെടുന്നില്ല.

ഓരോ ഡോക്യുമെന്റിലും ഏകദേശം 2.5 മടങ്ങ് കൂടുതൽ ഡാറ്റ സംഭരിക്കുമ്പോൾ തന്നെ പഴയ സിസ്റ്റത്തിന്റെ കണ്ടന്റ് നോഡുകളേക്കാൾ ഏകദേശം 20% കുറവ് തുല്യമായ സെർവിംഗ് മെഷീനുകൾ ഫോട്ടോൺ ഉപയോഗിക്കുന്നു. മൈഗ്രേഷന് ശേഷം, പഴയ സിസ്റ്റത്തിന് അപ്പുറം റാങ്കിംഗ് ഗുണനിലവാരം മെച്ചപ്പെടുത്താൻ ഞങ്ങൾ ഈ അധിക ഡാറ്റ ഉപയോഗിച്ചു.

മെമ്മറിയിൽ സൂക്ഷിക്കേണ്ട ഡാറ്റയുടെ അളവും ഫോട്ടോൺ കുറയ്ക്കുന്നു. RAM-ൽ mlock ഉപയോഗിച്ച് അതേ ഫോട്ടോൺ ഡാറ്റാസെറ്റ് പിൻ ചെയ്യുന്നത് ഫോട്ടോൺ നിലവിൽ ഉപയോഗിക്കുന്നതിനേക്കാൾ ഏകദേശം 4.6 മടങ്ങ് റെസിഡന്റ് മെമ്മറി ആവശ്യമായി വരും.

വേഗതയേറിയ സെർച്ച് API പ്രീസെറ്റിന്റെ മൂല്യനിർണ്ണയം

ലേറ്റൻസി-സെൻസിറ്റീവ് വർക്ക്ലോഡുകൾക്കായി രൂപകൽപ്പന ചെയ്‌തിരിക്കുന്ന ഞങ്ങളുടെ സെർച്ച് API-നായുള്ള പുതിയ വേഗതയേറിയ പ്രീസെറ്റിന്റെ അടിസ്ഥാനമായും ഞങ്ങൾ ഫോട്ടോൺ ഉപയോഗിച്ചു. ഞങ്ങളുടെ അളവുകൾ അനുസരിച്ച്, വേഗതയേറിയ പ്രീസെറ്റിനായുള്ള സിംഗിൾ-സെർച്ച്-കോൾ ലേറ്റൻസി p50-ൽ 160 മി.സെക്കൻഡും p95-ൽ 230 മി.സെക്കൻഡും ആണ്, മറ്റ് സെർച്ച് API പ്രൊവൈഡർമാരുടെ സ്വയം റിപ്പോർട്ട് ചെയ്ത നമ്പറുകളേക്കാൾ കുറവാണ് അല്ലെങ്കിൽ തുല്യമാണ്, എങ്കിലും റിപ്പോർട്ട് ചെയ്യപ്പെട്ട ടെയിൽ പെർസെന്റൈലുകൾ വ്യത്യാസപ്പെട്ടിരിക്കുന്നു.

ആറ് ഏജന്റിക് ബെഞ്ച്മാർക്കുകളിൽ ഞങ്ങൾ വേഗതയേറിയ പ്രീസെറ്റ് വിലയിരുത്തി: WideSearch, BrowseComp, DSQA, FRAMES, SEAL-0, SEAL-Hard. ഈ വിലയിരുത്തലുകളിലുടനീളം, പരീക്ഷിച്ച കോൺഫിഗറേഷനുകളിൽ ഏറ്റവും കുറഞ്ഞ കണക്കാക്കിയ മൊത്തം മോഡൽ-പ്ലസ്-സെർച്ച് ചെലവും ഏറ്റവും ഉയർന്ന മൊത്തത്തിലുള്ള ടാസ്ക് സ്കോറും ഇതിനുണ്ടായിരുന്നു.

ഏജന്റിക് വർക്ക്ഫ്ലോകൾക്കായി ഒപ്റ്റിമൈസ് ചെയ്ത റാങ്കിംഗുമായി ഫോട്ടോണിനെ വേഗതയേറിയ പ്രീസെറ്റ് ജോടിയാക്കുന്നു, ഗണ്യമായി കുറഞ്ഞ ചെലവിൽ ഡിഫോൾട്ട് പ്രീസെറ്റിന് തുല്യമായ പ്രവർത്തനം നൽകുന്നു. എന്നിരുന്നാലും, ഇത് വിശാലമായ സെർച്ച് ഗുണനിലവാരത്തിൽ ഒരു ട്രേഡ്-ഓഫോടെയാണ് വരുന്നത്. ഡിഫോൾട്ട് പ്രീസെറ്റിനേക്കാൾ കുറഞ്ഞ കമ്പ്യൂട്ട് ആണ് വേഗതയേറിയ പ്രീസെറ്റ് റാങ്കിംഗിനായി ഉപയോഗിക്കുന്നത്. ലോങ്-ടെയിൽ ക്വറികൾ, വിശാലമായ കവറേജ്, ഫല വൈവിധ്യം എന്നിവ ഉൾക്കൊള്ളുന്ന ആന്തരിക ബെഞ്ച്മാർക്കുകളിൽ, ഇത് റിലവൻസിൽ 0.24 പോയിന്റും ഉത്തരം ലഭ്യതയിൽ ഏകദേശം 3 ശതമാനവും കുറവാണ് സ്കോർ ചെയ്യുന്നത്. മോഡലിന്റെ സ്വന്തം റീസണിംഗും അറിവും വ്യത്യാസം നികത്താൻ സഹായിക്കുമെന്നതിനാൽ, ഏജന്റിക് വർക്ക്ഫ്ലോകൾക്ക് ഇത് ന്യായമായ ഒരു ട്രേഡ്-ഓഫ് ആണെന്ന് ഞങ്ങൾ വിശ്വസിക്കുന്നു.

ഡിഫോൾട്ട് PPLX പ്രീസെറ്റും PPLX Fast ഉം തമ്മിലുള്ള ആന്തരിക റിട്രീവൽ-ഗുണമേന്മ താരതമ്യം. പ്രസക്തി (DCG) 2.45-ൽ നിന്ന് 2.21-ലേക്ക് താഴുന്നു, 0.24 പോയിന്റിന്റെ കുറവ്; ഉത്തര ലഭ്യത 0.596-ൽ നിന്ന് 0.567-ലേക്ക് താഴുന്നു, 2.9 ശതമാന പോയിന്റിന്റെ കുറവ്. രണ്ട് പാനലുകളും വ്യത്യസ്തവും ശൂന്യമല്ലാത്തതുമായ ആക്സിസ് അടിസ്ഥാനങ്ങൾ ഉപയോഗിക്കുന്നു, അതിനാൽ ബാർ ഉയരങ്ങൾ അനുപാതപരമായ വ്യത്യാസങ്ങളെക്കാൾ വിടവുകൾ ഊന്നിപ്പറയുന്നു.

ദിവസേനയുള്ള ഏജന്റിക് ടാസ്കുകൾക്കായി ഞങ്ങൾ വേഗത്തിലുള്ള പ്രീസെറ്റ് ശുപാർശ ചെയ്യുന്നു. സമയം കുറഞ്ഞ പ്രാധാന്യമുള്ളതും കൂടുതൽ വെല്ലുവിളി നിറഞ്ഞതോ അവ്യക്തമോ ആയ ചോദ്യങ്ങൾക്ക്, ഡിഫോൾട്ട് പ്രീസെറ്റ് കൂടുതൽ ശക്തമായ ഗുണനിലവാരം വാഗ്ദാനം ചെയ്യുന്നു, ഇത് ഉയർന്ന ലേറ്റൻസിയെയും ചെലവിനെയും ന്യായീകരിക്കുന്നു.

ഉപസംഹാരം

ഞങ്ങളുടെ സെർച്ച് സ്റ്റാക്ക് ഞങ്ങൾ ക്രമേണ റസ്റ്റ് അടിസ്ഥാനമാക്കിയുള്ള ഇൻ-ഹൗസ് ഇൻഫ്രാസ്ട്രക്ചറിലേക്ക് മാറ്റുകയാണ്. ഓപ്പൺ സോഴ്സ് എഞ്ചിന് പകരം ഞങ്ങളുടെ കസ്റ്റം വീണ്ടെടുക്കൽ, റാങ്കിംഗ് എഞ്ചിനായ ഫോട്ടോൺ ഉപയോഗിക്കുന്നത് ഏറ്റവും പുതിയ ഘട്ടമാണ്. ഡാറ്റ പ്രതിനിധീകരണങ്ങൾ, റീഡുകൾ എങ്ങനെ ക്രമീകരിച്ചിരിക്കുന്നു, പുതിയ ഇൻഡക്സുകൾ എങ്ങനെ വിന്യചിച്ചിരിക്കുന്നു എന്നിവയിൽ ഫോട്ടോൺ ഞങ്ങൾക്ക് പൂർണ്ണ നിയന്ത്രണം നൽകുന്നു, ഞങ്ങളുടെ വർക്ക്ലോഡുകൾക്കായി ഓരോ പാളിയും ഒപ്റ്റിമൈസ് ചെയ്യാൻ ഇത് ഞങ്ങളെ അനുവദിക്കുന്നു.

Perplexity-യുടെ ഉൽപ്പന്നങ്ങളിലുടനീളം വേഗതയേറിയ സെർച്ച് പ്രവർത്തനക്ഷമമാക്കാൻ ഫോട്ടോണിന് കഴിഞ്ഞിട്ടുണ്ട് കൂടാതെ സെർച്ച് API-ലെ ഞങ്ങളുടെ പുതിയ വേഗതയേറിയ പ്രീസെറ്റിന് അടിത്തറ നൽകുകയും ചെയ്യുന്നു. മൈഗ്രേഷന് ശേഷം, p99 വീണ്ടെടുക്കൽ-കൂടാതെ-റാങ്കിംഗ് ലേറ്റൻസി ഏകദേശം 800 മി.സെക്കൻഡിൽ നിന്ന് 65 മി.സെക്കൻഡായി കുറഞ്ഞു. ഞങ്ങളുടെ കോംപാക്റ്റ് ഡാറ്റ ഫോർമാറ്റുകൾ ഓരോ ഡോക്യുമെന്റിലും 2.5 മടങ്ങ് കൂടുതൽ ഡാറ്റ സംഭരിക്കാനും ഞങ്ങളെ അനുവദിക്കുന്നു, ഇത് സമ്പന്നമായ ഡോക്യുമെന്റ് വിവരങ്ങളിലേക്ക് വീണ്ടെടുക്കലിനും റാങ്കിംഗിനും പ്രവേശനം നൽകുന്നു.

വേഗത്തിലുള്ള പ്രീസെറ്റ് p50-ൽ 160 മി.സെക്കൻഡും p95-ൽ 230 മി.സെക്കൻഡും ഉള്ള സിംഗിൾ-സെർച്ച്-കോൾ ലേറ്റൻസി നൽകുന്നു. വിലയിരുത്തിയ ആറ് ഏജന്റിക് ബെഞ്ച്മാർക്കുകളിലുടനീളം, ഡിഫോൾട്ട് പ്രീസെട്ടുമായി താര୍‍പത്യം ചെയ്യുമ്പോൾ ഇത് ടാസ്കിന് കണക്കാക്കിയ മോഡൽ-പ്ലസ്-സെർച്ച് ചെലവ് 68% കുറച്ചു, അതേസമയം താരതമ്യപ്പെടുത്താവുന്ന മൊത്തത്തിലുള്ള ടാസ്ക് ഗുനിലവാരം നിലനിർത്തുകയും ചെയ്തു. Perplexity-യുടെ ഉൽപ്പന്നങ്ങൾക്കും ഞങ്ങളുടെ API ഉപയോഗിച്ച് നിർമ്മിക്കുന്ന ഡെവലപ്പർമാർക്കും ഒരുപോലെ, ഞങ്ങളുടെ സെർച്ച് വർക്ക്ലോഡുകൾക്ക് ചുറ്റും രൂപകൽപ്പന ചെയ്‌തിരിക്കുന്ന ഇൻഫ്രാസ്ട്രക്ചറിന്റെ പ്രായോഗിക നേട്ടങ്ങൾ ഈ ഫലങ്ങൾ പ്രകടിപ്പിക്കുന്നു.

ഞങ്ങൾ ഫോട്ടോണിന്റെ പ്രകടനവും സ്റ്റോറേജ് കാര്യക്ഷമതയും മെച്ചപ്പെടുത്തുന്നത് തുടരുന്നു. ഞങ്ങളുടെ വർക്ക്ലോഡുകൾ വളരുമ്പോൾ സെർച്ച് വേഗത നിലനിർത്തിക്കൊണ്ട് തന്നെ വലിയൊരു ഇൻഡക്സും സമ്പന്നമായ ഡോക്യുമെന്റ് ഡാറ്റയും ഒരേ ഹാർഡ്‌വെയറിൽ പിന്തുണയ്ക്കുക എന്നതാണ് ഞങ്ങളുടെ ലക്ഷ്യം.

ഉദ്ധരണി

BibTeX
@online{perplexity2026Photon,
  author = {{Perplexity} and Maksim Morozov and Bogdan Savko and Ruslan Kovalev and Aleksei Bykov and Artur Zayats and Denis Bykov and Nikita Kireev and Jarrod Bryan and Claire Beamer and Jeremy Yang},
  title = {{Photon: Building a retrieval and ranking engine from scratch}},
  date = {2026-09-24},
  url = {https://www.perplexity.ai/hub/blog/photon}
}