AI Engineering Academy · Oppitunti

Miksi tarvitsette vektoritietokannan

Ymmärrätte brute force -samankaltaisuushaun rajoitukset, tutustutte likimääräisten lähimpien naapureiden algoritmien, kuten HNSW:n, toimintaan ja selvitätte, mitä ongelmia vektoritietokannat ratkaisevat tuotannossa.

Oppitunti 1/413 vaihetta

Miksi tarvitsette vektoritietokannan on ilmainen AI Engineering Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu AI Engineering Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. AI Engineering Academy-kurssilla on yhteensä 4 oppituntia.

Muistissa tapahtuvan haun rajoitukset

NumPy-pohjainen semanttinen haku toimii hyvin pienillä korpuksilla, mutta siinä on perustavanlaatuinen skaalautuvuusongelma: jokaisessa haussa käydään läpi jokainen vektori. Miljoonan dokumentin tapauksessa jokainen kysely vaatii 1,5 miljardia liukuluku kertolaskua, ja suoritus kestää satoja millisekunteja. Lisäksi kaikkien vektorien on mahduttava RAM-muistiin.

Tuotantokäyttöön tarkoitetuissa tekoälyjärjestelmissä on voitava hakea miljoonista dokumenteista alle 50 millisekunnissa. Tätä varten vektoritietokannat on suunniteltu.

Likimääräinen lähimmän naapurin haku

Approximate Nearest Neighbor (ANN) -algoritmit vaihtavat pienen määrän tarkkuutta huomattavaan nopeuden kasvuun. Sen sijaan, että ANN-algoritmit tarkistaisivat jokaisen vektorin, ne käyttävät älykkäitä indeksointirakenteita ohittaakseen suuria osia hakuavaruudesta.

Käytännössä ANN palauttaa todellisen lähimmän naapurin yli 95 prosentissa tapauksista ja on samalla 100–1000 kertaa nopeampi kuin tarkka haku. RAG-käytössä tämä kompromissi on lähes aina kannattava.

HNSW:n toimintaperiaate

HNSW (Hierarchical Navigable Small World) on hallitseva ANN-algoritmi, jota käyttävät Pinecone, Weaviate, Qdrant ja pgvector. Se muodostaa monikerroksisen graafin, jossa jokainen solmu yhdistyy lähimpiin naapureihinsa. Haku alkaa ylimmältä harvalta kerrokselta, etenee likimääräiselle alueelle ja laskeutuu sen jälkeen tiheälle alimmalle kerrokselle tarkkuuden parantamiseksi.

HNSW tarjoaa erinomaisen kyselynopeuden (joka kasvaa logaritmisesti aineiston koon suhteen) ja hyvän recall-arvon, mutta indeksi on rakennettava etukäteen.

Mitä vektoritietokannat tarjoavat lisäksi

Vektoritietokanta on enemmän kuin ANN-indeksi. Se tarjoaa myös:

  • Metadatan suodatuksen — palautetaan vain vektorit, joissa category='finance' tai date > '2024-01-01'
  • Pysyvän tallennuksen — data säilyy uudelleenkäynnistysten yli ja skaalautuu RAM-muistia suuremmaksi
  • CRUD-toiminnot — yksittäisten vektorien lisääminen, päivittäminen ja poistaminen
  • Nimiavaruuksien eristyksen — erilliset kokoelmat eri asiakkaille tai ympäristöille
  • Horisontaalisen skaalauksen — miljoonien vektorien jakaminen shardien kesken

Metadatan suodatus käytännössä

Metadatan suodatuksen avulla haun voi rajata olennaiseen osajoukkoon ennen ANN-haun suorittamista. Esimerkiksi usean vuokraajan RAG-järjestelmässä suodatus tehtäisiin kentän tenant_id perusteella, jotta käyttäjät näkevät vain omat dokumenttinsa. Ilman metadatan suodatusta jokaiselle vuokraajalle tarvittaisiin erillinen indeksi.

Tämä on yksi tärkeimmistä ominaisuuksista, jotka erottavat vektoritietokannat yksinkertaisista ANN-kirjastoista, kuten FAISSista.

# Conceptual example — Pinecone query with metadata filter
results = index.query(
    vector=query_embedding,
    top_k=5,
    filter={
        'tenant_id': {'$eq': 'acme_corp'},
        'document_type': {'$in': ['invoice', 'contract']},
        'date': {'$gte': '2024-01-01'}
    },
    include_metadata=True
)

FAISS: tehokas ANN-kirjasto

FAISS (Facebook AI Similarity Search) on Metan avoimen lähdekoodin ANN-kirjasto — nopein vaihtoehto GPU-kiihdytettyyn hakuun. Se ei ole täysimittainen tietokanta: siinä ei ole pysyvää tallennusta, metadataa eikä sisäänrakennettua palveluntarjontaa.

FAISS sopii erinomaisesti tilanteisiin, joissa tarvitaan mahdollisimman suurta suorituskykyä yhdellä koneella ja pysyvästä tallennuksesta huolehditaan itse. Chroma, Weaviate ja pgvector käyttävät kaikki konepellin alla FAISSia tai HNSW:tä.

import faiss
import numpy as np

d = 1536  # dimension
n = 10000  # number of vectors

# Build a flat (exact) index as a baseline
index = faiss.IndexFlatIP(d)  # Inner Product = dot product

# Add random vectors (pretend these are embeddings)
vectors = np.random.randn(n, d).astype('float32')
faiss.normalize_L2(vectors)  # normalize for cosine sim
index.add(vectors)

query = np.random.randn(1, d).astype('float32')
faiss.normalize_L2(query)

scores, indices = index.search(query, k=5)
print('Top 5 indices:', indices[0])
print('Top 5 scores:', scores[0])

Vektoritietokannat ja perinteiset tietokannat

Perinteiset SQL-tietokannat, kuten PostgreSQL, on optimoitu jäsennellyn datan täsmähakuihin ja aluekyselyihin. Niitä ei ole suunniteltu moniulotteiseen lähimmän naapurin hakuun. Jopa pgvector-laajennuksen kanssa pelkkä PostgreSQL on suurilla korpuksilla hitaampi kuin vektorihaut varten suunnitellut tietokannat.

pgvector on kuitenkin erinomainen valinta, jos sovellus käyttää jo PostgreSQL:ää ja korpus sisältää alle muutaman miljoonan dokumentin, koska tällöin ei tarvitse lisätä uutta infrastruktuurikomponenttia.

Hallinnoidut ja itse ylläpidettävät vaihtoehdot

Vektoritietokantavaihtoehdot jakautuvat kahteen luokkaan:

  • Hallinnoidut (serverless): Pinecone, Weaviate Cloud — ei ylläpidettävää infrastruktuuria, maksu kyselyjen ja tallennustilan käytön mukaan, välitön skaalautuvuus
  • Itse ylläpidettävät: Qdrant, Chroma, Weaviate open-source, pgvector — täysi hallinta ja pienemmät kustannukset mittakaavan kasvaessa, mutta varmuuskopioista, päivityksistä ja skaalauksesta on huolehdittava itse

Varhaisvaiheen projekteissa kannattaa aloittaa hallinnoidusta palvelusta, jotta kehitys etenee nopeasti. Itse ylläpidettävää ratkaisua kannattaa arvioida, kun kuukausikustannukset ylittävät 200–300 dollaria.

Indeksityypit: Flat, IVF ja HNSW

Eri indeksityypit tarjoavat erilaisia kompromisseja:

  • Flat: Tarkka haku ilman approksimaatiota; suurilla aineistoilla hidas, mutta tarkkuus ei heikkene — sopii vertailutason suorituskyvyn mittaamiseen
  • IVF (Inverted File): Jakaa vektorit klustereihin ja hakee vain lähimmistä klustereista — nopea, mutta asetukset nlist ja nprobe on säädettävä
  • HNSW: Graafipohjainen; useimmissa kuormituksissa paras recallin ja nopeuden kompromissi, ja useimpien tuotantotietokantojen oletusratkaisu

Kvantisaatio muistin säästämiseksi

Vektorikvantisaatio pakkaa vektorin jokaisen 32-bittisen liukuluvun pienempään bittimäärään. Tämä vähentää muistin käyttöä huomattavasti, mutta tarkkuus heikkenee hieman:

  • FP32: 1536 ulottuvuutta × 4 tavua = 6 kt vektoria kohti
  • FP16: 3 kt vektoria kohti — 2-kertainen pakkaus, tarkkuuden heikkeneminen merkityksetöntä
  • INT8: 1,5 kt vektoria kohti — 4-kertainen pakkaus, recall heikkenee noin 1 %

10 miljoonan vektorin tapauksessa INT8-kvantisaatio pienentää muistitarpeen 60 gigatavusta 15 gigatavuun. Tämä voi ratkaista, mahtuvatko vektorit RAM-muistiin.

Milloin NumPy kannattaa vaihtaa vektoritietokantaan

Harkitkaa muistissa tapahtuvasta NumPy-hausta siirtymistä vektoritietokantaan, kun:

  • korpus sisältää yli 50 000 dokumenttia ja kyselyiden viive kasvaa
  • tarvitsette metadatan suodatusta (päivämäärän, käyttäjän, luokan tai muun perusteella)
  • tarvitsette pysyvän tallennuksen, joka säilyy sovelluksen uudelleenkäynnistyksissä
  • useiden palveluiden tai käyttäjien on voitava jakaa sama indeksi
  • tarvitsette mahdollisuuden päivittää tai poistaa yksittäisiä dokumentteja indeksoimatta kaikkea uudelleen

Pikatesti

Testatkaa, miten hyvin hallitsette tämän oppitunnin AI Engineering -käsitteet.

Oppitunnin kertaus

Tässä oppitunnissa opitte, että brute-force-haku NumPylla ei skaalaudu kymmeniä tuhansia suuremmille dokumenttimäärille, HNSW mahdollistaa nopean likimääräisen lähimmän naapurin haun kulkemalla hierarkkisessa graafissa ja vektoritietokannat lisäävät ANN-indeksien päälle metadatan suodatuksen, pysyvän tallennuksen ja CRUD-toiminnot. Seuraavaksi otamme käyttöön Pinencon, suosituimman hallinnoidun vektoritietokannan, ja indeksoimme ensimmäiset dokumenttimme.

Aloita maksutta

Opi Python tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
30
Oppitunnit
120

Usein kysytyt kysymykset

Onko oppitunti ”Miksi tarvitsette vektoritietokannan” ilmainen?

Kyllä – oppitunnin ”Miksi tarvitsette vektoritietokannan” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko AI Engineering Academy-kurssin, päivitä CoddyKit PROhon. AI Engineering Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Miksi tarvitsette vektoritietokannan”?

Ymmärrätte brute force -samankaltaisuushaun rajoitukset, tutustutte likimääräisten lähimpien naapureiden algoritmien, kuten HNSW:n, toimintaan ja selvitätte, mitä ongelmia vektoritietokannat ratkaise… Harjoittelet AI Engineering Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni AI Engineering Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin AI Engineering Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Miksi tarvitsette vektoritietokannan”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä AI Engineering Academy-oppitunnilla?

Kyllä. Jokainen AI Engineering Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Miksi tarvitsette vektoritietokannan
  2. Pineconeen tutustuminen
  3. pgvector: upotukset PostgreSQL:ssä
  4. Vektoritallennustilojen valinta ja vertailutestaus
← Takaisin: AI Engineering Academy