ഘട്ടം 2: Embeddings & Semantic Search
വാക്കുകൾ കൃത്യമായി ഒത്തുപോകാത്തപ്പോൾ കീവേഡ് സെർച്ച് പരാജയപ്പെടുന്നു.
ഒരു റെസ്യൂമെയിൽ "team management" എന്നും ഒരു ജോബ് ഡിസ്ക്രിപ്ഷനിൽ "leadership" എന്നും ഉണ്ടെങ്കിൽ, ഒരു സാധാരണ സെർച്ച് ഫലങ്ങൾ ഒന്നും തന്നെ നൽകില്ല. വാക്കുകൾ വ്യത്യസ്തമാണെങ്കിലും അവയുടെ അർത്ഥം ഒന്നാണ്.
എംബെഡിംഗുകളും (embeddings) സെമാന്റിക് സെർച്ചും (semantic search) ഉപയോഗിച്ച് ഘട്ടം 2 ഇത് പരിഹരിക്കുന്നു.
ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നു:
• ടോക്കണൈസേഷൻ (Tokenization): കമ്പ്യൂട്ടറുകൾ വാക്കുകൾ വായിക്കുന്നില്ല, പകരം അവ സംഖ്യകളാണ് വായിക്കുന്നത്. ഒരു ടോക്കണൈസർ ടെക്സ്റ്റിനെ 'ടോക്കണുകൾ' എന്ന് വിളിക്കപ്പെടുന്ന ചെറിയ ഭാഗങ്ങളായി വിഭജിക്കുകയും അവയെ ടോക്കൺ ഐഡികളായി (Token IDs) മാറ്റുകയും ചെയ്യുന്നു. സാധാരണ വാക്കുകൾ ഒരു ടോക്കൺ ആയി മാറുന്നു. അപൂർവ്വമായ വാക്കുകൾ ഒന്നിലധികം ടോക്കണുകളായി വിഭജിക്കപ്പെടുന്നു.
• എംബെഡിംഗുകൾ (Embeddings): ഒരു ടോക്കൺ ഐഡി വെറുമൊരു ലേബൽ മാത്രമാണ്. എംബെഡിംഗ് ലെയർ ആ ഐഡിയെ ഒരു വെക്റ്ററിലേക്ക് (vector) മാറ്റുന്നു. ഒരു ആശയത്തിന്റെ അർത്ഥം പ്രതിനിധീകരിക്കുന്ന സംഖ്യകളുടെ നീണ്ട പട്ടികയാണ് ഒരു വെക്റ്റർ. ഒരു സംഖ്യയ്ക്ക് പകരം, ഒരു ആശയം വിവരിക്കാൻ മോഡൽ നിരവധി ഡൈമൻഷനുകൾ (dimensions) ഉപയോഗിക്കുന്നു.
• ഡൈമൻഷനുകൾ (Dimensions): ഈ സംഖ്യകളെ കോർഡിനേറ്റുകൾ (coordinates) ആയി കരുതുക. ഒരു ഡൈമൻഷൻ "frontend vs backend" എന്നതിനെ പ്രതിനിധീകരിച്ചേക്കാം. മറ്റൊന്ന് "web vs systems" എന്നതിനെ പ്രതിനിധീകരിച്ചേക്കാം. ഉയർന്ന ഡൈമൻഷണൽ വെക്റ്ററുകൾക്ക് ഒരു ഗണിതശാസ്ത്ര ഇടത്തിൽ (mathematical space) "React", "JavaScript" എന്നിവയെ പരസ്പരം അടുത്തായി വയ്ക്കാൻ മോഡലിനെ അനുവദിക്കുന്നു.
• സെമാന്റിക് സെർച്ച് (Semantic Search): നിങ്ങൾ ഒരു ചോദ്യം ചോദിക്കുമ്പോൾ, സിസ്റ്റം ആ ചോദ്യത്തെ ഒരു വെക്റ്ററിലേക്ക് മാറ്റുന്നു. തുടർന്ന്, നിങ്ങളുടെ വെക്റ്ററിനെ സ്റ്റോർ ചെയ്തിട്ടുള്ള ഡോക്യുമെന്റുകളുടെ വെക്റ്ററുകളുമായി അത് താരതമ്യം ചെയ്യുന്നു.
• കോസൈൻ സിമിലാരിറ്റി (Cosine Similarity): ഇത് രണ്ട് വെക്റ്ററുകൾ തമ്മിലുള്ള കോൺ (angle) അളക്കുന്നു. വെക്റ്ററുകൾ ഒരേ ദിശയിലേക്ക് വിരൽ ചൂണ്ടുന്നുണ്ടെങ്കിൽ അവ സമാനമാണ്. നിങ്ങൾ "notice period" എന്ന് മാത്രം സെർച്ച് ചെയ്താലും "resignation requirements" കണ്ടെത്താൻ ഇത് സിസ്റ്റത്തെ സഹായിക്കുന്നു.
പ്രൊഡക്ഷനുമായുള്ള പ്രധാന പാഠങ്ങൾ:
- വെക്റ്റർ ഡാറ്റാബേസുകൾ (Vector Databases): ദശലക്ഷക്കണക്കിന് വെക്റ്ററുകൾ തിരയുന്നത് സാവധാനത്തിലാണ് നടക്കുന്നത്. Pinecone അല്ലെങ്കിൽ Qdrant പോലുള്ള ഡാറ്റാബേസുകൾ മില്ലിസെക്കൻഡുകൾക്കുള്ളിൽ അടുത്തുള്ള വെക്റ്ററുകൾ (nearest neighbors) കണ്ടെത്താൻ ഇൻഡക്സിംഗ് ഉപയോഗിക്കുന്നു.
- മോഡൽ മൈഗ്രേഷനുകൾ (Model Migrations): ഓരോ എംബെഡിംഗ് മോഡലും വ്യത്യസ്തമായ ഗണിതശാസ്ത്ര ഇടമാണ് ഉപയോഗിക്കുന്നത്. നിങ്ങൾക്ക് ഒരു OpenAI വെക്റ്ററിനെ ഒരു Cohere വെക്റ്ററുമായി താരതമ്യം ചെയ്യാൻ കഴിയില്ല. നിങ്ങൾ മോഡലുകൾ മാറ്റുകയാണെങ്കിൽ, നിങ്ങളുടെ എല്ലാ ഡാറ്റയും വീണ്ടും എംബെഡ് (re-embed) ചെയ്യേണ്ടതുണ്ട്.
- ചിലവ് vs ROI: ദശലക്ഷക്കണക്കിന് ചങ്കുകൾ (chunks) വീണ്ടും എംബെഡ് ചെയ്യുന്നത് ചിലവേറിയതാണ്. കൃത്യതയിലുള്ള വർദ്ധനവ് മൈഗ്രേഷൻ ചിലവിനെ ന്യായീകരിക്കുന്നില്ലെങ്കിൽ കമ്പനികൾ പലപ്പോഴും പഴയ മോഡലുകൾ തന്നെ ഉപയോഗിക്കുന്നു.
- നിങ്ങളുടെ റോ ടെക്സ്റ്റ് ചങ്കുകൾ (raw text chunks) എപ്പോഴും സൂക്ഷിച്ചു വെക്കുക. പിന്നീട് നിങ്ങൾ മോഡൽ അപ്ഗ്രേഡ് ചെയ്യുകയാണെങ്കിൽ, പുതിയ വെക്റ്ററുകൾ നിർമ്മിക്കാൻ പഴയ ടെക്സ്റ്റ് ഉപയോഗിക്കാം.
ബുദ്ധിപരമായ പ്രവർത്തനങ്ങൾ നടക്കുന്നത് ഘട്ടം 2-ലാണ്.
Source: https://dev.to/surajrkhonde/phase-2-embeddings-semantic-search-3lco
Optional learning community: https://t.me/GyaanSetuAi
