Mga nadagdag:
- Unawain na ang pag-embed ay ginagawang vector ang text sa semantic space at ang mga katulad na kahulugan ay malapit na vector
- Ipinapaliwanag kung paano gumagana ang paghahanap sa ANN sa mga sukatan ng pagkakatulad ng cosine at tuldok
- Pagpili ng mga karaniwang database ng vector batay sa gastos, sukat at pangangailangan para sa pag-filter ng metadata
Sa gitna ng RAG ay isang tanong: "Aling piraso ng teksto ang pinakakapareho sa tanong ng user?" Pinoproseso ng computer ang teksto gamit ang mga numero, hindi literal. Iyon ang dahilan kung bakit kailangan muna nating i-convert ang teksto sa mga numero na nagdadala ng kahulugan nito. Iyon ay kung ano ang pag-embed: ang proseso ng pag-convert ng isang teksto sa isang sequence ng mga numero (vector) na kumakatawan sa kahulugan ng tekstong iyon. Kapag natapos mo ang yunit na ito, malalaman mo kung paano gumagana ang pag-embed, kung paano sinusukat ang pagkakatulad, at kung paano pumili ng tamang database ng vector.
Pag-embed: Pagsasalin ng Kahulugan sa Mga Coordinate
Ang isang modelo ng pag-embed (isang espesyal na sinanay na artificial intelligence) ay nagko-convert sa text na iyong ibinigay sa isang vector ng, halimbawa, 1024 na mga numero. Isipin ang vector na ito bilang isang coordinate sa isang multidimensional na espasyo. Ang mahika ay ito: ang mga teksto na magkatulad sa kahulugan ay nahulog sa malapit na mga coordinate sa espasyong ito.
Isang simpleng halimbawa: "taunang bakasyon", "karapatdapat sa bakasyon" at "taunang bayad na bakasyon" ay gumagamit ng magkaibang mga salita ngunit pareho ang ibig sabihin — ang kanilang mga vector ay malapit sa isa't isa. Ang “Payroll account” ay ibang usapin — ang vector nito ay malayo. Kaya't ang gumagamit ay nagtanong "ilang araw ng bakasyon mayroon ako?" Kapag nagtanong ka, may makikita pa tayong dokumento na walang salitang "holiday" pero may nakasulat na "annual leave is 14 days". Ito ang hindi kayang gawin ng klasikong paghahanap ng keyword (paghahanap na eksaktong tumutugma sa salita).
Tip: Isipin ang pag-embed bilang isang "fingerprint ng kahulugan." Ang mga fingerprint ng dalawang pangungusap na may parehong kahulugan ay mukhang magkatulad; Magkaiba man ang mga salita.
Isang mahalagang panuntunan: ang modelong ginagamit mo kapag nag-e-embed ng tanong ay dapat ang parehong modelong ginagamit mo kapag nag-e-embed ng mga dokumento. Ang iba't ibang mga modelo ay gumagawa ng iba't ibang mga puwang; nagiging walang kapantay ang mga coordinate.
Paano Sukatin ang Pagkakatulad?
Mayroong ilang mga paraan upang sukatin kung gaano magkatulad ang dalawang vector. Ang pinakakaraniwan ay cosine similarity: sinusukat nito ang anggulo sa pagitan ng dalawang vectors. Kung ang anggulo ay maliit (mga vector na tumuturo sa parehong direksyon), ang pagkakatulad ay mataas. Ang halaga ay nasa pagitan ng −1 at 1; Malapit sa 1 = halos magkapareho.
pamantayan
Ano ang sinusukat nito?
Kailan ito ginustong?
Cosine
Anggulo (direksyon) sa pagitan ng mga vector
Ang pinakakaraniwan; default sa pagkakatulad ng semantiko ng teksto
Produktong tuldok
Direksyon + magnitude magkasama
Kung ang mga vectors ay normalized, ito ay nagbibigay ng parehong resulta bilang cosine; ay mabilis
Euclidean (euclidean distance)
Tuwid na distansya sa pagitan ng mga coordinate
Sa ilang mga clustering scenario; hindi gaanong ginagamit sa teksto
Sa pagsasagawa, karamihan sa mga modelo ng pag-embed ay gumagawa ng mga normalized na vectors (nakatakda ang laki sa 1); Sa kasong ito, ang cosine at dot product ay nagbibigay ng parehong pagkakasunud-sunod. Huwag maging paralisado sa desisyon: magsimula sa cosine.
Sa milyun-milyong vectors, ang paghahambing ng mga ito nang paisa-isa ay mabagal. Kaya naman ang mga vector database ay gumagamit ng mga algorithm ng ANN (Tinatayang Pinakamalapit na Kapitbahay). Nahanap ng ANN ang "halos eksaktong pinakamalapit" sa halip na "eksaktong pinakamalapit" nang napakabilis. Halimbawa, ang pamamaraang tinatawag na HNSW ay maaaring magbalik ng mga resulta sa loob ng ilang millisecond kahit para sa 10 milyong vectors. Makakakuha ka ng mahusay na bilis para sa isang maliit na sakripisyo ng katumpakan.
Ano ang Ginagawa ng Vector Database?
Ang isang vector database ay gumagawa ng tatlong bagay nang sabay-sabay: (1) nag-iimbak ng mga vector, (2) mabilis na nakahanap ng mga vector na pinakakapareho sa isang query vector, (3) mga filter ayon sa metadata sa tabi ng bawat vector. Ang metadata ay ang mga tag na inilakip mo sa pirasong iyon: source file, petsa, departamento, antas ng privacy, atbp. Ang pag-filter ng metadata ay kritikal sa enterprise RAG; dahil kailangan mong makapagtakda ng mga paghihigpit gaya ng "search only in the Finance department's 2025 documents".
# Magrehistro sa vector database (conceptual)vektor_db.add( id="izin-politikasi-parca-3", vektor=embed("Ang taunang bayad na bakasyon ay 14 na araw..."), text="Ang taunang bayad na bakasyon ay 14 na araw...", metadata={"source": "ik_el_kitabi.pdf", "department": "IK", "vary5}:"
# Metadata filtered search (conceptual)resulta = vektor_db.search( vektor=embed("ilang araw ng leave ko?"), top_k=4, filter={"department": "HR", "privacy": ["internal", "on"]})
Pagpili ng Tamang Database
sasakyan
Itinatampok na aspeto
Angkop na sitwasyon
Built-in / file-based (naka-embed na library)
Walang pag-install, isang makina
Prototype, maliit na kit (< ilang daang libong bahagi)
Pinamamahalaang serbisyo sa cloud
Ang pag-scale at pagpapanatili ay hindi mo responsibilidad
Produksyon, mabilis na lumalagong data, maliit na koponan
Open source sa sarili mong server
Buong kontrol, mananatili sa iyo ang iyong data
Obligasyon sa privacy, umiiral na imprastraktura
Dagdag sa umiiral na database
Hindi mo pinamamahalaan ang mga hiwalay na sistema
Pagdaragdag ng suporta sa vector sa DB na ginagamit mo na
Itanong kapag pumipili: Ilang piraso ang magkakaroon? Gaano kahalaga ang pag-filter ng metadata? Maaari bang lumabas ang data sa labas ng kumpanya (confidentiality)? Maaari bang magpatakbo ang koponan ng isang imprastraktura? Kadalasan ay matalino na magsimula sa maliit at palawakin kung kinakailangan.
Mahinang Diskarte / Malakas na Diskarte
Mahina (nag-iimbak ng simpleng pag-embed, walang metadata):
I-save lamang ang teksto at vector. Maghanap: ibalik ang 4 na pinakakatulad na vectors.# Problema: hindi maaaring mag-filter tulad ng "mga kasalukuyang HR docs lang";# lumang/hindi awtorisadong bahagi ay maaari ding isama sa tugon.
Napakahusay (mayaman na metadata + na-filter na paghahanap):
Magdagdag ng tag ng pinagmulan, petsa, departamento at privacy sa bawat piraso. I-filter ayon sa awtoridad at pagiging kasalukuyan ng user sa panahon ng paghahanap: filter = {"privacy": user_authority, "date_date": "2024-01"}# Kaya, ang resulta ay parehong ligtas at napapanahon.
Tatlong Mini Case
Kaso 1 — Maling halo ng modelo. Isang koponan ang nag-embed ng mga dokumento na may modelong A at mga tanong na may modelong B. Ang mga paghahanap ay nagbalik ng walang kabuluhang mga resulta, at ang tamang rate ng sagot ay nanatili sa 31%. Nang lumipat ako sa isang modelo (parehong parehong modelo ng pag-embed), tumalon ang rate sa 88%. Aralin: ang tanong at dokumento ay dapat nasa parehong espasyo.
Kaso 2 — Panganib sa privacy nang walang metadata. Sa isang kumpanya ng pangangalagang pangkalusugan, ang lahat ng mga dokumento ng departamento ay itinapon sa iisang pool na walang metadata. Kapag nagtanong ang isang sales associate, na-conteksto ng system ang isang piraso ng data ng pasyente. Kapag idinagdag ang metadata + filter (ayon sa antas ng awtorisasyon), inalis ang panganib na ito; Sa retrieval, 12 hindi awtorisadong piraso ang hindi dinadala.
Case 3 — Scale bottleneck. Isang e-commerce na kumpanya ang naghanap ng 8 milyong paglalarawan ng produkto gamit ang isang simpleng "scan all" na paraan; Tumagal ng 6 na segundo ang bawat query. Noong lumipat kami sa HNSW-based na ANN, bumaba ang oras sa 45 millisecond, na may 1% lang na pagkawala sa katumpakan. Lesson: Ang ANN ay mandatory sa malaking set.
Mga karaniwang pagkakamali
- Pag-embed ng tanong at dokumento na may iba't ibang modelo: Ang mga resulta ay walang kahulugan; palaging isang modelo.
- Nilaktawan ang metadata: Hindi mo ma-filter; Nawawalan ka ng kontrol sa privacy at up-to-dateness.
- Nagkakamali sa Pag-embed para sa pag-encrypt: Ang pag-embed ay nagdadala ng nababagong impormasyon; Maling ipagpalagay na ang sensitibong data ay "nakatago".
- Pagbuo ng hindi kinakailangang malaking imprastraktura sa isang maliit na hanay: Ang isang higanteng kumpol na pinamamahalaan para sa 5,000 bahagi ay hindi kinakailangang kumplikado.
- Huwag masyadong mag-alala tungkol sa pamantayan ng pagkakatulad: Magsimula sa cosine sa teksto; Mamaya na ang fine tuning.
Babala: Ang pag-embed ay naka-embed sa kahulugan ng teksto sa mga numero, ngunit hindi "sinisira" ang nilalaman. Kung ang isang vector database ay na-leak, ang mga orihinal na naka-imbak na teksto (sa karamihan ng mga pag-install ay naka-imbak din ang teksto) ay nakompromiso din. Panatilihing kumpidensyal ang vector repository gaya ng mga dokumento sa loob nito.
Sa buod
- Ang pag-embed ay ginagawang vector ng mga numero ang teksto na nagdadala ng kahulugan nito; Ang mga katulad na kahulugan ay malapit na mga vector.
- Ang pagkakatulad ay kadalasang sinusukat ng cosine; Para sa mga na-normalize na vector, ang produkto ng tuldok ay nagbibigay ng parehong resulta.
- Sa malaking data, pinapalitan ng ANN (hal., HNSW) ang eksaktong paghahanap: napakabilis na may kaunting sakripisyo ng katumpakan.
- Ang vector database ay gumaganap ng vector storage + paghahanap ng pagkakatulad + metadata filtering; Ang metadata ay mahalaga para sa enterprise RAG.
- Ang tanong at ang dokumento ay dapat na isalin sa parehong modelo ng pag-embed; kung hindi, ang mga coordinate ay hindi maihahambing.
Gawain ng aplikasyon
Kunin ang 10 maikling sipi (3-6 na pangungusap bawat isa) mula sa dokumentong pinili mo sa nakaraang yunit. (1) Magdisenyo ng hindi bababa sa tatlong metadata tag para sa bawat piraso (pinagmulan, petsa, at isang pangatlo na naaangkop sa konteksto ng iyong negosyo: departamento, produkto, privacy, atbp.). (2) Isulat kung aling filter ng metadata ang dapat ilapat para sa 3 magkaibang tanong ng user. (3) Maghanap ng 3 pares ng bahagi ng tanong na nagpapahayag ng parehong kahulugan sa iba't ibang salita (hal.
checklist
- [ ] Masasabi ko na ang pag-embed ay ginagawang vector ang teksto sa espasyong semantiko at malapit na ang mga katulad na kahulugan.
- Alam ko na ang [ ] Cosine similarity ay sumusukat sa anggulo at ito ang default na kagustuhan sa text.
- [ ] Maaari kong ipaliwanag kung bakit kailangan ang ANN sa malaking data.
- [ ] Alam ko kung bakit kritikal ang metadata para sa pagiging kumpidensyal at kontrol sa pagiging bago.
- [ ] Sinusunod ko ang tuntunin ng pagsasalin ng tanong at ng dokumento na may parehong modelo ng pag-embed.