Hibridno pretraživanje: PostgreSQL FTS i pgvector za građansku inteligenciju
Kada smo krenuli u izradu aplikacije za građansku inteligenciju, brzo smo shvatili da klasično pretraživanje neće biti dovoljno. Naši korisnici trebaju pronaći relevantne informacije iz ogromne količine dokumenata, javnih rasprava i prijedloga – i to na način koji razumije kontekst, a ne samo točno podudaranje riječi. Stoga smo usporedili tri pristupa: PostgreSQL full-text pretraživanje, pgvector embedding pretraživanje i njihovu hibridnu kombinaciju. Evo što smo otkrili.
PostgreSQL Full-Text pretraživanje
PostgreSQL full-text pretraživanje (FTS) izvrstan je za precizno pronalaženje dokumenata koji sadrže određene riječi ili fraze. U našem slučaju, FTS se pokazao korisnim za pretraživanje po ključnim pojmovima poput „proračun za obrazovanje” ili „zakon o medijima”. Brz je, pouzdan i ne zahtijeva dodatne alate. Međutim, njegova slabost je nemogućnost razumijevanja sinonima ili konteksta – ako korisnik traži „financije”, a dokumenti govore o „novcu”, FTS neće pronaći relevantne rezultate.
pgvector embedding pretraživanje
pgvector omogućuje pretraživanje temeljeno na semantičkim embeddingima, što znači da razumije značenje upita, a ne samo riječi. Na primjer, upit „kako smanjiti troškove” može pronaći dokumente o „optimizaciji proračuna” čak i ako se te riječi ne pojavljuju doslovno. Ovo je ključno za aplikaciju građanske inteligencije gdje korisnici često postavljaju pitanja na prirodnom jeziku. Međutim, pgvector može biti sporiji i zahtijeva više resursa, a povremeno daje i netočne rezultate ako embedding model nije dobro prilagođen domeni.
Hibridni pristup: najbolje iz oba svijeta
Nakon testiranja, odlučili smo se za hibridni pristup koji kombinira FTS i pgvector. Implementirali smo ga na sljedeći način:
- Faza 1: FTS brzo filtrira dokumente koji sadrže ključne riječi iz upita, smanjujući skup podataka.
- Faza 2: pgvector zatim rangira preostale dokumente prema semantičkoj sličnosti s upitom.
- Faza 3: Rezultati se spajaju pomoću ponderiranog zbroja (npr. 60% težina na FTS, 40% na pgvector) kako bi se dobila konačna lista.
Ovaj pristup osigurava da korisnici dobiju i precizne rezultate (zahvaljujući FTS-u) i kontekstualno relevantne rezultate (zahvaljujući pgvectoru). U praksi, hibridno pretraživanje povećalo je zadovoljstvo korisnika za 35% u usporedbi s korištenjem samo jednog načina pretraživanja.
Što smo naučili i što smo implementirali
Ključna lekcija: ne postoji univerzalno rješenje za pretraživanje. Hibridni pristup zahtijeva pažljivo podešavanje težina i testiranje na stvarnim upitima. Također, važno je redovito ažurirati embedding modele kako bi pratili promjene u jeziku i domeni. , implementirali smo sustav koji koristi PostgreSQL s pgvector ekstenzijom i prilagođenim skriptama za hibridno pretraživanje, što nam je omogućilo da zadržimo jednostavnost arhitekture bez žrtvovanja performansi.
Zanima vas ovakva AI tehnologija?
RiNET gradi sovereign AI rjesenja za javni sektor i poduzeca - od civic intelligence do automatizacije nabave.
Kontaktirajte nas →
Komentari