- Vektorinės duomenų bazės saugo ir indeksuoja įterptuosius elementus, kad būtų galima greitai ieškoti semantinio panašumo nestruktūrizuotuose duomenyse.
- Jie maitina NLP ir RAG veikdami kaip išorinis atminties sluoksnis, kuris sujungia vektorių atstumą su metaduomenų filtrais.
- Specialūs varikliai, vektorinius SQL duomenų bazes palaikančios duomenų bazės ir lengvos bibliotekos, tokios kaip VDB, patenkina skirtingus mastelio ir valdymo poreikius.
- ANN algoritmai ir atstumo metrikos, tokios kaip HNSW, L2 ir kosinusas, stipriai veikia tikslumą, delsą ir išteklių naudojimą.

Šiame straipsnyje apžvelgiama vektorinių duomenų bazių aplinka, ypatingą dėmesį skiriant lengvoms, vietinėms parinktims.Kas iš tikrųjų yra vektorinė duomenų bazė, kuo ji skiriasi nuo paprasto vektorinio indekso, kaip ji palaiko NLP ir RAG, kokius variklius ir plėtinius verta apsvarstyti (nuo „Milvus“ ir „Qdrant“ iki „PostgreSQL pgvector“ ir įterptųjų bibliotekų, tokių kaip VDB), ir kaip atstumo metrika bei dirbtinio neuroninio tinklo algoritmai veikia tiek kokybę, tiek našumą.
Kas yra vektorinė duomenų bazė ir kodėl ji svarbi?
Tradicinės reliacinės duomenų bazės puikiai tinka struktūrizuotiems duomenims eilutėse ir stulpeliuose, tačiau jiems sunku, kai į juos siunčiami didžiuliai kiekiai nestruktūrizuoto turinio. PDF failų, pokalbių žurnalų, vaizdų ar jutiklių duomenų įkėlimas į klasikinę SQL schemą ir jų paruošimas dirbtiniam intelektui yra ne tik varginantis, bet ir skaičiavimo požiūriu neefektyvus, kai reikia semantinio panašumo, o ne tikslių atitikmenų.
Vektorinės duomenų bazės šią problemą išsprendžia tiesiogiai dirbdamos su tankiais vektoriais, o ne tik su žetonais ar raktažodžiais.Užuot klausus „ar šiame lauke yra žodis „išmanusis telefonas?“, klausiama „kurie saugomi vektoriai yra arčiausiai užklausos įterpimo?“, ir sistema grąžina semantiškai susijusius elementus, net jei jų formuluotės skiriasi.
Šis perėjimas nuo raktinių žodžių atitikimo prie panašumo vektorinėje erdvėje yra tai, kas leidžia semantinė paieška, patikimos rekomendacijos ir galinga paieškos papildyta generacija (RAG)Įmonės dabar gali sujungti savo tradicinius verslo duomenis su „semantine atmintimi“ vienoje architektūroje, naudodamos specialius vektorinius variklius arba įgalindamos vektorinius tipus esamose duomenų bazėse.
Vektoriai, įterpimai ir problema, kurią jie išsprendžia
Bet kurios vektorinės duomenų bazės pagrindą sudaro vektoriai: sutvarkyti skaičių sąrašai, kurie nustato elemento vietą daugiamatėje erdvėje.Kiekvienas vektorius atitinka objektą – sakinį, pastraipą, vaizdą, produktą, vartotojo profilį – užkoduotą dešimtimis, šimtais ar net tūkstančiais matmenų, išmoktų naudojant mašininio mokymosi modelį.
Skirtingi įterpimo modeliai apibrėžia skirtingas vektorines erdves ir matmenisVieni gali išvesti 384 matmenų vektorius, kiti – 768 ar daugiau; didėjant matmeniui, atvaizdavimas gali perteikti sodresnius niuansus, tačiau jį taip pat tampa sunkiau efektyviai indeksuoti. Vektorinės duomenų bazės specializuojasi būtent to apdorojime: ilgų slankiojo kablelio vektorių dideliu masteliu.
Tikrasis jų išsprendžiamas trūkumas yra tradicinės raktinių žodžių paieškos nelankstumas nestruktūrizuotuose duomenyse.Klasikinė paieška pagal „išmanųjį telefoną“ praleis dokumentus, kuriuose minimas tik „mobilusis telefonas“ arba „mobilusis įrenginys“; šiek tiek padeda ir spausdinimo klaidų tolerantiška raktinių žodžių paieška, tačiau ji vis tiek negali iki galo suprasti, kad „šimtmečio vidurio modernus namas su natūralia šviesa“ yra stilius, o ne pažodinė frazė, kurią rasite kiekviename skelbime.
Saugodama įterptuosius elementus, vektorinė duomenų bazė leidžia ieškoti panašumų: užklausos ir dokumentai yra vektoriniai, o artumas toje erdvėje reiškia semantinį ryšį.Štai kodėl paieška pagal „mobilusis telefonas“ gali padėti rasti dokumentus, kuriuose minimas tik „išmanusis telefonas“; jų įterpimai patenka į tą pačią erdvės sritį, net ir esant skirtingoms paviršiaus formoms.
Vektorinis indeksas ir visa vektorių duomenų bazė
Naudinga atskirti „vektorinio indekso“ idėją nuo visavertės vektorinės duomenų bazės idėjos.Abu jie nagrinėja vektorius, tačiau apima skirtingus problemos sluoksnius ir turi skirtingus požymių rinkinius.
Vektorinis indeksas yra duomenų struktūra, optimizuota artimiausio kaimyno paieškai.Pateikiate jam vektorių rinkinį ir užklausos vektorių, o jis nurodo, kurie saugomi elementai yra arčiausiai. Tokios bibliotekos kaip FAISS puikiai tai daro; jos įgyvendina efektyvius algoritmus apytiksliai artimiausio kaimyno (ANN) paieškai ir klasterizavimui, tačiau tai nėra pilnos duomenų bazių sistemos.
Tuo tarpu vektorinė duomenų bazė apvynioja tuos indeksus duomenų bazės galimybėmis. pavyzdžiui, metaduomenų saugojimas, schemų valdymas, saugumas, išteklių valdymas, lygiagretumo valdymas, gedimų atkūrimas ir integravimas su platesnėmis duomenų ekosistemomis. Būtent čia organizacijos saugo ir įterptuosius elementus, ir originalius objektus (arba nuorodas į juos), o ne tik indeksų struktūras.
Įmonėms skirtose vektorinėse duomenų bazėse taip pat pateikiamos užklausų kalbos ir API, kurios sujungia vektorių panašumą su struktūrizuotų atributų filtrais.Galite pateikti užklausą „dokumentai, panašūs į šią pastraipą, kur projektas = X ir sukurtas per pastarąsias 30 dienų“, tai sunku padaryti aiškiai naudojant vien indeksų biblioteką.
Kai kurios šiuolaikinės reliacinės sistemos tapo „vektorinėmis duomenų bazėmis“, pridėdamos vietinius vektorinius tipus.Pavyzdžiui, „Oracle“ duomenų bazės ir „MySQL“ dabar palaiko vektorius kartu su klasikiniais skaitiniais ir tekstiniais laukais. Tai leidžia saugoti verslo įrašus ir įterptuosius elementus viename variklyje, išvengiant galvos skausmo dėl nuoseklumo tarp atskiros vektorių saugyklos ir pagrindinės duomenų bazės.
Kaip vektorinės duomenų bazės skatina NLP ir generatyvinį dirbtinį intelektą
Semantinė paieška yra vienas iš labiausiai matomų naudojimo atvejų.Užuot taikę trapų raktinių žodžių atitikimą, įterpiate ir vartotojo užklausą, ir visus indeksuotus dokumentus, o tada gaunate tuos, kurių vektoriai yra artimiausi. Sistema gali apdoroti sinonimus, perfrazes ir netgi šiek tiek nesusijusias su tema, bet kontekstualiai aktualias frazes, taip žymiai pagerindama aktualumą, palyginti su paprasto teksto paieška.
Šis semantinis sluoksnis taip pat sumažina rašybos klaidų ir triukšmingos kalbos poveikį.Vartotojui nebūtina idealiai suformuluoti užklausos; jei bendra reikšmė panaši, įterpimo modelis užklausą patalpina šalia tinkamų dokumentų, o vektorinė duomenų bazė juos pateikia.
Efektyvus įterpimo valdymas yra dar vienas svarbus vaidmuoVektorinės duomenų bazės yra optimizuotos saugoti, indeksuoti ir gauti didelius didelių modelių sugeneruotų teksto įterpimų kiekius; jos leidžia programoms tai traktuoti kaip greitą, užklausoms pritaikytą „atminties banką“, prie kurio galima prisijungti per milisekundes, o ne kaip failų rinkinį ar ad-hoc masyvus kokiame nors programos procese. Tai didelių modelių generuojami įterpimai dažnai pasikliauja vykdymo aplinkomis ir greitintuvais, kad būtų praktiški dideliu mastu.
Praktiškai tai pasireiškia keliose NLP programose.Pokalbių robotai ir dirbtinio intelekto asistentai naudoja vektorines duomenų bazes, kad surastų atitinkamas ankstesnių pokalbių ar dokumentacijos dalis; klausimų ir atsakymų sistemos konvertuoja dokumentaciją į įterptuosius elementus ir atsako į sudėtingus klausimus, atrinkdamos ir susintetindamos tinkamas ištraukas; nuotaikų ir ketinimų analizė naudojasi turtingesniais semantiniais ryšiais, užkoduotais vektoriuose; rekomendacijų sistemos nustato elementų ir vartotojų panašumą pagal jų įterpimo erdvės artumą.
Vektorių paieška naudojant paieškos papildytos kartos (RAG) metodą
Paieškos papildyta generacija (RAG) sujungia vektorinę paiešką su dideliais kalbos modeliais, kad suvaldytų tokias problemas kaip haliucinacijos ir pasenusios žinios.LLM turi fiksuotą mokymo ribą ir negali matyti jūsų nuosavybės teise saugomų dokumentų, nebent jūs juos aiškiai pateikiate išvados darymo metu.
Įprastas RAG srautas prasideda nuo žinių bazės suskaidymo į mažesnius segmentus. – pavyzdžiui, 200–500 žodžių kiekviename teksto fragmente – ir tada kiekvieną fragmentą užkoduojant įterpimo vektoriuje naudojant pasirinktą modelį. Šie vektoriai kartu su metaduomenimis, tokiais kaip pavadinimai, žymos arba šaltinio URL, saugomi vektorinėje duomenų bazėje.
Kai vartotojas užduoda klausimą, sistema įterpia užklausą su tuo pačiu modeliu ir atlieka panašumo paiešką saugomuose įterptuosiuose elementuose. Laikoma, kad k artimiausių fragmentų yra „apie“ klausimą ir yra atkuriami per milisekundes, naudojant duomenų bazės dirbtinio neuroninio tinklo indeksus.
Gauti fragmentai tada pridedami arba kitaip įterpiami į LLM raginimą.Tai yra „papildymo“ dalis: modelis gauna ir pradinę naudotojo užklausą, ir kelis svarbius išorinio konteksto elementus, kurie padeda jam pagrįsti atsakymą faktais, o ne spėlionėmis.
Galiausiai LLM sugeneruoja atsakymą, sąlygotą šio gauto konteksto.Kadangi duomenų bazės turinį galima nuolat atnaujinti, RAG leidžia LLM atsakyti naudojant naujausią, konkrečioje srityje esančią informaciją nepermokant paties modelio ir sumažina haliucinacijas, susiejant rezultatus su tikraisiais dokumentais.
Kaip iš tikrųjų veikia panašumų paieška
Iš esmės vektorių paieška yra susijusi su užklausos vektoriaus palyginimu su daugeliu saugomų vektorių ir jų reitingavimu pagal atstumą arba panašumo balą.Iššūkis yra tai padaryti greitai ir tiksliai, kai turite milijonus ar milijardus vektorių dideliais matmenimis.
Pagrindiniai žingsniai yra vienodi visuose varikliuosePirma, vektorizuojate savo duomenis: tekstas, vaizdai, garso įrašai ar kitas turinys perduodami per įterpimo modelį, kad būtų sukurti vektoriai. Tada šie vektoriai saugomi duomenų bazėje, dažnai kartu su ID ir metaduomenimis, ir ant viršaus sukuriamas vienas ar keli dirbtinio neuroninio tinklo (ANN) indeksai.
Užklausos metu vartotojo įvestis taip pat įterpiama į vektoriųTada duomenų bazė naudoja indeksą, kad surastų apytikslius artimiausius kaimynus pagal pasirinktą metriką – kosinuso panašumą, euklidinį atstumą, vidinę sandaugą ar kt. – ir grąžina geriausius atitikmenis kartu su jų panašumo balais.
Rezultatai paprastai reitinguojami pagal panašumo balą, kad artimiausi vektoriai būtų rodomi pirmiausiaDaugelis paieškos sistemų taip pat palaiko hibridines užklausas, kai filtruojama pagal metaduomenis (pvz., kainų intervalą, vietą, kategoriją) ir tuo pačiu metu optimizuojama pagal vektorių panašumą, taip gaunant labiau verslui pritaikytus rezultatus.
Kad visa tai būtų galima atlikti greitai ir dideliu mastu, šiuolaikinės vektorinės duomenų bazės remiasi apytiksliais artimiausio kaimyno algoritmais.Jie iškeičia nedidelę atminties dalį į didžiulius greičio ir atminties naudojimo patobulinimus, o tai yra priimtina daugumai realaus pasaulio dirbtinio intelekto programų.
Pagrindiniai dirbtinio neuroninio tinklo algoritmai: HNSW, LSH ir produktų kvantavimas
Hierarchinis naviguojamas mažas pasaulis (HNSW) yra vienas iš plačiausiai naudojamų dirbtinio neuroninio tinklo (DNN) algoritmų vektorinėse duomenų bazėse.Jis suskirsto vektorius į kelis grafų sluoksnius: viršutiniuose sluoksniuose yra mažai mazgų ir tolimųjų ryšių, o apatiniuose sluoksniuose tankėja visi mazgai, sujungti apatiniame sluoksnyje.
Paieškos metu HNSW pradeda nuo įėjimo taško viršutiniame sluoksnyje ir godžiai juda link artimesnių kaimynų., judant žemyn sluoksniais, tikslinant paiešką. Ši sluoksninė grafų struktūra užtikrina efektyvią pusiausvyrą tarp atkūrimo ir delsos, todėl HNSW naudoja tokius variklius kaip „Milvus“, „Qdrant“ ir kitus.
Lokalumo jautrumo maišos (LSH) metodas yra kitoks – naudojamos maišos funkcijos, kurios su didele tikimybe susieja panašius vektorius į tuos pačius segmentus.Skirtingai nuo tradicinio maišymo, kuris stengiasi išvengti susidūrimų, LSH juos taiko panašiems elementams. Sukuriamos kelios maišymo lentelės, kad kiekvienai užklausai reikėtų patikrinti tik kandidatus iš atitinkamų grupių, o ne visą duomenų rinkinį.
Tai efektyviai sumažina matmenis, tuo pačiu išsaugant kaimynystės struktūrą tikimybiniu būduLSH gali būti labai patrauklus daugiamačiams duomenims, kai reikia itin greito kandidatų generavimo ir gali būti toleruojami apytiksliai rezultatai.
Produktų kvantavimas (PQ) orientuotas į vektorių glaudinimą, siekiant sutaupyti atminties ir pagreitinti atstumo skaičiavimus.Jis padalija kiekvieną daugiamatį vektorių į kelis subvektorius, tada atskirai kvantuoja kiekvieną poerdvę ir saugo tik artimiausių centroidų ID, sudarydamas trumpą kodą.
Šis glaudinimas gali sumažinti atminties naudojimą daugiau nei 90 %, tuo pačiu metu įgalinant atstumo įvertinimąNors PQ yra nuostolinga ir gali šiek tiek sumažinti paieškos tikslumą, ji yra itin galinga dirbant su didelėmis kolekcijomis, kur RAM yra pagrindinė kliūtis, ir yra pagrindinė tokių įrankių kaip FAISS ir kai kurių vektorinių duomenų bazių posistemių dalis.
Atstumo metrika: euklidinis ir kosinusas bei draugai
Jūsų vektorių paieškos kokybė taip pat labai priklauso nuo pasirinkto atstumo arba panašumo rodiklio.Du dažniausiai pasitaikantys pasirinkimai yra euklidinis atstumas (L2) ir kosinuso panašumas (arba jo papildinys, kosinuso atstumas).
Euklidinis atstumas matuoja tiesinį atstumą tarp dviejų taškų n-matėje erdvėjeVektorių P ir Q atveju tai yra kvadratinė šaknis iš kvadratinių koordinačių skirtumų sumos. Mažesnis atstumas reiškia didesnį panašumą, o jo intervalas yra nuo 0 (identiški vektoriai) iki begalybės.
Šis rodiklis yra jautrus dydžiuiJei vienas vektorius yra daug ilgesnis už kitą, pavyzdžiui, žymi ilgesnį dokumentą arba didesnes elementų reikšmes, euklidinis atstumas tai atspindės, net jei abu vektoriai rodo maždaug ta pačia kryptimi. Tai gerai veikia, kai absoliutus mastelis turi semantinę reikšmę, pvz., fizinės koordinatės arba ištisiniai skaitiniai elementai, kur dydis yra svarbus.
Kosinuso panašumas, priešingai, nagrinėja kampą tarp dviejų vektorių, o ne jų ilgįTai skaliarinė sandauga, padalyta iš vektorių normų sandaugos. Daugelyje praktinių sistemų naudojama kosinuso atstumas = 1 − kosinuso panašumas, kur 0 reiškia identišką kryptį, o didesnės vertės – didesnį nepanašumą.
Kadangi kosinuso panašumas ignoruoja dydį, jis yra idealus, kai orientacija koduoja semantiką.Teksto programose du tos pačios temos dokumentai – vienas trumpas ir vienas ilgas – vis tiek turėtų būti laikomi labai panašiais; tai lemia kosinusas, o euklidinis atstumas gali nubausti ilgesnį dokumentą vien dėl didesnio skaičiaus.
Daugiamatėse, retos erdvės, būdingos NLP, kosinuso panašumas paprastai elgiasi stabiliau nei euklidinis atstumas.Dėl „dimensiškumo prakeiksmo“ visi euklidiniai atstumai labai dideliuose matmenyse pradeda atrodyti panašūs, o tai gali sumažinti skiriamąją gebą. Kosinusas veikia su normalizuotais vektoriais ir dažnai pateikia prasmingesnę panašumo tvarką teksto įterpimams.
Metrikos pasirinkimas galiausiai priklauso nuo to, ką norite, kad „panašumas“ reikštų jūsų srityje.Jei svarbus mastelis, pavyzdžiui, anomalijų aptikimas pagal nuokrypio dydį, gali tikti euklidinis metodas. Jei teminis artumas arba kryptinis suderinimas yra svarbesnis už ilgį, kosinusas paprastai yra geresnis atitikimas. Kai kuriose duomenų bazėse vidinis sandauga taip pat pateikiama kaip metrika, kuri yra glaudžiai susijusi su kosinusu, kai vektoriai normalizuojami.
Populiarios vektorinės duomenų bazės ir vektorinius duomenis palaikančios sistemos
Vektorinių duomenų saugojimo galimybių ekosistema smarkiai išaugo – nuo visiškai valdomų debesijos paslaugų iki savarankiškai talpinamų atvirojo kodo variklių ir bibliotekinio stiliaus sprendimų.Tinkamas pasirinkimas priklauso nuo jūsų masto, biudžeto, veiklos apribojimų ir to, kaip glaudžiai norite integruotis su esama duomenų infrastruktūra.
Specialios vektorinės duomenų bazės yra kuriamos nuo nulio, kad būtų galima atlikti didelio našumo panašumų paiešką.Paprastai jie palaiko kelis dirbtinio neuroninio tinklo (ANN) indeksus, sudėtingas glaudinimo schemas, išsamų metaduomenų filtravimą ir gamybinės klasės klasterizavimą bei perjungimą.
„Milvus“ yra puikus galingos atvirojo kodo vektorinės duomenų bazės, skirtos dideliems darbo krūviams, pavyzdys.Jis skirtas mašininio mokymosi, gilaus mokymosi, panašumų paieškos ir rekomendavimo sistemoms ir palaiko GPU spartinimą, paskirstytas užklausas ir įvairius indeksavimo metodus, tokius kaip IVF, HNSW ir PQ.
Ši konfigūravimo galimybė leidžia subalansuoti atkūrimą, delsą ir saugyklos apimtį pagal jūsų poreikius.„Milvus“ puikiai tinka įmonėms, turinčioms milijardus vektorių, daugiakalbį turinį ir griežtus našumo reikalavimus, ir sklandžiai integruojasi į sudėtingas duomenų platformas.
Kiti specialūs varikliai užpildo šiek tiek skirtingas nišas„Pinecone“ daugiausia dėmesio skiria visiškai valdomiems debesijos diegimams su griežtais SLA ir stipriomis metaduomenų galimybėmis; „Weaviate“ siūlo atvirojo kodo variklį su „GraphQL“ API, integruotais vektorizatoriais ir hibridine raktinių žodžių bei vektorių paieška; „Qdrant“ teikia greitą atvirojo kodo vektorių paieškos paslaugą su pažangiais dirbtinio neuroninio tinklo (ANN) metodais ir lanksčiu filtravimu; „Chroma“ orientuojasi į paprastesnius naudojimo atvejus ir eksperimentavimą, suteikdama paprastą kūrėjo patirtį; „Vespa“ puikiai atlieka hibridinę paiešką ir reitingavimą, kuriame derinami struktūrizuoti laukai, tekstas ir vektoriai; „Deep Lake“ daugiausia dėmesio skiria daugiarūšiams duomenų rinkiniams, pvz., vaizdams ir vaizdo įrašams, kur labai svarbi glaudi integracija su mašininio mokymosi sistemomis.
Tuo pačiu metu bendrosios paskirties duomenų bazės pradėjo naudoti vektorinius elementus, o ne visiškai užleisti erdvę.Organizacijoms, kurios jau investavo į SQL arba dokumentų saugyklas, tai gali būti pragmatiškas būdas pridėti semantinę paiešką nekuriant atskiros sistemos.
„PostgreSQL“ su „pgvector“ plėtiniu yra vienas populiariausių būdų čia.„Pgvector“ pristato VECTOR tipą, kuris fiksuoto matmens vektorius saugo tiesiai „Postgres“ lentelėse ir pateikia panašumo operatorius euklidiniam atstumui, vidinei sandaugai ir kosinuso atstumui.
Tai reiškia, kad galite sukurti lentelę, pvz., embeddings(id SERIAL PRIMARY KEY, vector VECTOR(768)), jį indeksuoti ir tada vykdyti užklausas, kurių formatas yra „pateikite man 5 artimiausius vektorius, surūšiuotus pagal L2 atstumą“, visa tai standartine SQL kalba. Plėtinys palaiko indeksus pakankamai dideliems matmenims ir puikiai integruojasi į tokias sistemas kaip „LangChain“.
Didžiausias „pgvector“ privalumas yra paprastumas ir konsolidavimas.Jūsų operacijų duomenys, analizės lentelės ir įterptieji elementai yra viename variklyje, su viena atsargine kopija ir saugumo istorija. Kompromisas yra tas, kad „Postgres“ nėra specialiai sukurta milijardo vektorių darbo krūviams, todėl esant dideliam mastui arba itin mažiems delsos reikalavimams, speciali vektorinė duomenų bazė paprastai ją pranoksta.
„Elasticsearch“ ir „OpenSearch“ taip pat galima paversti vektorius atpažinančiomis sistemomis. per k-NN papildinius. Jei jūsų komanda jau naudoja paieškos klasterį žurnalams arba visam tekstui, vektorinių laukų įjungimo gali pakakti semantinės paieškos prototipui sukurti be pakartotinės architektūros. „MongoDB“ taip pat prisijungė prie šios tendencijos, integruodama vektorinę paiešką į savo dokumentais pagrįstą ekosistemą lengvesniems naudojimo atvejams.
Įterptosios ir lengvosios parinktys: VDB ir vietiniai scenarijai
Ne kiekvienam projektui reikalinga (arba jis gali sau leisti) paskirstyta, įmonės lygio vektorinė duomenų bazėDaugeliui įkūrėjų ir komandų, kuriančių MVP, tyrimų įrankius ar įrenginiuose veikiančias programas, lengvesnė, įterptoji biblioteka yra daug patrauklesnė.
VDB yra tokio lengvo sprendimo pavyzdys: tik antraštę turinti C biblioteka, kuri įgyvendina pagrindinę vektorių paieškos funkciją.Jis tiekiamas pagal „Apache 2.0“ licenciją ir gali būti tiesiogiai įdiegtas C arba C++ programose be jokių egzotinių priklausomybių, išskyrus pasirenkamus pthreads daugiasriegiam veikimui.
Pagrindinės funkcijos apima tai, ko reikia daugumai ankstyvosios stadijos produktųVDB palaiko kelias panašumo metrikas (kosinusą, euklidinį, vidinę sandaugą), daugiagijas paieškas, skirtas išnaudoti kelių branduolių procesorius, pagrindinį duomenų išsaugojimą, kad galėtumėte išsaugoti ir perkrauti indeksus iš disko, ir oficialius „Python“ susiejimus, kad galėtumėte integruoti jį į įprastą dirbtinio intelekto steką.
Kadangi tai tik antraštė, integracija yra bene paprasčiausiaĮtraukite antraštes į savo projektą, kompiliuokite, sugeneruokite įterpimus naudodami mėgstamą modelį („OpenAI“, „Cohere“, „Sentence Transformers“ ir kt.), įkelkite juos į VDB su susijusiais ID arba metaduomenimis ir, teikdami užklausas, pateikite užklausą dėl artimiausių k geriausių kaimynų.
Šis dizainas puikiai tinka diegimui vietoje arba periferiniuose serveriuose.Jei kuriate „LangChain“ + „ChatGPT“ stiliaus programėlę, bet norite viską laikyti už savo užkardos, įterptoji biblioteka padeda išvengti išorinių priklausomybių ir prisirišimo prie tiekėjo. Daiktų interneto arba periferiniuose įrenginiuose, kur debesies delsa yra nepriimtina, vektorių saugyklos kompiliavimas į jūsų dvejetainį failą yra didelis privalumas.
Žinoma, yra ir kompromisų: VDB nebando pakeisti visavertės įmonės duomenų bazės.Jis remiasi tikslia (grubios jėgos) paieška, o ne sudėtingais dirbtinio neuroninio tinklo grafikais ar kvantavimu, todėl užklausos laikas priklauso nuo duomenų rinkinio dydžio. Dešimtims ar net keliems šimtams tūkstančių vektorių tai dažnai yra priimtina, ypač naudojant daugiasriegį veikimą; dešimtims milijonų greičiausiai pasieksite ribas, nebent suskaidysite arba įvesite savo indeksavimo sluoksnį.
Hibridinė paieška realiame pasaulyje: vektorių ir metaduomenų sujungimas
Praktiškai beveik kiekvienas gamybinis naudojimo atvejis derina vektorių panašumą su griežtais struktūrizuotų atributų filtrais.Vartotojai retai nori „panašiausio dalyko visame korpuse“; jie nori „panašaus, bet kartu atsižvelgiant į šiuos apribojimus“.
Apsvarstykite nekilnojamojo turto paieškos programėlę, kurioje vartotojai apibūdina namų atmosferą – „šimtmečio vidurio modernus su daugybe natūralios šviesos“ – kartu reikalaujant griežtų apribojimų, tokių kaip „3 miegamieji“, „iki 800 000 USD“ ir „A rajone“. Paprasta vektorinė paieška mielai grąžintų nuostabią 2 milijonų dolerių vertės vidurio amžiaus vilą netinkamame mokyklos rajone; paprasti SQL filtrai niekada nesuprastų stiliaus užklausos.
Tokie varikliai kaip „AlloyDB for PostgreSQL“ iliustruoja, kaip tai išspręsti naudojant vidinį filtravimą.„AlloyDB“ suderina „Postgres“ suderinamumą su „Google“ keičiamo dydžio infrastruktūra, integruoja „pgvector“ kaip pirmos klasės plėtinį ir papildo jį „ScaNN“ pagrindu sukurtu vektorių indeksu, kad būtų galima greitai ieškoti panašumų.
Jo tiesioginis filtravimas reiškia, kad vektoriaus indekso ir SQL metaduomenų filtrai taikomi vienu metu.Užuot atlikusi vektoriaus paiešką ir vėliau atfiltravusi neatitinkančias eilutes, „AlloyDB“ tikrina skaitinius ir kategorinius apribojimus, naršydama vektoriaus indeksą, taip išvengdama darbo švaistymo ir delsos nuostolių.
Galutinis rezultatas yra hibridinė paieška, kuri per milisekundes grąžina namus, atitinkančius ir estetinius pageidavimus, ir griežtus filtrus.Šis modelis apibendrinamas elektroninei prekybai (stilius + kaina + atsargos), turinio paieškai (tema + kalba + regionas) ir iš esmės bet kuriai sričiai, kurioje „atmosfera“ turi egzistuoti kartu su griežtomis verslo taisyklėmis.
Nuo įterpimų iki gamybinių programų
Pasirinkus saugojimo metodą, vektorinių elementų kūrimo aukšto lygio srautas yra gana nuoseklus., nesvarbu, ar naudojate „Milvus“, „Qdrant“, „PostgreSQL“ + „pgvector“, „Elasticsearch k-NN“, ar lengvąją biblioteką, pvz., VDB.
Pirmiausia sugeneruojate savo korpuso įterpimusTekstui tai gali būti dokumentacija, žinių bazės, bilietai, el. laiškai ar pokalbių žurnalai; vaizdams ir multimodaliniams duomenims naudotumėte tinkamus regėjimo arba multimodalinius modelius. Kiekvienas elementas tampa vektoriumi ir visais jums svarbiais metaduomenimis.
Toliau įterptuosius elementus kartu su identifikatoriais ir metaduomenimis saugote pasirinktoje vektorinėje saugykloje.Vektorinėje duomenų bazėje tai paprastai reiškia kolekcijos arba lentelės su vektoriaus ir metaduomenų laukais sukūrimą; VDB tai gali būti atmintyje esantis indeksas, pagrįstas diske esančiomis momentinėmis kopijomis.
Užklausos metu įterpiate vartotojo įvestį su tuo pačiu modeliu ir atliekate panašumo paiešką.Duomenų bazė grąžina k panašiausių vektorių, o jūs ieškote pagrindinių elementų (dokumentų, produktų, vaizdų) naudodami jų ID arba saugomus naudinguosius duomenis.
RAG atveju, gautą turinį perduodate kaip papildomą kontekstą savo LLM.Rekomendavimo sistemose kaimynai naudojami tiesiogiai kaip kandidatai reitingavimui. Analizės ar anomalijų aptikimo tikslais galite apibendrinti atstumus ir kaimynus, kad suprastumėte modelius ir išskirtis.
Vektorinės duomenų bazės taip pat palengvina įterptųjų modelių operacionalizavimą patikimu būdu.Užuot rankiniu būdu tvarkydami failus ar specialius masyvus, gaunate tinkamą išteklių valdymą, mastelio keitimo rankenėles, saugumo kontrolę ir užklausų kalbas, kurios leidžia išreikšti sudėtingą panašumą + aiškiai filtruoti užklausas. Šie operaciniai rūpesčiai apima gamybinių LLM ir vektorių stebėjimą, sekimą ir valdymą, kaip aprašyta. DI stebimumo sluoksniai.
Kartu su generatyviniu dirbtiniu intelektu šis paketas leidžia sukurti suasmenintas, jūsų duomenimis pagrįstas ir augant jūsų korpusui besikeičiančias patirtis.Nesvarbu, ar pasirinksite galingą paskirstytą duomenų bazę, ar lengvą vietinę biblioteką, konceptualūs elementai – įterpimai, panašumo metrikos, dirbtinio neuroninio tinklo (ANN) arba tiksli paieška ir metaduomenų filtrai – išlieka tie patys ir sudaro šiuolaikinių dirbtinio intelekto programų pagrindą.
Dirbtinio intelekto sistemoms tampant vis labiau pokalbių pagrindu veikiančiomis, multimodalinėmis ir kontekstui imliomis, vektorinių duomenų bazių, kaip semantinės atminties sluoksnio, vaidmuo tik stiprės.Supratimas, kaip vektoriai saugomi, indeksuojami ir lyginami, sparčiai tampa pagrindiniu įgūdžiu visiems, kuriantiems rimtas programas su kalbos ir regos modeliais.