Getur Postgres séð um RAG-ferlið þitt?

Við prófuðum gagnagrunnsmiðaða nálgun pgai til að sjá hvar hún einfaldar RAG-rekstur og hvar flókið vinnuálag krefst enn meiri sveigjanleika.

Samantekt stjórnenda

  • LLM geta aðeins „séð“ takmarkað magn texta í einu (samhengisgluggann). Þetta virkar fyrir lítil verkefni en bregst þegar þekkingargrunnur spannar þúsundir síðna. Jafnvel þegar samhengisglugginn er nógu stór geta afköst versnað vegna vandans við að „finna nál í heystakki“.

  • RAG („myndun með aukinni upplýsingaleit“) er orðið mjög algengt mynstur þar sem haldið er utan um þekkingargrunn (skjöl, wiki-síður, reglur, afrit o.fl.), merkingarfræðileg leit er gerð út frá fyrirspurn notanda til að sækja viðeigandi textabúta með vigurgreypingum og þeir síðan sendir til LLM ásamt spurningunni. Þetta takmarkar samhengi líkansins og getur, ef rétt er að staðið, bætt svör og dregið úr ranghugmyndum.

  • pgai er opinn Postgres-viðauki (ásamt tengdum verkfærum) sem auðveldar gerð verkferla fyrir „upplýsingaleit með gervigreind“ ofan á trausta, opna gagnagrunninum PostgreSQL.

  • Meginhugmyndin er að færa stærri hluta hefðbundins RAG-ferlis í gagnagrunnslagið (lesa inn → búta → greypa → halda vigurgreypingum samstilltum), í stað þess að nota gagnagrunninn „aðeins sem geymslu“ fyrir vigurgreypingar.

  • Fyrstu kynni lofa góðu, en um leið og RAG-ferlið verður örlítið flókið (sérstaklega bútunaraðferðirnar) hentar lausnin ekki lengur. Við munum þó fylgjast náið með þessu verkefni.

RAG-mynstrið

Það eru margar leiðir til að byggja RAG. Ítarlegri umfjöllun um ólíkar aðferðir má finna í Hagnýtum dæmum um sérsniðnar RAG-lausnir. Þegar gæði skipta máli reynist hönnunarsviðið furðudjúpt, en algenga „sjálfgefna“ aðferðin er yfirleitt á þessa leið:

  1. Safna saman skjölum.

  2. Skipta þeim í búta. Til þess eru margar ólíkar aðferðir (t.d. málsgreinar og merkingarfræðilegir hópar).

  3. Breyta hverjum bút í vigurgreypingu.

  4. Geyma vigurgreypingarnar í vigurgagnagrunni (Pinecone, Milvus o.fl.) eða í Postgres með pgvector.

  5. Þegar fyrirspurn berst er leitað að líkustu bútunum `og þeir sendir til LLM (aftur ... það eru líka margar leiðir til þess).

Í mörgum tæknistæðum fara skref (1)–(3) fram utan gagnagrunnsins, í forritskóða eða gagnavinnsluferli, en gagnagrunnurinn er einkum notaður til að:

  • geyma vigurgreypingar

  • leita í vigurgreypingum

Tilgangur pgai

pgai er opinn Postgres-viðauki, þróaður af Timescale, sem reynir að má út þessi mörk.

Í stað þess að vigurgreypingum sé handstýrt af forritinu gerir pgai þær að eiginleika gagnagrunnsins:

  • Þú tilgreinir hvaða töflu eða skjöl á að greypa.

  • Þú tilgreinir greypingarlíkanið og bútunaraðferð.

  • pgai sér um afganginn, þar á meðal að uppfæra vigurgreypingarnar þegar upprunagögnin breytast.

Fyrirheitið er heillandi:

  • Minni sérsniðinn tengikóði sem þarf að viðhalda.

  • Auðveldara ætti að vera að halda vigurgreypingunum „ferskum“ þegar upprunaskjölin breytast.

  • Postgres/pgai sér um endurtilraunir, tíðnitakmarkanir, misheppnuð verk o.fl.

Athugasemd til lesenda: pgai inniheldur pgvector (annan mjög vinsælan Postgres-viðauka fyrir RAG). pgvector bætir vigurgeymslu og skyldleikaleit við Postgres, en pgai byggir ofan á það og sjálfvirknivæðir skref RAG-ferlisins, svo sem bútun, greypingu og uppfærslu vigurgreypinganna.

Fyrstu kynni af pgai

Það sem okkur líkaði

1) Einfalt er að koma því í gang.

Auðveldasta leiðin er tiltölulega einföld:

  • Sækja Docker-myndir Timescale (gagnagrunn + vinnsluþjón).

  • Gefa upp API-lykil greypingarveitunnar.

  • Keyra nokkrar SQL-skipanir til að skilgreina vigurgreypinn (í grunninn: hvað á að greypa, hvernig á að búta það og hvaða líkan á að nota).

Eftir það lætur pgai sérstakt ferli keyra vinnsluþjón vigurgreypisins og búa ósamstillt til vigurgreypingar (t.d. á fimm mínútna fresti eða með þeirri tíðni sem óskað er).

2) Þægilegt er að keyra allt ferlið „nálægt“ gagnagrunninum.

pgai getur lesið inn efni úr töflum og einnig sótt skjöl frá stöðum á borð við S3, síðan þáttað þau, bútað og greypað. Það ræður einnig við ýmis textaskjalasnið, svo sem PDF, Markdown o.fl.

Það sem reyndist takmarkandi

1) Þú missir mikla stjórn (og RAG krefst stundum stjórnunar).

Afkastamikil RAG-kerfi (miðað við gæði svara) þurfa oft sérsniðin ferli, svo sem:

  • sérsniðnar bútunarreglur (eftir fyrirsögnum, síðum, mælendaskiptum o.s.frv.)

  • bútun sem tekur mið af lýsigögnum (varðveitir kaflaheiti, tímamerki, höfunda og skjalagerð)

  • ólíkar greypingaraðferðir eftir skjalagerð

pgai býður minni sveigjanleika hvað þetta varðar.

Sem stendur eru tvær meginbútunaraðferðir: einfaldur textaskiptir eftir stafafjölda og endurkvæmur textaskiptir eftir stafafjölda, auk möguleika á engri bútun. Það kann að duga í sumum tilfellum, en mörg RAG-kerfi í framleiðslu krefjast meiri sérsniðningar.

Frábært væri ef Timescale gæti innleitt sumar af þróaðri bútunaraðferðunum sem finnast í söfnum á borð við Chonkie og jafnframt stutt háþróaða hönnun á borð við samhengisbundna upplýsingaleit Anthropic.

2) Texti er í forgrunni, ekki fjölhátta gögn.

Mörg áhugaverð RAG-verkefni snúast ekki lengur eingöngu um texta:

  • PDF-skjöl með skýringarmyndum

  • skjámyndir / myndir

  • hljóðupptökur

  • myndskeið

Jafnvel þótt hægt sé að „draga út texta“ úr þessum heimildum jafngildir það ekki raunverulegu fjölhátta greypingarferli.

Ef pgai styður síðar fjölhátta líkön frá upphafi til enda (lesa inn → búta → greypa stórar myndir, hljóð og myndskeið sem geymd eru í S3, með traustri samstillingu) yrði það mjög áhugavert. Í dag er þetta hins vegar ferli fyrir textagreypingar.

3) Ef þú þarft aðeins vigurgreypingar þarftu ef til vill ekki pgai.

Ef innlestrarferlið er þegar sérsniðið (eða þarf að vera það) er „greyping textabúta“ ekki erfiðasti hluti RAG. Við þær aðstæður leysir pgai auðveldasta hluta vandans.

Ef þekkingargrunnurinn er sjaldan uppfærður er sjálfvirk samstilling vigurgreypinga einnig minna virði.

Texta-í-SQL-lag

Sérlega góð leið til að nota pgai væri að setja texta-í-SQL-viðmót ofan á gagnagrunnana. Þetta má gera nokkuð auðveldlega með semantic_catalog-einingunni sem pgai býður upp á. Settu það einfaldlega upp svona:

Bash

OPENAI_API_KEY="your-OpenAPI-key-goes-here"TARGET_DB="postgres://user:password@host:port/database"CATALOG_DB="postgres://user:password@host:port/database"

og láttu merkingarfræðilega skrána lesa gagnalýsingarnar með pgai semantic-catalog create. Þetta býr til samhengi úr gagnageymslunni sem lítur einhvern veginn svona út:

Plain Text

---schema: postgres_airname: aircrafttype: tabledescription: Lists aircraft models with performance characteristics and unique codes.columns:- name: model  description: Commercial name of the aircraft model.- name: range  description: Maximum flight range in kilometers.- name: class  description: Airframe class category or configuration indicator.- name: velocity  description: Cruising speed of the aircraft.- name: code  description: Three-character aircraft code serving as the primary key....

pgai getur nú nýtt þetta samhengi á ýmsa vegu:

Með merkingarfræðilegri leit:

Þessi fyrirspurn skilar töflum, föllum og öðrum hlutum sem gætu átt við fyrirspurn þína á náttúrulegu máli:

Bash

pgai semantic-catalog search -p "Your natural language question goes here!"

Sækja hrátt samhengi:

Þetta birtir hráa YAML-samhengið sem tengist fyrirspurn þinni á náttúrulegu máli:

Bash

pgai semantic-catalog search -p "Your natural language question goes here!" --render

Mynda SQL:

Einnig er hægt að mynda beint þann hráa SQL-kóða sem þarf til að svara fyrirspurninni. Samhengið úr fyrra skrefi er sent til LLM og svar myndað:

Bash

pgai semantic-catalog generate-sql -p "Your natural language question goes here!"

Hvernig þú getur notað pgai núna

Ef þú ert að byggja tiltölulega einfalt RAG-kerfi er þess virði að prófa pgai ef þú vilt:

  • nota Postgres sem aðalgagnakerfi,

  • lágmarka tengikóða,

  • vigurgreypingar sem haldast sjálfkrafa samstilltar,

  • fljótlega leið til að tengja texta-í-SQL við gagnagrunnana,

  • prófa ný RAG-verkfæri og Postgres-viðauka.

Hvar við myndum fara varlega

Líklega er rétt að bíða með pgai ef RAG-ferlið krefst einhvers af eftirfarandi:

  • mikillar sérsniðinnar innlestrar- eða bútunarvirkni

  • margra skjalagerða með ólíkar þáttunarkröfur

  • fjölhátta vigurgreypinga

Að lokum er ljóst að pgvector hefur náð mikilli útbreiðslu, en óvíst er hvort pgai veki jafnmikinn áhuga og fái þar með sambærilegan stuðning (þó að það hafi aðeins verið til í um 18 mánuði).

GitHub-línurit yfir stjörnusögu sem sýnir útbreiðslu pgai frá Timescale með tímanum.

Samantekt

pgai er áhugaverð RAG-nálgun sem lætur gagnagrunna sinna stærri hluta venjubundins rekstrar og einfaldar þannig forritskóðann.

Eins og er er það:

  • nothæft og virkilega þægilegt fyrir einfaldar RAG-uppsetningar

  • ekki nógu sveigjanlegt fyrir sérsniðnari ferli (sérstaklega fjölhátta)

Það lofar góðu og er sannarlega þess virði að fylgjast með þróuninni.

Höfundur

Andrew Liubinas