નફો:
- સમજો કે એમ્બેડિંગ ટેક્સ્ટને સિમેન્ટીક સ્પેસમાં વેક્ટરમાં ફેરવે છે અને સમાન અર્થો નજીકના વેક્ટર છે
- કોસાઇન અને ડોટ સમાનતા મેટ્રિક્સ સાથે ANN શોધ કેવી રીતે કાર્ય કરે છે તે સમજાવવું
- મેટાડેટા ફિલ્ટરિંગની કિંમત, સ્કેલ અને જરૂરિયાતના આધારે સામાન્ય વેક્ટર ડેટાબેસેસ પસંદ કરી રહ્યા છીએ
RAG ના કેન્દ્રમાં એક જ પ્રશ્ન છે: "કયા ટેક્સ્ટનો ભાગ વપરાશકર્તાના પ્રશ્ન સાથે સૌથી વધુ સમાન છે?" કોમ્પ્યુટર ટેક્સ્ટને સંખ્યાઓ સાથે પ્રક્રિયા કરે છે, શાબ્દિક રીતે નહીં. તેથી જ આપણે સૌ પ્રથમ ટેક્સ્ટને તેના અર્થને વહન કરતી સંખ્યામાં રૂપાંતરિત કરવાની જરૂર છે. તે જ એમ્બેડિંગ છે: ટેક્સ્ટને સંખ્યાઓના ક્રમ (વેક્ટર) માં રૂપાંતરિત કરવાની પ્રક્રિયા જે તે ટેક્સ્ટનો અર્થ રજૂ કરે છે. જ્યારે તમે આ એકમ સમાપ્ત કરશો, ત્યારે તમને ખબર પડશે કે એમ્બેડિંગ કેવી રીતે કાર્ય કરે છે, સમાનતા કેવી રીતે માપવામાં આવે છે અને યોગ્ય વેક્ટર ડેટાબેઝ કેવી રીતે પસંદ કરવો.
એમ્બેડિંગ: કોઓર્ડિનેટ્સમાં અર્થનું ભાષાંતર કરવું
એમ્બેડિંગ મોડલ (એક ખાસ પ્રશિક્ષિત કૃત્રિમ બુદ્ધિ) તમે પ્રદાન કરો છો તે ટેક્સ્ટને વેક્ટરમાં રૂપાંતરિત કરે છે, ઉદાહરણ તરીકે, 1024 નંબરો. આ વેક્ટરને બહુપરિમાણીય અવકાશમાં સંકલન તરીકે વિચારો. જાદુ આ છે: અર્થમાં સમાન હોય તેવા પાઠો આ જગ્યામાં નજીકના કોઓર્ડિનેટમાં આવે છે.
એક સરળ ઉદાહરણ: “વાર્ષિક રજા”, “વેકેશન હકદારી” અને “વાર્ષિક પેઇડ રજા” અલગ-અલગ શબ્દોનો ઉપયોગ કરે છે પરંતુ તેનો અર્થ એક જ છે — તેમના વેક્ટર એકબીજાની નજીક છે. "પેરોલ એકાઉન્ટ" એક અલગ બાબત છે - તેનું વેક્ટર દૂર છે. તેથી વપરાશકર્તા પૂછે છે કે "મારી પાસે કેટલા દિવસનું વેકેશન છે?" જ્યારે તમે પૂછો, ત્યારે અમે એક દસ્તાવેજ પણ શોધી શકીએ છીએ જેમાં "રજા" શબ્દ ન હોય પરંતુ "વાર્ષિક રજા 14 દિવસ" હોય. આ તે છે જે ક્લાસિક કીવર્ડ શોધ (શબ્દ સાથે બરાબર મેળ ખાતી શોધ) કરી શકતું નથી.
ટિપ: "અર્થની ફિંગરપ્રિન્ટ" તરીકે એમ્બેડ કરવાનું વિચારો. સમાન અર્થવાળા બે વાક્યોના ફિંગરપ્રિન્ટ્સ સમાન દેખાય છે; ભલે શબ્દો જુદા હોય.
એક મહત્વપૂર્ણ નિયમ: પ્રશ્ન એમ્બેડ કરતી વખતે તમે જે મૉડલનો ઉપયોગ કરો છો તે એ જ મૉડલ હોવું જોઈએ જે તમે દસ્તાવેજોને એમ્બેડ કરતી વખતે ઉપયોગ કરો છો. વિવિધ મોડેલો વિવિધ જગ્યાઓ ઉત્પન્ન કરે છે; કોઓર્ડિનેટ્સ અનુપમ બની જાય છે.
સમાનતા કેવી રીતે માપવી?
બે વેક્ટર કેટલા સમાન છે તે માપવા માટે ઘણી પદ્ધતિઓ છે. સૌથી સામાન્ય કોસાઇન સમાનતા છે: તે બે વેક્ટર વચ્ચેના ખૂણાને માપે છે. જો કોણ નાનો હોય (સમાન દિશામાં નિર્દેશ કરતા વેક્ટર), તો સમાનતા વધારે છે. મૂલ્ય −1 અને 1 ની વચ્ચે છે; 1 ની નજીક = ખૂબ સમાન.
માપદંડ
તે શું માપે છે?
તે ક્યારે પસંદ કરવામાં આવે છે?
કોસાઇન
વેક્ટર વચ્ચેનો કોણ (દિશા).
સૌથી સામાન્ય; ટેક્સ્ટ સિમેન્ટીક સમાનતામાં ડિફોલ્ટ
ડોટ ઉત્પાદન
દિશા + તીવ્રતા એકસાથે
જો વેક્ટર્સ નોર્મલાઇઝ્ડ હોય, તો તે કોસાઇન જેવું જ પરિણામ આપે છે; ઝડપી છે
યુક્લિડિયન (યુક્લિડિયન અંતર)
કોઓર્ડિનેટ્સ વચ્ચે સીધું અંતર
કેટલાક ક્લસ્ટરિંગ દૃશ્યોમાં; ટેક્સ્ટમાં ઓછો ઉપયોગ
વ્યવહારમાં, મોટાભાગના એમ્બેડિંગ મોડલ સામાન્યકૃત વેક્ટર (કદ 1 પર સેટ) ઉત્પન્ન કરે છે; આ કિસ્સામાં, કોસાઇન અને ડોટ પ્રોડક્ટ સમાન ક્રમ આપે છે. નિર્ણય લકવાગ્રસ્ત ન થાઓ: કોસાઇનથી પ્રારંભ કરો.
લાખો વેક્ટરમાં, એક પછી એક તેમની સરખામણી કરવી ધીમી છે. તેથી જ વેક્ટર ડેટાબેઝ ANN (અંદાજે નજીકના પડોશી) અલ્ગોરિધમનો ઉપયોગ કરે છે. ANN ખૂબ જ ઝડપથી "ચોક્કસ સૌથી નજીક" ને બદલે "લગભગ ચોક્કસ સૌથી નજીક" શોધે છે. ઉદાહરણ તરીકે, HNSW નામની પદ્ધતિ 10 મિલિયન વેક્ટર માટે પણ થોડા મિલીસેકન્ડમાં પરિણામ આપી શકે છે. ચોકસાઈના નાના બલિદાન માટે તમે ખૂબ ઝડપ મેળવો છો.
વેક્ટર ડેટાબેઝ શું કરે છે?
વેક્ટર ડેટાબેઝ એકસાથે ત્રણ વસ્તુઓ કરે છે: (1) વેક્ટર્સ સ્ટોર કરે છે, (2) ક્વેરી વેક્ટર જેવા જ વેક્ટરને ઝડપથી શોધે છે, (3) દરેક વેક્ટરની બાજુમાં મેટાડેટા દ્વારા ફિલ્ટર કરે છે. મેટાડેટા એ ટૅગ્સ છે જે તમે તે ભાગ સાથે જોડો છો: સ્રોત ફાઇલ, તારીખ, વિભાગ, ગોપનીયતા સ્તર, વગેરે. એન્ટરપ્રાઇઝ આરએજીમાં મેટાડેટા ફિલ્ટરિંગ મહત્વપૂર્ણ છે; કારણ કે તમારે "ફક્ત નાણા વિભાગના 2025 દસ્તાવેજોમાં જ શોધો" જેવા નિયંત્રણો સેટ કરવા સક્ષમ હોવા જરૂરી છે.
# વેક્ટર ડેટાબેઝમાં નોંધણી કરો (વિભાવનાત્મક)vektor_db.add( id="izin-politikasi-parca-3", vektor=embed("વાર્ષિક ચૂકવણીની રજા 14 દિવસની છે..."), ટેક્સ્ટ="વાર્ષિક ચૂકવણીની રજા 14 દિવસની છે...", મેટાડેટા={"સ્રોત": "ik_el_f_kitabi", "Kipate:"Ipart:" "2025-06", "ગોપનીયતા": "ic"})
# મેટાડેટા ફિલ્ટર કરેલ શોધ (વૈકલ્પિક) પરિણામ = vektor_db.search( vektor=embed("મારી પાસે કેટલા દિવસની રજા છે?"), top_k=4, filter={"વિભાગ": "HR", "ગોપનીયતા": ["આંતરિક", "ચાલુ"]})
યોગ્ય ડેટાબેઝ પસંદ કરી રહ્યા છીએ
વાહન
વૈશિષ્ટિકૃત પાસું
અનુકૂળ પરિસ્થિતિ
બિલ્ટ-ઇન / ફાઇલ-આધારિત (એમ્બેડેડ લાઇબ્રેરી)
કોઈ ઇન્સ્ટોલેશન, સિંગલ મશીન નથી
પ્રોટોટાઇપ, નાની કીટ (< થોડા લાખ ભાગો)
સંચાલિત ક્લાઉડ સેવા
સ્કેલિંગ અને જાળવણી તમારી જવાબદારી નથી
ઉત્પાદન, ઝડપથી વિકસતો ડેટા, નાની ટીમ
તમારા પોતાના સર્વર પર ઓપન સોર્સ
સંપૂર્ણ નિયંત્રણ, તમારો ડેટા તમારો રહે છે
ગોપનીયતાની જવાબદારી, હાલની ઈન્ફ્રાસ્ટ્રક્ચર
હાલના ડેટાબેઝમાં ઉમેરો
તમે અલગ સિસ્ટમોનું સંચાલન કરતા નથી
તમે પહેલાથી જ ઉપયોગ કરો છો તે DB માં વેક્ટર સપોર્ટ ઉમેરવાનું
પસંદ કરતી વખતે પૂછો: કેટલા ટુકડા હશે? મેટાડેટા ફિલ્ટરિંગ કેટલું મહત્વપૂર્ણ છે? શું ડેટા કંપનીની બહાર જઈ શકે છે (ગોપનીયતા)? શું ટીમ ઈન્ફ્રાસ્ટ્રક્ચરનું સંચાલન કરી શકે છે? નાની શરૂઆત કરવી અને જરૂરિયાત મુજબ વિસ્તરણ કરવું તે ઘણી વાર સમજદારીભર્યું છે.
નબળા અભિગમ / મજબૂત અભિગમ
નબળું (સાદા એમ્બેડિંગને સ્ટોર કરવું, કોઈ મેટાડેટા નથી):
ફક્ત ટેક્સ્ટ અને વેક્ટર સાચવો. શોધો: 4 સૌથી સમાન વેક્ટર પરત કરો. # સમસ્યા: "માત્ર વર્તમાન એચઆર દસ્તાવેજો" જેવા ફિલ્ટર કરી શકતા નથી; # જૂના/અનધિકૃત ભાગો પણ પ્રતિસાદમાં શામેલ હોઈ શકે છે.
શક્તિશાળી (સમૃદ્ધ મેટાડેટા + ફિલ્ટર કરેલ શોધ):
દરેક ભાગ પર સ્ત્રોત, તારીખ, વિભાગ અને ગોપનીયતા ટેગ ઉમેરો. શોધ દરમિયાન વપરાશકર્તાની સત્તા અને વર્તમાનતા અનુસાર ફિલ્ટર કરો: filter = {"privacy": user_authority, "date_date": "2024-01"}# આમ, પરિણામ સલામત અને અપ-ટુ-ડેટ બંને છે.
ત્રણ મિની કેસ
કેસ 1 — ખોટું મોડેલ મિશ્રણ. એક ટીમે મોડેલ A સાથે દસ્તાવેજો અને મોડેલ B સાથેના પ્રશ્નો એમ્બેડ કર્યા. શોધોએ અર્થહીન પરિણામો આપ્યા, અને સાચા જવાબનો દર 31% રહ્યો. જ્યારે મેં એક જ મોડેલ (બંને સમાન એમ્બેડિંગ મોડેલ) પર સ્વિચ કર્યું, ત્યારે દર વધીને 88% થયો. પાઠ: પ્રશ્ન અને દસ્તાવેજ સમાન જગ્યામાં હોવા જોઈએ.
કેસ 2 - મેટાડેટા વિના ગોપનીયતાનું જોખમ. હેલ્થકેર કંપનીમાં, તમામ વિભાગના દસ્તાવેજો મેટાડેટા વિના એક જ પૂલમાં ફેંકવામાં આવ્યા હતા. જ્યારે વેચાણ સહયોગીએ પ્રશ્ન પૂછ્યો, ત્યારે સિસ્ટમ દર્દીના ડેટાના એક ભાગને સંદર્ભિત કરે છે. જ્યારે મેટાડેટા + ફિલ્ટર ઉમેરવામાં આવ્યું હતું (અધિકૃતતા સ્તર અનુસાર), આ જોખમ દૂર કરવામાં આવ્યું હતું; પુનઃપ્રાપ્તિમાં, 12 અનધિકૃત ટુકડાઓ બિલકુલ લાવવામાં આવતા નથી.
કેસ 3 - સ્કેલ બોટલનેક. એક ઈ-કોમર્સ કંપનીએ સરળ "સ્કેન ઓલ" પદ્ધતિ વડે 8 મિલિયન ઉત્પાદન વર્ણનો શોધ્યા; દરેક પ્રશ્નમાં 6 સેકન્ડનો સમય લાગ્યો. જ્યારે અમે HNSW-આધારિત ANN પર સ્વિચ કર્યું, ત્યારે સમય ઘટીને 45 મિલીસેકન્ડ થઈ ગયો, જેમાં ચોકસાઈમાં માત્ર 1% નુકશાન થયું. પાઠ: ANN મોટા સેટમાં ફરજિયાત છે.
સામાન્ય ભૂલો
- વિવિધ મોડેલો સાથે પ્રશ્ન અને દસ્તાવેજને એમ્બેડ કરવું: પરિણામો અર્થહીન છે; હંમેશા એક મોડેલ.
- મેટાડેટાને છોડવું: તમે ફિલ્ટર કરી શકતા નથી; તમે ગોપનીયતા અને અદ્યતનતાનું નિયંત્રણ ગુમાવો છો.
- એન્ક્રિપ્શન માટે એમ્બેડિંગની ભૂલ કરવી: એમ્બેડિંગ ઉલટાવી શકાય તેવી માહિતી વહન કરે છે; એવું માનવું ખોટું છે કે સંવેદનશીલ ડેટા "છુપાયેલ" છે.
- નાના સેટ પર બિનજરૂરી રીતે મોટી ઈન્ફ્રાસ્ટ્રક્ચર બનાવવી: 5,000 ભાગો માટે સંચાલિત વિશાળ ક્લસ્ટર બિનજરૂરી જટિલતા છે.
- સમાનતા માપદંડ વિશે વધુ ચિંતા કરશો નહીં: ટેક્સ્ટમાં કોસાઇનથી પ્રારંભ કરો; ફાઇન ટ્યુનિંગ પછીથી આવે છે.
સાવધાન: એમ્બેડિંગ ટેક્સ્ટના અર્થને સંખ્યાઓમાં એમ્બેડ કરે છે, પરંતુ સામગ્રીને "નષ્ટ" કરતું નથી. જો વેક્ટર ડેટાબેઝ લીક થાય છે, તો મૂળ સંગ્રહિત ટેક્સ્ટ્સ (મોટાભાગના ઇન્સ્ટોલેશનમાં ટેક્સ્ટ પણ સંગ્રહિત થાય છે) સાથે પણ ચેડા થાય છે. વેક્ટર રિપોઝીટરીને તેની અંદરના દસ્તાવેજોની જેમ ગોપનીય રાખો.
સારાંશમાં
- એમ્બેડિંગ ટેક્સ્ટને સંખ્યાઓના વેક્ટરમાં ફેરવે છે જે તેનો અર્થ ધરાવે છે; સમાન અર્થો નજીકના વેક્ટર્સ છે.
- સમાનતા ઘણીવાર કોસાઇન દ્વારા માપવામાં આવે છે; સામાન્યકૃત વેક્ટર માટે, ડોટ ઉત્પાદન સમાન પરિણામ આપે છે.
- મોટા ડેટામાં, ANN (દા.ત., HNSW) ચોક્કસ શોધને બદલે છે: ચોકસાઈના ઓછા બલિદાન સાથે મહાન ગતિ.
- વેક્ટર ડેટાબેઝ વેક્ટર સ્ટોરેજ + સમાનતા શોધ + મેટાડેટા ફિલ્ટરિંગ કરે છે; એન્ટરપ્રાઇઝ RAG માટે મેટાડેટા આવશ્યક છે.
- પ્રશ્ન અને દસ્તાવેજનું સમાન એમ્બેડિંગ મોડેલ સાથે ભાષાંતર કરવું આવશ્યક છે; અન્યથા કોઓર્ડિનેટ્સની સરખામણી કરી શકાતી નથી.
એપ્લિકેશન કાર્ય
તમે અગાઉના એકમમાં પસંદ કરેલા દસ્તાવેજમાંથી 10 ટૂંકા ફકરાઓ (દરેક 3-6 વાક્યો) કાઢો. (1) દરેક ભાગ માટે ઓછામાં ઓછા ત્રણ મેટાડેટા ટૅગ્સ ડિઝાઇન કરો (સ્રોત, તારીખ, અને તમારા વ્યવસાય સંદર્ભને અનુરૂપ ત્રીજો: વિભાગ, ઉત્પાદન, ગોપનીયતા, વગેરે). (2) 3 જુદા જુદા વપરાશકર્તા પ્રશ્નો માટે કયું મેટાડેટા ફિલ્ટર લાગુ કરવું જોઈએ તે લખો. (3) 3 પ્રશ્ન-ભાગ જોડી શોધો જે અલગ-અલગ શબ્દોમાં સમાન અર્થ વ્યક્ત કરે છે (દા.ત. “વેકેશન હકદાર” ↔ “વાર્ષિક રજા”) અને એક વાક્યમાં સમજાવો કે શા માટે તેઓ કીવર્ડ શોધ સાથે મેળ ખાશે નહીં પરંતુ એમ્બેડિંગ સાથે મેળ ખાશે.
ચેકલિસ્ટ
- [ ] હું કહી શકું છું કે એમ્બેડિંગ ટેક્સ્ટને સિમેન્ટીક સ્પેસમાં વેક્ટરમાં ફેરવે છે અને સમાન અર્થો નજીક છે.
- હું જાણું છું કે [ ] કોસાઇન સમાનતા કોણ માપે છે અને ટેક્સ્ટમાં ડિફોલ્ટ પસંદગી છે.
- [ ] હું સમજાવી શકું છું કે મોટા ડેટામાં ANN શા માટે જરૂરી છે.
- [ ] હું જાણું છું કે મેટાડેટા ગોપનીયતા અને તાજગી નિયંત્રણ માટે કેમ મહત્વપૂર્ણ છે.
- [ ] હું સમાન એમ્બેડિંગ મોડેલ સાથે પ્રશ્ન અને દસ્તાવેજનો અનુવાદ કરવાના નિયમનું પાલન કરું છું.