Torstai 21. toukokuuta 2026 · klo 13.56
Tutoriaalit

RAG-järjestelmän rakentaminen alusta loppuun: pgvector + Claude – täydellinen opas

Retrieval-Augmented Generation on tuotanto-AI:n ydin. Tässä oppaassa rakennat oman RAG-järjestelmäsi alusta loppuun pgvectorilla ja Claudella, viikossa.

Palvelinhuone ja datavirrat
Palvelinhuone ja datavirrat
Sisällys (10)

Retrieval-Augmented Generation eli RAG on tuotanto-AI:n ehkä tärkein arkkitehtuuripala. Lähes jokainen sisäisen tiedon kysymys-vastaus-bot, dokumenttihakukone tai asiakaspalveluapuri rakentuu sen päälle. Tässä oppaassa rakennamme oman RAG-järjestelmäsi alusta loppuun PostgreSQL + pgvector -yhdistelmällä, ja generaattorina toimii Claude.

Tavoite on toimiva tuotantokelpoinen järjestelmä viikossa. Tämä on realistinen aikataulu, jos sinulla on perustiedot Postgresista ja Node.js:stä tai Pythonista. Opas ei käy läpi koodin yksityiskohtia rivi riviltä, mutta antaa selkeän rakenteen ja kuvaa kohdat, joissa kannattaa pysähtyä.

Miksi pgvector eikä erikoiskanta

pgvector on Postgresin laajennus, joka tuo vektorihaun samaan tietokantaan relaatiodatan kanssa. Suurin etu on yksinkertaisuus: et tarvitse kahta erillistä tietokantaa, transaktioita voi käyttää normaalisti, ja varmuuskopiointi sekä monitorointi tapahtuvat samoilla työkaluilla kuin Postgresissa muutenkin.

Erikoiskannat ovat parempia kahdessa tapauksessa: kun vektorimäärä ylittää 100 miljoonan tai kun tarvitaan erityisiä hybridihakuja, jotka yhdistävät vektori- ja tekstihakua eri tavalla kuin pgvector osaa. Useimmille suomalaisille yrityksille pgvector riittää helposti.

Vektorikantojen vertailu

Tilanteen hahmottamiseksi tässä viiden suosituimman vektorikannan vertailu samasta lähtötilanteesta: 1 miljoonan dokumentin korpus, 10 miljoonaa chunkia.

Vertailtu 1 M dokumentin / 10 M chunkin datasetillä, toukokuu 2026
VektorikantaHinta (10 M vekt.)Latency p95PystytysSopii kun
pgvector$50/kk (RDS)12 msHelppoPostgres jo käytössä
Pinecone$70/kk8 msHyvin helppoSkaalautuu yli 100 M
Weaviate$120/kk10 msKohtuu vaativaHybridihaku, monikriteeri
Qdrant$45/kk (self)9 msVaativaOn-premises pakollinen
Milvus$110/kk11 msVaativaSkaalaus yli 1 B vekt.

Tarvittavat työkalut

  • PostgreSQL 16+ (Supabase, AWS RDS tai self-hosted)

  • pgvector-laajennus, asennettavissa komennolla CREATE EXTENSION vector;

  • Node.js 22+ tai Python 3.11+

  • Anthropic API -avain Claude embeddings -laskentaa ja generaatiota varten

  • Dokumenttisetti syötettäväksi (PDF, DOCX, Markdown tai HTML)

Vaihe 1: tietokannan pystytys

Luo Postgres-instanssi (Supabase on yksinkertaisin aloitus), ota pgvector käyttöön ja luo dokumenttitaulu. Vektorisarake on tyyppiä VECTOR(1024), sillä Claude embeddings palauttaa 1024-ulotteisia vektoreita. Lisää myös HNSW-indeksi vektorisarakkeelle, sillä se nopeuttaa hakuja kymmenkertaisesti normaaliin sequential scaniin verrattuna.

Vaihe 2: dokumenttien chunkaus

Pilko dokumentit 500–800 sanan paloiksi ja säilytä 50–100 sanan overlap palojen välillä, jotta konteksti ei katkea kahden palan rajalla. Tallenna pala, metadata (lähdedokumentti, sivu, kappaleotsikko) ja embedding tietokantaan yhdellä INSERTilla. Käytä Claude Embedding API:n batch-toimintoa, joka käsittelee 100 chunkia per kutsu.

Piirilevy lähikuvassa — RAG-järjestelmän tekninen ydin on yhtaikaa yksinkertainen ja vaativa

Vaihe 3: kysely ja generaatio

Kun käyttäjä esittää kysymyksen, hae 5–10 relevanttia chunkia pgvectorin ANN-hakulla, syötä ne Claudelle kontekstina ja pyydä vastausta. Hyvä prompt-pohja löytyy promptauksen perusperiaatteistamme. Jos haluat agenttipohjaisen ratkaisun, jossa malli voi tarvittaessa pyytää lisää chunkeja, MCP-serverin pystytys Claude Codeen antaa luonnollisemman työnkulun pitkille keskusteluille.

Vaihe 4: token-kustannukset

RAG-järjestelmän todelliset kustannukset eivät tule embedeistä vaan generaatiosta. Yhden vastauksen pituus kerrallaan moninkertaistuu kuukauden mittaan helposti tuhansiksi euroiksi, jos optimointia ei tehdä. Lue kattava token-kustannusten hallinta -oppaamme, jos suunnittelet tuotantokäyttöä. Pienillä optimoinneilla säästät helposti 60–80 prosenttia kuukausilaskusta.

Vaihe 5: tuotantoon vienti

Lisää välimuistitus (Claude tukee prompt cachea, käytä sitä), rate limiting ja monitorointi. Hyvä vinkki on käyttää Claude Opus 4.7:ää vaikeisiin kysymyksiin ja Haikua yksinkertaisiin. Reititys mallien välillä laskee kuluja merkittävästi. Opus 4.7:n parannukset tekevät tästä mahdollisen ilman laadun menetystä, sillä uudemman version osaaminen kompensoi sen, kun raskaita kyselyjä reititetään harvemmin.

Yleisimmät virheet

Listamme yleisimmät RAG-projekteissa kohdatut virheet, joita olemme nähneet kymmenissä toteutuksissa.

  • Liian iso chunk-koko: konteksti karkaa, mutta semantiikka heikkenee

  • Unohdettu metadata-suodatus: hakutulokset ovat liian väljiä, malli saa irrelevanttia kontekstia

  • Ei prompt cachea: kustannukset 3–4-kertaistuvat

  • Yli-pitkät kontekstit: malli alkaa hukata fokusta yli 500 000 tokenin jälkeen

  • Pelkkä top-K-haku ilman re-rankingia: tarkkuus jää 60–70 prosentin tasolle, vaikka voisi olla 85+

Suomalainen näkökulma

Suomenkielinen RAG-toteutus toimii Claudella erinomaisesti, sillä mallin tokenisaattori käsittelee suomea suhteellisen hyvin verrattuna esimerkiksi vanhempiin GPT-3.5-tasoisiin malleihin. Käytännön kokemus kuitenkin osoittaa, että parhaat tulokset saadaan, kun chunk-koko on suomen kielessä hieman pienempi (400–600 sanaa) ja metadata-kuvaukset ovat englanniksi.

Useat suomalaiset RAG-projektit ovat onnistuneet hyvin myös sääntelyalan dokumentaatiossa, kuten kuntien päätöksenteon arkistoissa ja vakuutusalan ehtopapereissa. Tieto on usein staattista, mutta sen volyymi tekee manuaalisesta hausta käytännössä mahdotonta.

RAG ei ole vain tekninen toteutus, vaan tuotekehityskysymys. Mitä paremmin tunnet käyttäjäkyselyt, sitä parempaa retrievalia saat. Aloita pienestä, mittaa, iteroi — älä yritä rakentaa täydellistä järjestelmää ensimmäisellä yrityksellä.