Faida:
- Elewa kuwa upachikaji hugeuza maandishi kuwa vekta kwenye nafasi ya kisemantiki na maana zinazofanana ni vekta za karibu.
- Inafafanua jinsi utafutaji wa ANN unavyofanya kazi na cosine na vipimo vya mfanano wa nukta
- Kuchagua hifadhidata za vekta za kawaida kulingana na gharama, ukubwa na hitaji la uchujaji wa metadata
Katika moyo wa RAG kuna swali moja: "Ni kipande gani cha maandishi kinachofanana zaidi na swali la mtumiaji?" Kompyuta huchakata maandishi na nambari, sio halisi. Ndio maana tunahitaji kwanza kubadilisha maandishi kuwa nambari zinazobeba maana yake. Hivyo ndivyo kupachika ni: mchakato wa kubadilisha maandishi kuwa mlolongo wa nambari (vekta) ambayo inawakilisha maana ya maandishi hayo. Ukimaliza kitengo hiki, utajua jinsi upachikaji unavyofanya kazi, jinsi ulinganifu unavyopimwa, na jinsi ya kuchagua hifadhidata sahihi ya vekta.
Kupachika: Kutafsiri Maana katika Viratibu
Muundo wa kupachika (akili bandia iliyofunzwa maalum) hubadilisha maandishi unayotoa kuwa vekta ya, kwa mfano, nambari 1024. Fikiria vekta hii kama kuratibu katika nafasi ya multidimensional. Uchawi ni huu: maandiko ambayo yanafanana kwa maana huanguka katika kuratibu za karibu katika nafasi hii.
Mfano rahisi: "likizo ya mwaka", "haki ya likizo" na "likizo ya malipo ya kila mwaka" hutumia maneno tofauti lakini yanamaanisha kitu kimoja - vekta zao ziko karibu. "Akaunti ya malipo" ni suala tofauti - vekta yake iko mbali. Kwa hivyo mtumiaji anauliza "Nina siku ngapi za likizo?" Unapouliza, tunaweza kupata hati ambayo haina neno "likizo" lakini inasema "likizo ya mwaka ni siku 14". Hivi ndivyo utafutaji wa nenomsingi wa kawaida (utafutaji unaolingana na neno haswa) hauwezi kufanya.
Kidokezo: Fikiria kupachika kama "alama ya kidole." Alama za vidole vya sentensi mbili zenye maana sawa huonekana kufanana; Hata kama maneno ni tofauti.
Sheria muhimu: mfano unaotumia wakati wa kupachika swali unapaswa kuwa mfano sawa unaotumia wakati wa kupachika hati. Mifano tofauti hutoa nafasi tofauti; kuratibu kuwa haiwezi kulinganishwa.
Jinsi ya Kupima Kufanana?
Kuna njia kadhaa za kupima jinsi vekta mbili zinavyofanana. Ya kawaida ni kufanana kwa cosine: hupima pembe kati ya vekta mbili. Ikiwa pembe ni ndogo (vekta zinazoelekeza mwelekeo sawa), kufanana ni juu. Thamani ni kati ya -1 na 1; Karibu na 1 = sawa sana.
kigezo
Je, inapima nini?
Inapendelewa lini?
Cosine
Angle (mwelekeo) kati ya vekta
Ya kawaida zaidi; chaguo-msingi katika ufanano wa kisemantiki wa maandishi
Bidhaa ya nukta
Mwelekeo + ukubwa pamoja
Ikiwa veta ni za kawaida, hutoa matokeo sawa na cosine; ni haraka
Euclidean (umbali wa euclidean)
Umbali wa moja kwa moja kati ya kuratibu
Katika baadhi ya matukio ya nguzo; chini ya kutumika katika maandishi
Kwa mazoezi, mifano mingi ya kupachika hutoa vekta za kawaida (ukubwa uliowekwa hadi 1); Katika kesi hii, bidhaa ya cosine na dot hutoa utaratibu sawa. Usiwe mlemavu wa uamuzi: anza na cosine.
Miongoni mwa mamilioni ya vekta, kulinganisha moja kwa moja kwa wakati ni polepole. Ndiyo maana hifadhidata za vekta hutumia algoriti za ANN (Takriban Jirani wa Karibu). ANN hupata "karibu kabisa" badala ya "karibu kabisa" haraka sana. Kwa mfano, mbinu inayoitwa HNSW inaweza kurudisha matokeo katika milisekunde chache hata kwa vekta milioni 10. Unapata kasi kubwa kwa dhabihu ndogo ya usahihi.
Hifadhidata ya Vector Inafanya Nini?
Hifadhidata ya vekta hufanya mambo matatu kwa wakati mmoja: (1) huhifadhi vekta, (2) hupata haraka vekta zinazofanana zaidi na vekta ya hoja, (3) vichujio kwa metadata karibu na kila vekta. Metadata ni lebo unazoambatisha kwa kipande hicho: faili chanzo, tarehe, idara, kiwango cha faragha, n.k. Uchujaji wa metadata ni muhimu katika RAG ya biashara; kwa sababu unahitaji kuwa na uwezo wa kuweka vizuizi kama vile "tafuta tu katika hati za 2025 za Idara ya Fedha".
# Sajili kwenye hifadhidata ya vekta (conceptual)vektor_db.add( id="izin-politikasi-parca-3", vektor=embed("Likizo ya malipo ya kila mwaka ni siku 14..."), text="Likizo ya malipo ya kila mwaka ni siku 14...", metadata={"source": "ik_el_kitabi.pdabi.pda: "Ipande": "Idara" "2025-06", "privacy": "ic"})
Utafutaji # uliochujwa wa metadata (dhana) = vektor_db.search( vektor=embed("niko na likizo ya siku ngapi?"), top_k=4, filter={"department": "HR", "privacy": ["internal", "on"]})
Kuchagua Hifadhidata Sahihi
gari
Kipengele kilichoangaziwa
Hali inayofaa
Imejengwa ndani / msingi wa faili (maktaba iliyopachikwa)
Hakuna usakinishaji, mashine moja
Mfano, vifaa vidogo (<sehemu laki chache)
Huduma ya wingu inayosimamiwa
Kuongeza na kudumisha sio jukumu lako
Uzalishaji, data inayokua haraka, timu ndogo
Chanzo wazi kwenye seva yako mwenyewe
Udhibiti kamili, data yako itabaki kuwa yako
Wajibu wa faragha, miundombinu iliyopo
Nyongeza kwa hifadhidata iliyopo
Hudhibiti mifumo tofauti
Kuongeza usaidizi wa vekta kwa DB ambayo tayari unatumia
Uliza wakati wa kuchagua: kutakuwa na vipande ngapi? Je, uchujaji wa metadata ni muhimu kwa kiasi gani? Je, data inaweza kwenda nje ya kampuni (usiri)? Je, timu inaweza kuendesha miundombinu? Mara nyingi ni busara kuanza kidogo na kupanua kama inahitajika.
Mbinu dhaifu / Mbinu Imara
Dhaifu (kuhifadhi upachikaji wazi, hakuna metadata):
Hifadhi tu maandishi na vekta. Tafuta: rudisha vekta 4 zinazofanana zaidi.# Tatizo: haiwezi kuchuja kama "hati za sasa za Utumishi"; sehemu # za zamani/zisizoidhinishwa pia zinaweza kujumuishwa kwenye jibu.
Nguvu (metadata tajiri + utafutaji uliochujwa):
Ongeza chanzo, tarehe, idara na lebo ya faragha kwa kila kipande. Chuja kulingana na mamlaka na hali ya sasa ya mtumiaji wakati wa utafutaji: chujio = {"faragha": user_authority, "date_date": "2024-01"}# Kwa hivyo, matokeo ni salama na ya kisasa.
Kesi Tatu Ndogo
Kesi ya 1 - Mchanganyiko mbaya wa muundo. Timu ilipachika hati zenye muundo A na maswali yenye mfano B. Utafutaji ulileta matokeo yasiyo na maana, na kiwango cha majibu sahihi kilibaki 31%. Nilipobadilisha modeli moja (mfano wa upachikaji sawa), kiwango kiliruka hadi 88%. Somo: swali na hati vinapaswa kuwa katika nafasi sawa.
Kesi ya 2 - Hatari ya faragha bila metadata. Katika kampuni ya afya, hati zote za idara zilitupwa kwenye bwawa moja bila metadata. Mshirika wa mauzo alipouliza swali, mfumo uliweka muktadha kipande cha data ya mgonjwa. Wakati metadata + chujio iliongezwa (kulingana na kiwango cha uidhinishaji), hatari hii iliondolewa; Katika kurejesha, vipande 12 visivyoidhinishwa haviletwa kabisa.
Kesi ya 3 - Kupunguza kiwango. Kampuni ya e-commerce ilitafuta maelezo ya bidhaa milioni 8 kwa njia rahisi ya "scan all"; Kila swali lilichukua sekunde 6. Tulipotumia ANN inayotokana na HNSW, muda ulipungua hadi milisekunde 45, huku kukiwa na hasara ya 1% pekee ya usahihi. Somo: ANN ni ya lazima katika seti kubwa.
Makosa ya kawaida
- Kupachika swali na hati kwa mifano tofauti: Matokeo hayana maana; daima mfano mmoja.
- Kuruka metadata: Huwezi kuchuja; Unapoteza udhibiti wa faragha na kusasisha.
- Inakosea Upachikaji kwa usimbaji fiche: Upachikaji hubeba taarifa zinazoweza kutenduliwa; Ni makosa kudhani kwamba data nyeti "imefichwa".
- Kujenga miundombinu mikubwa isiyo ya lazima kwenye seti ndogo: Nguzo kubwa inayosimamiwa kwa sehemu 5,000 ni ugumu usio wa lazima.
- Usijali sana kuhusu kigezo cha kufanana: Anza na cosine katika maandishi; Urekebishaji mzuri unakuja baadaye.
Tahadhari: Kupachika hupachika maana ya maandishi katika nambari, lakini "hakuharibu" yaliyomo. Ikiwa hifadhidata ya vekta imevuja, maandishi asilia yaliyohifadhiwa (katika usakinishaji mwingi maandishi pia yanahifadhiwa) pia yanaathiriwa. Weka hazina ya vekta kwa usiri kama hati zilizo ndani yake.
Kwa muhtasari
- Upachikaji hugeuza maandishi kuwa vekta ya nambari ambayo hubeba maana yake; Maana zinazofanana ni vekta za karibu.
- Kufanana mara nyingi hupimwa na cosine; Kwa vekta za kawaida, bidhaa ya nukta hutoa matokeo sawa.
- Katika data kubwa, ANN (k.m., HNSW) inachukua nafasi ya utafutaji kamili: kasi kubwa na kujitolea kidogo kwa usahihi.
- Hifadhidata ya vekta hufanya uhifadhi wa vekta + utaftaji wa kufanana + uchujaji wa metadata; metadata ni muhimu kwa RAG ya biashara.
- Swali na hati lazima zitafsiriwe kwa mtindo sawa wa kupachika; vinginevyo kuratibu haziwezi kulinganishwa.
Jukumu la maombi
Toa vifungu 10 vifupi (sentensi 3-6 kila moja) kutoka kwa hati uliyochagua katika kitengo kilichotangulia. (1) Tengeneza angalau lebo tatu za metadata kwa kila kipande (chanzo, tarehe, na ya tatu inayofaa muktadha wa biashara yako: idara, bidhaa, faragha, n.k.). (2) Andika ni kichujio gani cha metadata kinafaa kutumika kwa maswali 3 tofauti ya watumiaji. (3) Tafuta jozi 3 za sehemu za maswali zinazoelezea maana sawa katika maneno tofauti (k.m. "haki ya likizo" ↔ "likizo ya mwaka") na ueleze kwa sentensi moja kwa nini hazitalingana na utafutaji wa maneno muhimu lakini zitalingana na upachikaji.
orodha ya ukaguzi
- [ ] Ninaweza kusema kuwa upachikaji hugeuza maandishi kuwa vekta katika nafasi ya kisemantiki na maana zinazofanana ziko karibu.
- Ninajua kuwa [ ] Ufanano wa Cosine hupima pembe na ndio upendeleo chaguomsingi katika maandishi.
- [ ] Ninaweza kueleza kwa nini ANN ni muhimu katika data kubwa.
- [ ] Ninajua kwa nini metadata ni muhimu kwa usiri na udhibiti mpya.
- [ ] Ninafuata sheria ya kutafsiri swali na hati yenye muundo sawa wa upachikaji.