From 05d45e623c78f90181b9b7e9c0e332c02f9179e6 Mon Sep 17 00:00:00 2001 From: Silas Marvin <19626586+SilasMarvin@users.noreply.github.com> Date: Thu, 6 Jun 2024 14:00:10 -0700 Subject: [PATCH 1/9] Unified RAG draft 1 --- pgml-cms/docs/guides/unified-rag.md | 332 ++++++++++++++++++++++++++++ 1 file changed, 332 insertions(+) create mode 100644 pgml-cms/docs/guides/unified-rag.md diff --git a/pgml-cms/docs/guides/unified-rag.md b/pgml-cms/docs/guides/unified-rag.md new file mode 100644 index 000000000..5d1c24007 --- /dev/null +++ b/pgml-cms/docs/guides/unified-rag.md @@ -0,0 +1,332 @@ +--- +description: >- + Unified RAG is an alternative to typically RAG systems where embedding, retrieval, reranking, and text-generation are combined under on service. +--- + +# Unified RAG + +## Introduction + +Retrieval Augmented Generation (RAG) is domain specific jargon that simply means augmenting LLMs with context to improve their response. For example, if I were to ask an LLM: “How do I use pgml.transform?”. I would most likely get an unsatisfactory mostly incorrect example. + +However, if I were to first provide it with some context about the pgml.transform function, and then asked it “How do I use pgml.transform?”. I would likely get a much better answer. + +RAG has grown rapidly in popularity. It is not an esoteric practice run only by advanced machine learning practitioners, but is used widely by anyone who wants to improve the output of their LLMs. It is most commonly used by chatbots to better answer user questions. + +As quick reminder, the typical modern RAG workflow looks like this: + +TODO: INSERT RAG DIAGRAM + +Steps one through three prepare our RAG system, and steps four through eight are RAG itself. + +This is not a post about the typically modern RAG workflow, this is a demonstration of Unified RAG and the simplicity and power it provides. + +## Unified RAG + +RAG systems have a number of drawbacks: +- They require multiple different paid services +- They introduce new microservices and points of failure +- They are slow and expose user data to third parties providing a negative user experience + +Unified RAG is a solution to the drawbacks of RAG. Instead of relying on separate microservices to handle embedding, retrieval, reranking, and text generation, unified RAG combines them under one service. In this case, we will be combining them all under PostgresML. + +### Preperation + +Just like RAG, the first step is to prepare our unified RAG system. The first step in preparing our Unified RAG system is storing our documents in our PostgresML Postgres database. + +!!! generic + +!!! code\_block + +```postgresql +CREATE TABLE documents (id SERIAL PRIMARY KEY, document text NOT NULL); + +-- Insert a document that has some examples of pgml.transform +INSERT INTO documents (document) VALUES (' +Here is an example of the pgml.transform function + +SELECT pgml.transform( + task => ''{ + "task": "text-generation", + "model": "meta-llama/Meta-Llama-3-8B-Instruct" + }''::JSONB, + inputs => ARRAY[''AI is going to''], + args => ''{ + "max_new_tokens": 100 + }''::JSONB +); + +Here is another example of using the pgml.transform function + +SELECT pgml.transform( + task => ''{ + "task": "text-generation", + "model": "meta-llama/Meta-Llama-3-70B-Instruct" + }''::JSONB, + inputs => ARRAY[''AI is going to''], + args => ''{ + "max_new_tokens": 100 + }''::JSONB +); + +Here is another example of using the pgml.transform function + +SELECT pgml.transform( + task => ''{ + "task": "text-generation", + "model": "microsoft/Phi-3-mini-128k-instruct" + }''::JSONB, + inputs => ARRAY[''AI is going to''], + args => ''{ + "max_new_tokens": 100 + }''::JSONB +); +'); + +-- Also insert some random documents +INSERT INTO documents (document) SELECT md5(random()::text) FROM generate_series(1, 100); +``` + +!!! + +!!! + +In addition to the document that contains an example of pgml.transform we have inserted 100 randomly generated documents. We include these noisy documents to verify that our Unified RAG system can retrieve the correct context. + +We can then split them using the pgml.chunk function. + + +!!! generic + +!!! code\_block + +```postgresql +CREATE TABLE chunks(id SERIAL PRIMARY KEY, chunk text NOT NULL, chunk_index int NOT NULL, document_id int references documents(id)); + +INSERT INTO chunks (chunk, chunk_index, document_id) +SELECT + (chunk).chunk, + (chunk).chunk_index, + id +FROM ( + SELECT + pgml.chunk('recursive_character', document, '{"chunk_size": 250}') chunk, + id + FROM + documents) sub_query; +``` + +!!! + +!!! + +We can verify they were split correctly. + +!!! generic + +!!! code\_block + +```postgresql +SELECT * FROM chunks limit 10; +``` + +!!! + +!!! results + +id | chunk | chunk_index | document_id +----+--------------------------------------------------------------+-------------+------------- + 1 | Here is an example of the pgml.transform function | 1 | 1 + 2 | SELECT pgml.transform( +| 2 | 1 + | task => '{ +| | + | "task": "text-generation", +| | + | "model": "meta-llama/Meta-Llama-3-8B-Instruct" +| | + | }'::JSONB, +| | + | inputs => ARRAY['AI is going to'], +| | + | args => '{ +| | + | "max_new_tokens": 100 +| | + | }'::JSONB +| | + | ); | | + 3 | Here is another example of using the pgml.transform function | 3 | 1 + 4 | SELECT pgml.transform( +| 4 | 1 + | task => '{ +| | + | "task": "text-generation", +| | + | "model": "meta-llama/Meta-Llama-3-70B-Instruct" +| | + | }'::JSONB, +| | + | inputs => ARRAY['AI is going to'], +| | + | args => '{ +| | + | "max_new_tokens": 100 +| | + | }'::JSONB +| | + | ); | | + 5 | Here is another example of using the pgml.transform function | 5 | 1 + 6 | SELECT pgml.transform( +| 6 | 1 + | task => '{ +| | + | "task": "text-generation", +| | + | "model": "microsoft/Phi-3-mini-128k-instruct" +| | + | }'::JSONB, +| | + | inputs => ARRAY['AI is going to'], +| | + | args => '{ +| | + | "max_new_tokens": 100 +| | + | }'::JSONB +| | + | ); | | + 7 | ad825d335ceea1f2383620d796b61ba0 | 1 | 2 + 8 | f3319e27b8b560b3564a9fbd1a873480 | 1 | 3 + 9 | f420939ecc8721f0200afa78d440642d | 1 | 4 + 10 | 3592866b9081fb53aa3b5d11997170d9 | 1 | 5 + +!!! + +!!! + +Instead of using an embedding API, we are going to embed our chunks directly in our databse using the `pgml.embed` function. + + +!!! generic + +!!! code\_block + +```postgresql +CREATE TABLE embeddings ( + id SERIAL PRIMARY KEY, chunk_id bigint, embedding vector (1024), + FOREIGN KEY (chunk_id) REFERENCES chunks (id) ON DELETE CASCADE +); + +INSERT INTO embeddings(chunk_id, embedding) +SELECT + id, + pgml.embed('mixedbread-ai/mxbai-embed-large-v1', chunk) +FROM + chunks; +``` + +!!! + +!!! + +In this case we are using the mixedbread-ai/mxbai-embed-large-v1 a SOTA model with incredible recall performance. + +We can verify they were embedded correctly. + +!!! generic + +!!! code\_block + +```postgresql +\x auto +SELECT * FROM embeddings LIMIT 1; +\x off +``` + +!!! + +!!! results + +id | 1 +chunk_id | 1 +embedding | [0.018623363,-0.02285168,0.030968409,-0.0008862989,-0.018534033,-0.025041971,0.013351363,0.030264968,0.018940015,0.040349673,0.048829854,0.015713623,0.021163238,-0.004478061,-0.0062974053,0.01342851,-0.020463197,-0.04097013,-0.030838259,-0.0026781335,-0.013514478,-0.017542545,-0.055083144,-0.061959717,-0.012871186,0.031224959,0.02112418,-0.014853348,0.055648107,0.08431109,-0.041937426,-0.02310592,0.02245858,-0.0431297,-0.008469138,-0.011226366,0.032495555,-0.020337906,-0.016152548,-0.023888526,0.02149491,-0.0053377654,0.0476396,-0.036587544,-0.07834923,0.015603419,0.043070674,0.019468445,-0.066474535,-0.0015779501,-0.013878166,-0.013458725,0.013851631,0.0071652774,-0.023882905,-0.015201843,0.012238541,-0.03737877,-0.025391884,0.043650895,0.01558388,0.039119314,0.029194985,-0.04744193,0.0056170537,0.010778638,-0.017884707,-0.00029244038,-0.012602758,-0.007875246,-0.04526054,-6.4284686e-05,-0.005769598,-0.00038845933,-0.032822825,0.03684274,-0.0008313914,-0.046097573,-0.014152655,0.04616714,-0.022156844,0.03566803,-0.014032094,0.009407709,-0.038648155,-0.024573283,0.0156378,0.0547954,0.035394646,0.0076721613,-0.007008655,0.032833662,-0.0011310929,-0.013156701,-0.0042242086,0.069960855,-0.021828847,0.02955284,-0.025502147,-0.009076977,0.05445286,0.08737233,-0.02128801,0.042810723,-0.0058011413,-0.0107959015,0.032310173,-0.010621498,-0.021176925,-0.021960221,-0.015585316,-0.007902493,0.034406897,-0.023450606,0.0037850286,0.04483244,-0.011478958,-0.031562425,-0.019675884,-0.008219446,-0.005607503,-0.03065768,0.0323341,-0.019487593,0.009064247,-0.038718406,0.0059558107,0.023667725,-0.035244368,9.467191e-05,0.0049183182,-0.037334662,-0.021340346,0.0019130141,0.019300135,-0.0029919841,-0.045514077,0.02666689,0.0046224073,-0.021685645,-0.0037645202,0.0006780366,-0.015406854,0.09090279,0.018704489,-0.02280434,0.05506764,-0.008431497,-0.037277948,0.03009002,-0.009108825,-0.00083089864,0.0048499256,0.0048382734,0.0094076255,-0.024700468,-0.016617157,0.008510655,-0.012369503,0.014046174,-0.010123938,-0.028991196,0.009815532,0.054396246,-0.029008204,0.04051117,-0.07013572,-0.03733185,-0.060128953,-0.024095867,0.0018222647,0.0018169725,-0.0009262719,-0.005803398,0.03986231,0.06270649,0.01694802,-0.008162654,0.004494133,0.038037747,-0.018806586,-0.011087607,0.026261529,0.052072495,0.016593924,0.0072109043,0.03479167,0.009446735,0.020005314,-0.027620671,0.018090751,0.04036098,-0.0027258266,0.016745605,-0.02886597,0.04071484,-0.06869631,0.001225516,-0.06299305,-0.0709894,-0.0192085,0.013239349,-0.021542944,0.001710626,-0.018116038,-0.01748119,0.01775824,0.03925247,-0.012190861,0.035636537,0.042466108,-0.016491935,-0.037154924,0.018040363,-0.0131627545,0.010722516,-0.026140723,0.02564186,-0.004605382,0.041173078,0.00073589047,0.011592239,0.009908486,0.043702055,0.053091794,-0.012142852,-0.00018352101,0.085855715,-0.014580144,0.029045325,-0.0023999067,0.025174063,0.044601757,0.035770934,0.040519748,0.037240535,0.043620642,0.044118866,0.019248607,0.011306996,0.020493535,0.035936765,0.048831582,0.012623841,0.009265478,0.010971202,-0.0132412,0.0109977005,-0.0054538464,0.016473738,-0.04083495,0.042505562,-0.001342487,0.005840936,0.0017675279,0.017308434,0.0420143,0.051328707,-0.009452692,0.0057223514,0.026780825,0.00742446,-0.024630526,0.03107323,0.00916192,0.027411995,-0.0019175496,-0.025291001,-0.01901041,-0.07651367,-0.0465344,-0.042462647,-0.024365354,-0.021079501,-0.0432224,0.00013768316,0.00036046258,-0.03718051,0.038763855,0.0032811756,0.00697624,-0.017028604,-0.048220832,0.012214309,0.03986564,0.003932904,-0.042311475,0.005391691,0.028816152,0.069943205,-0.055599026,-0.010274334,0.028868295,0.00585409,0.009760283,0.0118976,-0.040581644,-0.053004548,-0.0526296,-0.034240413,-0.0038363612,-0.004730754,-0.018723277,-0.01601637,-0.038638163,0.06655874,0.0351013,-0.004038268,0.040204167,0.040881433,-0.04239331,-0.010466879,0.009326172,0.00036304537,-0.056721557,0.03998027,0.02481976,-0.004078023,0.0029230101,-0.019404871,-0.005828477,0.04294278,-0.017550338,-0.007534357,-0.008580863,0.056146596,0.007770364,-0.03207084,0.017874546,0.004025578,-0.047864694,-0.034685463,-0.033363935,0.02950657,0.05429194,0.0073523414,-0.014066911,0.02366431,0.03610486,0.032978192,0.016071666,-0.035677373,0.0054646228,0.0203664,0.019233122,0.058928937,0.0041354564,-0.02027497,0.00040053058,0.0019034429,-0.012043072,0.0017847657,0.03676109,0.047565766,-0.005874584,0.017794278,-0.030046426,-0.021112567,0.0056568286,0.01376357,0.05977862,0.011873086,-0.028216759,-0.06745307,-0.016887149,-0.04243197,-0.021764198,0.047688756,0.023734126,-0.04353192,0.021475876,0.01892414,-0.017509887,0.0032162662,-0.009358749,-0.03721738,0.047566965,-0.017878285,0.042617068,-0.027871821,-0.04227529,0.003985077,-0.019497044,0.0072685108,0.021165995,0.045710433,0.0059271595,-0.006183208,-0.032289572,-0.044465903,-0.020464543,0.0033873026,0.022058886,-0.02369358,-0.054754533,0.0071472377,0.0021873175,0.04660187,0.051053047,-0.010261539,-0.009315611,0.02052967,0.009023642,0.031200182,-0.040883888,0.016621651,-0.038626544,0.013732269,0.010218355,0.019598525,-0.006492417,-0.012904362,-0.010913204,0.024882413,0.026525095,0.008932081,-0.016051447,0.037517436,0.053253606,0.035980936,-0.0074353246,-0.017852481,-0.009176863,0.026370667,0.03406368,-0.036369573,-0.0033056326,-0.039790567,-0.0010809397,0.06398017,-0.0233756,-0.022745207,0.0041284347,-0.006868821,-0.022491742,0.029775932,0.050810635,-0.011080408,-0.007292075,-0.078457326,0.0044635567,0.012759795,-0.015698882,-0.02220119,0.00942075,-0.014544812,0.026497401,0.01487379,-0.005634491,-0.025069563,0.018097453,-0.029922431,0.06136796,-0.060082547,0.01085696,-0.039873533,-0.023137532,-0.01009546,0.005100517,-0.029780779,-0.018876795,0.0013024161,-0.0027637074,-0.05871409,-0.04807621,0.033885162,-0.0048714406,-0.023327459,0.024403112,-0.03556512,-0.022570046,0.025841955,0.016745063,0.01596773,-0.018458387,-0.038628712,0.012267835,0.013733216,-0.05570125,0.023331221,-0.010143926,0.0030010103,-0.04085697,-0.04617182,0.009094808,-0.057054907,-0.045473132,0.010000442,-0.011206348,-0.03056877,0.02560045,-0.009973477,0.042476565,-0.0801304,0.03246869,-0.038539965,-0.010913026,-0.022911731,0.030005522,-0.010367593,0.026667004,-0.027558804,-0.05233932,0.009694177,0.0073628323,0.015929429,-0.026884604,0.016071552,-0.00019720798,0.00052713073,-0.028247854,-0.028402891,-0.016789969,-0.024457792,-0.0025927501,0.011493104,0.029336551,-0.035506643,-0.03293709,0.06718526,0.032991756,-0.061416663,-0.034664486,0.028762456,-0.015881855,-0.0012977219,0.017649014,0.013985521,-0.03500709,-0.06555898,0.01739066,-0.045807093,0.004867656,-0.049182948,-0.028917754,0.0113239065,0.013335351,0.055981997,-0.036910992,-0.018820828,-0.043516353,0.008788547,-0.05666949,0.009573692,-0.021700945,0.010256802,-0.017312856,0.044344205,-0.0076902485,-0.008851547,0.0010788938,0.011200733,0.034334365,0.022364784,-0.030579677,-0.03471,-0.011425675,-0.011280336,0.020478066,-0.007686596,-0.022225162,0.028765464,-0.016065672,0.037145622,-0.009211553,0.007401809,-0.04353853,-0.04326396,-0.011851935,-0.03837259,-0.024392553,-0.056246143,0.043768484,-0.0021168136,-0.0066281,-0.006896298,-0.014978161,-0.041984025,-0.07014386,0.042733505,-0.030345151,-0.028227473,-0.029198963,-0.019491067,0.036128435,0.006671823,0.03273865,0.10413083,0.046565324,0.03476281,-0.021236487,0.010281997,0.008132755,-0.006925993,0.0037259492,-0.00085186976,-0.063399576,-0.031152688,-0.026266094,-0.039713737,-0.017881637,-0.004793995,0.044549145,-0.019131236,0.041359022,-0.020011334,-0.0487966,-0.012533663,0.009177706,0.056267086,0.004863351,0.029361043,-0.017181171,0.05994776,0.024275357,-0.026009355,-0.037247155,-0.00069368834,0.049283065,0.00031620747,-0.05058156,0.038948,0.0038390015,-0.04601819,-0.018070936,0.006863339,-0.024927856,-0.0056363824,-0.05078538,-0.0061668083,0.009082598,-0.007671819,0.043758992,0.02404526,-0.02915477,0.015156649,0.03255342,-0.029333884,-0.030988852,0.0285258,0.038548548,-0.021007381,-0.004295833,-0.004408545,-0.015797473,0.03404609,0.015294826,0.043694574,0.064626984,0.023716459,0.02087564,0.028617894,0.05740349,0.040547665,-0.020582093,0.0074607623,0.007739327,-0.065488316,-0.0101815825,-0.001488302,0.05273952,0.035568725,-0.013645145,0.00071412086,0.05593781,0.021648252,-0.022956904,-0.039080553,0.019539805,-0.07495989,-0.0033871594,-0.007018141,-0.010935482,-5.7075984e-05,0.013419309,-0.003545881,-0.022760011,0.00988566,0.014339391,-0.008118722,0.056001987,-0.020148695,0.0015329354,-0.024960503,-0.029633753,-0.013379987,-0.0025359367,0.013124176,0.031880926,-0.01562599,0.030065667,0.0014069993,0.0072038868,0.014385158,-0.009696549,-0.014109655,-0.059258915,-0.0002165593,0.016604712,-0.0059224735,-0.0013092262,-0.00022250676,-0.0023060953,-0.014856572,-0.009526227,-0.030465033,-0.039493423,-0.0011756015,0.033197496,-0.028803488,0.011914758,-0.030594831,-0.008639591,-0.020312231,0.026512157,0.015287617,0.0032433916,0.0074692816,0.0066296835,0.030222693,0.025374962,0.027766889,-0.017209511,-0.032084063,-0.020027842,0.008249133,-0.005054688,0.051436525,-0.030558063,-0.02633653,-0.01538074,0.010943056,0.0036713344,0.0024809965,0.006587549,-0.007795616,-0.051794346,-0.019547012,-0.011581287,-0.007759964,0.045571648,-0.009941077,-0.055039328,0.0055089286,-0.025752712,-0.011321939,0.0015637486,-0.06359818,-0.034881815,0.01625671,-0.013557044,0.039825413,-0.0027895744,-0.014577813,-0.0008740217,0.0034209616,0.043508507,-0.023725279,0.012181109,-0.009782305,0.0018773589,-0.065146625,0.009437339,0.00733527,0.049834568,-0.020543063,-0.039150853,-0.015234995,-0.006770511,0.002985214,-0.0011479045,0.009379375,-0.011452433,-0.0277739,0.014886782,-0.0065106237,0.006157106,-0.009041895,0.0031169152,-0.0669943,0.0058886297,-0.056187652,0.011594736,0.018308813,-0.026984183,-0.021653237,0.081568025,0.02491183,0.0063725654,0.028600894,0.04295813,0.019567039,-0.015854416,-0.07523876,0.012444418,0.02459371,0.054541484,-0.0017476659,-0.023083968,0.010912003,0.01662412,0.033263847,-0.022505535,0.016509151,0.019118164,0.026604444,-0.01345531,-0.034896314,-0.030420221,-0.005380027,0.009990224,0.063245244,-0.02383651,-0.031892184,-0.019316372,-0.016938515,0.040447593,-0.0030380695,-0.035975304,0.011557656,0.0014175953,0.0033523554,0.019000882,-0.009868413,0.025040675,0.0313598,0.020148544,0.025335543,-0.0030205864,0.0033406885,0.015278818,-0.008082225,-0.013311091,0.0024015747,0.02845818,-0.024585644,-0.0633492,-0.07347503,-0.008628047,-0.044017814,-0.010691597,0.03241164,0.0060925046,-0.032058343,-0.041429296,0.06868553,0.011523587,0.05747461,0.043150447,-0.035121176,-0.0052461633,0.04020538,0.021331007,0.02410664,-0.021407101,0.08082899,0.025684848,0.06999515,0.02202676,-0.025417957,-0.0094303815,0.028135775,-0.019147158,-0.04165579,-0.029573435,-0.0066949194,0.006705128,-0.015028007,-0.037273537,-0.0018824468,0.017890878,-0.0038961077,-0.045805767,0.0017864663,0.057283465,-0.06149215,0.014828884,0.016780626,0.03504063,0.012826686,0.01825945,-0.014611099,-0.05054207,0.0059569273,-0.050427742,0.012945258,-0.000114398965,0.02219763,-0.022247856,-0.029176414,-0.020923832,-0.025116103,-0.0077409917,-0.016431509,0.02489512,0.04602958,0.03150148,0.012386089,-0.05198216,-0.0030460325,0.0268005,0.038448498,0.01924401,0.07118071,0.036725424,-0.013376856,-0.0049849628,-0.03859098,0.03737393,-0.0052245436,-0.006352251,0.019535184,-0.0017854937,-0.0153605975,-0.067677096,0.0035186394,0.072521344,-0.031051565,-0.016579162,-0.035821736,0.0012950175,-0.04756073,-0.037519347,-0.044505138,0.03384531,0.016431695,0.01076104,0.01761071,-0.030177226,0.20769434,0.044621687,0.025764097,-0.00054298044,0.029406168,0.053361185,0.013022782,-0.006139999,0.001014758,-0.051892612,0.023887891,0.0035872294,0.008639285,0.010232208,-0.021343045,0.017568272,-0.07338228,0.014043151,-0.015673313,-0.04877262,-0.04944962,0.05635428,0.0064074355,0.042409293,0.017486382,0.026187604,0.052255314,-0.039807603,-0.03299426,-0.04731727,-0.034517273,0.00047638942,0.008196412,0.020099401,-0.007953495,0.005094485,-0.032003388,-0.033158697,-0.020399494,0.015141361,0.026477406,-0.01990327,0.021339003,-0.043441944,-0.01901073,0.021291636,-0.039682653,0.039700523,0.012196781,-0.025805188,0.028795147,-0.027478887,0.022309775,-0.09748059,-0.014054129,0.0018843628,0.014869343,-0.019351315,0.0026920864,0.03932672,-0.0066732406,0.035402156,0.0051303576,0.01524948,-0.010795729,0.063722104,-0.0139351925,0.016053425,-0.042903405,-0.008158309,-0.025266778,-0.025320085,0.051727448,-0.046809513,0.020976106,0.032922912,-0.018999893,0.009321827,0.0026644706,-0.034224827,0.007180524,-0.011403546,0.00018723078,0.020122612,0.0053222817,0.038247555,-0.04966653,1.7162782e-05,0.028443096,0.056440514,0.037390858,0.050378226,-0.03398227,0.029389588,-0.01307477] + +!!! + +!!! + +Notice that we set expanded display to auto to make it easier to visualize the output. + +### Unified Retrieval + +Retrieval with Unified RAG is lightning fast and incredibly simple. + +!!! generic + +!!! code\_block time="70.381 ms" + +```postgresql +WITH embedded_query AS ( + SELECT + pgml.embed('mixedbread-ai/mxbai-embed-large-v1', 'How do I use pgml.transform?', '{"prompt": "Represent this sentence for searching relevant passages: "}')::vector embedding +) +SELECT + chunks.id, + ( + SELECT + embedding + FROM embedded_query) <=> embeddings.embedding cosine_distance, + chunks.chunk +FROM + chunks + INNER JOIN embeddings ON embeddings.chunk_id = chunks.id +ORDER BY + embeddings.embedding <=> ( + SELECT + embedding + FROM embedded_query) +LIMIT 6; +``` + +!!! + +!!! results + + id | cosine_distance | chunk +----+---------------------+-------------------------------------------------------------- + 1 | 0.07063409896594541 | Here is an example of the pgml.transform function + 5 | 0.07361361603777417 | Here is another example of using the pgml.transform function + 3 | 0.07361361603777417 | Here is another example of using the pgml.transform function + 6 | 0.1615426790254476 | SELECT pgml.transform( + + | | task => '{ + + | | "task": "text-generation", + + | | "model": "microsoft/Phi-3-mini-128k-instruct" + + | | }'::JSONB, + + | | inputs => ARRAY['AI is going to'], + + | | args => '{ + + | | "max_new_tokens": 100 + + | | }'::JSONB + + | | ); + 2 | 0.16822049523056992 | SELECT pgml.transform( + + | | task => '{ + + | | "task": "text-generation", + + | | "model": "meta-llama/Meta-Llama-3-8B-Instruct" + + | | }'::JSONB, + + | | inputs => ARRAY['AI is going to'], + + | | args => '{ + + | | "max_new_tokens": 100 + + | | }'::JSONB + + | | ); + 4 | 0.16937527108941763 | SELECT pgml.transform( + + | | task => '{ + + | | "task": "text-generation", + + | | "model": "meta-llama/Meta-Llama-3-70B-Instruct" + + | | }'::JSONB, + + | | inputs => ARRAY['AI is going to'], + + | | args => '{ + + | | "max_new_tokens": 100 + + | | }'::JSONB + + | | ); +(6 rows) + +!!! + +!!! + +We are using a CTE to embed the user query, and then performing nearest neighbors search using the cosine similarity function to compare the distance between our embeddings. Note how fast this is! Our embeddings utilize an HNSW index from pgvector to perform ridiculously fast retrieval. + +### Unified Retrieval + Reranking + +We can rerank in the database in the same query we did retrieval with using the `pgml.rank` function. + +TODO INSERT RERANK CODE + +We are using the mixedbread-ai/mxbai-rerank-base-v1 model to rerank the results from our semantic search. Once again, note how fast this is. We have now combined the embedding api call, the semantic search api call, and the rerank api call from our RAG flow into one sql query. + +### Unified Retrieval + Reranking + Text Generation + +Using the pgml.transform function, we can perform text generation in the same query we did retrieval and reranking with. + +SHOW CODE + +We are using meta-llama/Meta-Llama-3-8B-Instruct to perform text generation. We have a number of different models available for text generation, but for our use case `meta-llama/Meta-Llama-3-8B-Instruct` is a fantastic mix between speed and capability. + +We can stream from the database by using the `pgml.transform_stream` function and cursors. Here is a query measuring time to first token. + +SHOW CODE + +We have reduced our RAG system that involved 4 different network calls into a single unified system that requires one sql query and yields a response in: TIME From 2c785d58de4be925470b155c7cd7fbeb5fdd0c1f Mon Sep 17 00:00:00 2001 From: Silas Marvin <19626586+SilasMarvin@users.noreply.github.com> Date: Mon, 10 Jun 2024 13:35:40 -0700 Subject: [PATCH 2/9] Update pgml-cms/docs/guides/unified-rag.md Co-authored-by: Montana Low --- pgml-cms/docs/guides/unified-rag.md | 1 + 1 file changed, 1 insertion(+) diff --git a/pgml-cms/docs/guides/unified-rag.md b/pgml-cms/docs/guides/unified-rag.md index 5d1c24007..94e57d85a 100644 --- a/pgml-cms/docs/guides/unified-rag.md +++ b/pgml-cms/docs/guides/unified-rag.md @@ -1,6 +1,7 @@ --- description: >- Unified RAG is an alternative to typically RAG systems where embedding, retrieval, reranking, and text-generation are combined under on service. +featured: true --- # Unified RAG From f55124c8d0690888e19af18cbb131076669e5f67 Mon Sep 17 00:00:00 2001 From: Silas Marvin <19626586+SilasMarvin@users.noreply.github.com> Date: Mon, 10 Jun 2024 13:35:45 -0700 Subject: [PATCH 3/9] Update pgml-cms/docs/guides/unified-rag.md Co-authored-by: Montana Low --- pgml-cms/docs/guides/unified-rag.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pgml-cms/docs/guides/unified-rag.md b/pgml-cms/docs/guides/unified-rag.md index 94e57d85a..4e80823d3 100644 --- a/pgml-cms/docs/guides/unified-rag.md +++ b/pgml-cms/docs/guides/unified-rag.md @@ -6,7 +6,7 @@ featured: true # Unified RAG -## Introduction +## Introduction Retrieval Augmented Generation (RAG) is domain specific jargon that simply means augmenting LLMs with context to improve their response. For example, if I were to ask an LLM: “How do I use pgml.transform?”. I would most likely get an unsatisfactory mostly incorrect example. From 7d1114a01d119ffaa3a63332761cea395d3e27e6 Mon Sep 17 00:00:00 2001 From: Silas Marvin <19626586+SilasMarvin@users.noreply.github.com> Date: Mon, 10 Jun 2024 13:35:53 -0700 Subject: [PATCH 4/9] Update pgml-cms/docs/guides/unified-rag.md Co-authored-by: Montana Low --- pgml-cms/docs/guides/unified-rag.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pgml-cms/docs/guides/unified-rag.md b/pgml-cms/docs/guides/unified-rag.md index 4e80823d3..63eb57bd8 100644 --- a/pgml-cms/docs/guides/unified-rag.md +++ b/pgml-cms/docs/guides/unified-rag.md @@ -238,7 +238,7 @@ Retrieval with Unified RAG is lightning fast and incredibly simple. !!! generic -!!! code\_block time="70.381 ms" +!!! code_block time="70.381 ms" ```postgresql WITH embedded_query AS ( From 5cb2bbf39bc5d1427f5fffff7daf0dad32e62cff Mon Sep 17 00:00:00 2001 From: SilasMarvin <19626586+SilasMarvin@users.noreply.github.com> Date: Mon, 10 Jun 2024 14:45:05 -0700 Subject: [PATCH 5/9] More ready --- pgml-cms/docs/guides/unified-rag.md | 448 ++++++++++++++++++++++------ 1 file changed, 357 insertions(+), 91 deletions(-) diff --git a/pgml-cms/docs/guides/unified-rag.md b/pgml-cms/docs/guides/unified-rag.md index 63eb57bd8..2a5d035c7 100644 --- a/pgml-cms/docs/guides/unified-rag.md +++ b/pgml-cms/docs/guides/unified-rag.md @@ -1,16 +1,18 @@ --- description: >- - Unified RAG is an alternative to typically RAG systems where embedding, retrieval, reranking, and text-generation are combined under on service. + Unified RAG is an alternative to typical RAG systems where embedding, retrieval, reranking, and text generation are unified under on service. featured: true --- # Unified RAG +This is not a post about the typically modern RAG workflow, this is a demonstration of Unified RAG and the simplicity and power it provides. + ## Introduction -Retrieval Augmented Generation (RAG) is domain specific jargon that simply means augmenting LLMs with context to improve their response. For example, if I were to ask an LLM: “How do I use pgml.transform?”. I would most likely get an unsatisfactory mostly incorrect example. +Retrieval Augmented Generation (RAG) is domain specific jargon that simply means augmenting LLMs with context to improve their response. For example, if I were to ask an LLM: "How do I write a select statement with pgml.transform?". I would most likely get an unsatisfactory mostly incorrect example. -However, if I were to first provide it with some context about the pgml.transform function, and then asked it “How do I use pgml.transform?”. I would likely get a much better answer. +However, if I were to first provide it with some context about the pgml.transform function, and then asked it "How do I write a select statement with pgml.transform?". I would likely get a much better answer. RAG has grown rapidly in popularity. It is not an esoteric practice run only by advanced machine learning practitioners, but is used widely by anyone who wants to improve the output of their LLMs. It is most commonly used by chatbots to better answer user questions. @@ -20,8 +22,6 @@ TODO: INSERT RAG DIAGRAM Steps one through three prepare our RAG system, and steps four through eight are RAG itself. -This is not a post about the typically modern RAG workflow, this is a demonstration of Unified RAG and the simplicity and power it provides. - ## Unified RAG RAG systems have a number of drawbacks: @@ -37,7 +37,7 @@ Just like RAG, the first step is to prepare our unified RAG system. The first st !!! generic -!!! code\_block +!!! code block ```postgresql CREATE TABLE documents (id SERIAL PRIMARY KEY, document text NOT NULL); @@ -57,7 +57,7 @@ SELECT pgml.transform( }''::JSONB ); -Here is another example of using the pgml.transform function +Here is another example of the pgml.transform function SELECT pgml.transform( task => ''{ @@ -70,7 +70,7 @@ SELECT pgml.transform( }''::JSONB ); -Here is another example of using the pgml.transform function +Here is a third example of the pgml.transform function SELECT pgml.transform( task => ''{ @@ -91,7 +91,6 @@ INSERT INTO documents (document) SELECT md5(random()::text) FROM generate_series !!! !!! - In addition to the document that contains an example of pgml.transform we have inserted 100 randomly generated documents. We include these noisy documents to verify that our Unified RAG system can retrieve the correct context. We can then split them using the pgml.chunk function. @@ -99,7 +98,7 @@ We can then split them using the pgml.chunk function. !!! generic -!!! code\_block +!!! code block ```postgresql CREATE TABLE chunks(id SERIAL PRIMARY KEY, chunk text NOT NULL, chunk_index int NOT NULL, document_id int references documents(id)); @@ -121,11 +120,13 @@ FROM ( !!! +Note: we are explicitly setting a really small chunk size we want to split this document into 6 chunks, 3 of which only have text and don't show the examples they are referring to so we can demonstrate reranking while still utilizing a resonably small demo. + We can verify they were split correctly. !!! generic -!!! code\_block +!!! code block ```postgresql SELECT * FROM chunks limit 10; @@ -135,45 +136,47 @@ SELECT * FROM chunks limit 10; !!! results -id | chunk | chunk_index | document_id -----+--------------------------------------------------------------+-------------+------------- - 1 | Here is an example of the pgml.transform function | 1 | 1 - 2 | SELECT pgml.transform( +| 2 | 1 - | task => '{ +| | - | "task": "text-generation", +| | - | "model": "meta-llama/Meta-Llama-3-8B-Instruct" +| | - | }'::JSONB, +| | - | inputs => ARRAY['AI is going to'], +| | - | args => '{ +| | - | "max_new_tokens": 100 +| | - | }'::JSONB +| | - | ); | | - 3 | Here is another example of using the pgml.transform function | 3 | 1 - 4 | SELECT pgml.transform( +| 4 | 1 - | task => '{ +| | - | "task": "text-generation", +| | - | "model": "meta-llama/Meta-Llama-3-70B-Instruct" +| | - | }'::JSONB, +| | - | inputs => ARRAY['AI is going to'], +| | - | args => '{ +| | - | "max_new_tokens": 100 +| | - | }'::JSONB +| | - | ); | | - 5 | Here is another example of using the pgml.transform function | 5 | 1 - 6 | SELECT pgml.transform( +| 6 | 1 - | task => '{ +| | - | "task": "text-generation", +| | - | "model": "microsoft/Phi-3-mini-128k-instruct" +| | - | }'::JSONB, +| | - | inputs => ARRAY['AI is going to'], +| | - | args => '{ +| | - | "max_new_tokens": 100 +| | - | }'::JSONB +| | - | ); | | - 7 | ad825d335ceea1f2383620d796b61ba0 | 1 | 2 - 8 | f3319e27b8b560b3564a9fbd1a873480 | 1 | 3 - 9 | f420939ecc8721f0200afa78d440642d | 1 | 4 - 10 | 3592866b9081fb53aa3b5d11997170d9 | 1 | 5 +pgml=# SELECT * FROM chunks limit 10; + id | chunk | chunk_index | document_id +-----+--------------------------------------------------------+-------------+------------- + 107 | Here is an example of the pgml.transform function | 1 | 102 + 108 | SELECT pgml.transform( +| 2 | 102 + | task => '{ +| | + | "task": "text-generation", +| | + | "model": "meta-llama/Meta-Llama-3-8B-Instruct" +| | + | }'::JSONB, +| | + | inputs => ARRAY['AI is going to'], +| | + | args => '{ +| | + | "max_new_tokens": 100 +| | + | }'::JSONB +| | + | ); | | + 109 | Here is another example of the pgml.transform function | 3 | 102 + 110 | SELECT pgml.transform( +| 4 | 102 + | task => '{ +| | + | "task": "text-generation", +| | + | "model": "meta-llama/Meta-Llama-3-70B-Instruct" +| | + | }'::JSONB, +| | + | inputs => ARRAY['AI is going to'], +| | + | args => '{ +| | + | "max_new_tokens": 100 +| | + | }'::JSONB +| | + | ); | | + 111 | Here is a third example of the pgml.transform function | 5 | 102 + 112 | SELECT pgml.transform( +| 6 | 102 + | task => '{ +| | + | "task": "text-generation", +| | + | "model": "microsoft/Phi-3-mini-128k-instruct" +| | + | }'::JSONB, +| | + | inputs => ARRAY['AI is going to'], +| | + | args => '{ +| | + | "max_new_tokens": 100 +| | + | }'::JSONB +| | + | ); | | + 113 | ae94d3413ae82367c3d0592a67302b25 | 1 | 103 + 114 | 34b901600979ed0138557680ff528aa5 | 1 | 104 + 115 | ce71f8c6a6d697f4c4c9172c0691d646 | 1 | 105 + 116 | f018a8fde18db014a1a71dd700118d89 | 1 | 106 +(10 rows) !!! @@ -184,7 +187,7 @@ Instead of using an embedding API, we are going to embed our chunks directly in !!! generic -!!! code\_block +!!! code block ```postgresql CREATE TABLE embeddings ( @@ -210,7 +213,7 @@ We can verify they were embedded correctly. !!! generic -!!! code\_block +!!! code block ```postgresql \x auto @@ -243,7 +246,7 @@ Retrieval with Unified RAG is lightning fast and incredibly simple. ```postgresql WITH embedded_query AS ( SELECT - pgml.embed('mixedbread-ai/mxbai-embed-large-v1', 'How do I use pgml.transform?', '{"prompt": "Represent this sentence for searching relevant passages: "}')::vector embedding + pgml.embed('mixedbread-ai/mxbai-embed-large-v1', 'How do I write a select statement with pgml.transform?', '{"prompt": "Represent this sentence for searching relevant passages: "}')::vector embedding ) SELECT chunks.id, @@ -267,41 +270,41 @@ LIMIT 6; !!! results - id | cosine_distance | chunk -----+---------------------+-------------------------------------------------------------- - 1 | 0.07063409896594541 | Here is an example of the pgml.transform function - 5 | 0.07361361603777417 | Here is another example of using the pgml.transform function - 3 | 0.07361361603777417 | Here is another example of using the pgml.transform function - 6 | 0.1615426790254476 | SELECT pgml.transform( + - | | task => '{ + - | | "task": "text-generation", + - | | "model": "microsoft/Phi-3-mini-128k-instruct" + - | | }'::JSONB, + - | | inputs => ARRAY['AI is going to'], + - | | args => '{ + - | | "max_new_tokens": 100 + - | | }'::JSONB + - | | ); - 2 | 0.16822049523056992 | SELECT pgml.transform( + - | | task => '{ + - | | "task": "text-generation", + - | | "model": "meta-llama/Meta-Llama-3-8B-Instruct" + - | | }'::JSONB, + - | | inputs => ARRAY['AI is going to'], + - | | args => '{ + - | | "max_new_tokens": 100 + - | | }'::JSONB + - | | ); - 4 | 0.16937527108941763 | SELECT pgml.transform( + - | | task => '{ + - | | "task": "text-generation", + - | | "model": "meta-llama/Meta-Llama-3-70B-Instruct" + - | | }'::JSONB, + - | | inputs => ARRAY['AI is going to'], + - | | args => '{ + - | | "max_new_tokens": 100 + - | | }'::JSONB + - | | ); +id | cosine_distance | chunk +-----+---------------------+-------------------------------------------------------- + 107 | 0.09044166306461232 | Here is an example of the pgml.transform function + 109 | 0.10787954026965096 | Here is another example of the pgml.transform function + 111 | 0.11683694289239333 | Here is a third example of the pgml.transform function + 112 | 0.17520464423854842 | SELECT pgml.transform( + + | | task => '{ + + | | "task": "text-generation", + + | | "model": "microsoft/Phi-3-mini-128k-instruct" + + | | }'::JSONB, + + | | inputs => ARRAY['AI is going to'], + + | | args => '{ + + | | "max_new_tokens": 100 + + | | }'::JSONB + + | | ); + 108 | 0.17699128851412282 | SELECT pgml.transform( + + | | task => '{ + + | | "task": "text-generation", + + | | "model": "meta-llama/Meta-Llama-3-8B-Instruct" + + | | }'::JSONB, + + | | inputs => ARRAY['AI is going to'], + + | | args => '{ + + | | "max_new_tokens": 100 + + | | }'::JSONB + + | | ); + 110 | 0.17844729798760672 | SELECT pgml.transform( + + | | task => '{ + + | | "task": "text-generation", + + | | "model": "meta-llama/Meta-Llama-3-70B-Instruct" + + | | }'::JSONB, + + | | inputs => ARRAY['AI is going to'], + + | | args => '{ + + | | "max_new_tokens": 100 + + | | }'::JSONB + + | | ); (6 rows) !!! @@ -314,7 +317,105 @@ We are using a CTE to embed the user query, and then performing nearest neighbor We can rerank in the database in the same query we did retrieval with using the `pgml.rank` function. -TODO INSERT RERANK CODE +!!! generic + +!!! code_block time="70.381 ms" + +```postgresql +WITH embedded_query AS ( + SELECT + pgml.embed('mixedbread-ai/mxbai-embed-large-v1', 'How do I write a select statement with pgml.transform?', '{"prompt": "Represent this sentence for searching relevant passages: "}')::vector embedding +), +vector_search AS ( + SELECT + chunks.id, + ( + SELECT + embedding + FROM embedded_query) <=> embeddings.embedding cosine_distance, + chunks.chunk + FROM + chunks + INNER JOIN embeddings ON embeddings.chunk_id = chunks.id + ORDER BY + embeddings.embedding <=> ( + SELECT + embedding + FROM embedded_query) + LIMIT 6 +), +row_number_vector_search AS ( + SELECT + cosine_distance, + chunk, + ROW_NUMBER() OVER () AS row_number + FROM + vector_search +) +SELECT + cosine_distance, + (rank).score AS rank_score, + chunk +FROM ( + SELECT + cosine_distance, + rank, + chunk + FROM + row_number_vector_search AS rnsv1 + INNER JOIN ( + SELECT + pgml.rank('mixedbread-ai/mxbai-rerank-base-v1', 'How do I write a select statement with pgml.transform?', array_agg("chunk"), '{"return_documents": false, "top_k": 6}'::jsonb || '{}') AS rank + FROM + row_number_vector_search + ) AS rnsv2 ON (rank).corpus_id + 1 = rnsv1.row_number +) AS sub_query; +``` + +!!! + +!!! results + + cosine_distance | rank_score | chunk +---------------------+----------------------+-------------------------------------------------------- + 0.17520464423854842 | 0.021043598651885986 | SELECT pgml.transform( + + | | task => '{ + + | | "task": "text-generation", + + | | "model": "microsoft/Phi-3-mini-128k-instruct" + + | | }'::JSONB, + + | | inputs => ARRAY['AI is going to'], + + | | args => '{ + + | | "max_new_tokens": 100 + + | | }'::JSONB + + | | ); + 0.17844729798760672 | 0.020746054127812386 | SELECT pgml.transform( + + | | task => '{ + + | | "task": "text-generation", + + | | "model": "meta-llama/Meta-Llama-3-70B-Instruct" + + | | }'::JSONB, + + | | inputs => ARRAY['AI is going to'], + + | | args => '{ + + | | "max_new_tokens": 100 + + | | }'::JSONB + + | | ); + 0.17699128851412282 | 0.020292343571782112 | SELECT pgml.transform( + + | | task => '{ + + | | "task": "text-generation", + + | | "model": "meta-llama/Meta-Llama-3-8B-Instruct" + + | | }'::JSONB, + + | | inputs => ARRAY['AI is going to'], + + | | args => '{ + + | | "max_new_tokens": 100 + + | | }'::JSONB + + | | ); + 0.09044166306461232 | 0.01262627448886633 | Here is an example of the pgml.transform function + 0.11683694289239333 | 0.012577935121953487 | Here is a third example of the pgml.transform function + 0.10787954026965096 | 0.01253141276538372 | Here is another example of the pgml.transform function + +!!! + +!!! + We are using the mixedbread-ai/mxbai-rerank-base-v1 model to rerank the results from our semantic search. Once again, note how fast this is. We have now combined the embedding api call, the semantic search api call, and the rerank api call from our RAG flow into one sql query. @@ -322,12 +423,177 @@ We are using the mixedbread-ai/mxbai-rerank-base-v1 model to rerank the results Using the pgml.transform function, we can perform text generation in the same query we did retrieval and reranking with. -SHOW CODE +!!! generic + +!!! code_block time="70.381 ms" + +```postgresql +WITH embedded_query AS ( + SELECT + pgml.embed('mixedbread-ai/mxbai-embed-large-v1', 'How do I write a select statement with pgml.transform?', '{"prompt": "Represent this sentence for searching relevant passages: "}')::vector embedding +), +vector_search AS ( + SELECT + chunks.id, + ( + SELECT + embedding + FROM embedded_query) <=> embeddings.embedding cosine_distance, + chunks.chunk + FROM + chunks + INNER JOIN embeddings ON embeddings.chunk_id = chunks.id + ORDER BY + embeddings.embedding <=> ( + SELECT + embedding + FROM embedded_query) + LIMIT 6 +), +row_number_vector_search AS ( + SELECT + cosine_distance, + chunk, + ROW_NUMBER() OVER () AS row_number + FROM + vector_search +), +context AS ( + SELECT + chunk + FROM ( + SELECT + chunk + FROM + row_number_vector_search AS rnsv1 + INNER JOIN ( + SELECT + pgml.rank('mixedbread-ai/mxbai-rerank-base-v1', 'How do I write a select statement with pgml.transform?', array_agg("chunk"), '{"return_documents": false, "top_k": 1}'::jsonb || '{}') AS rank + FROM + row_number_vector_search + ) AS rnsv2 ON (rank).corpus_id + 1 = rnsv1.row_number + ) AS sub_query +) +SELECT + pgml.transform ( + task => '{ + "task": "conversational", + "model": "meta-llama/Meta-Llama-3-8B-Instruct" + }'::jsonb, + inputs => ARRAY['{"role": "system", "content": "You are a friendly and helpful chatbot."}'::jsonb, jsonb_build_object('role', 'user', 'content', replace('Given the context answer the following question: How do I write a select statement with pgml.transform? Context:\n\n{CONTEXT}', '{CONTEXT}', chunk))], + args => '{ + "max_new_tokens": 100 + }'::jsonb) +FROM + context; +``` + +!!! + +!!! results + +["To write a SELECT statement with pgml.transform, you can use the following syntax:\n\n```sql\nSELECT pgml.transform(\n task => '{\n \"task\": \"text-generation\",\n \"model\": \"meta-llama/Meta-Llama-3-70B-Instruct\"\n }'::JSONB,\n inputs => ARRAY['AI is going to'],\n args => '{\n \"max_new_tokens\": 100\n }'::JSONB\n"] + +!!! + +!!! + +We have now combined the embedding api call, the semantic search api call, the rerank api call and the text generation api call from our RAG flow into one sql query. We are using meta-llama/Meta-Llama-3-8B-Instruct to perform text generation. We have a number of different models available for text generation, but for our use case `meta-llama/Meta-Llama-3-8B-Instruct` is a fantastic mix between speed and capability. We can stream from the database by using the `pgml.transform_stream` function and cursors. Here is a query measuring time to first token. -SHOW CODE +!!! generic + +!!! code_block time="70.381 ms" + +```postgresql +BEGIN; +DECLARE c CURSOR FOR WITH embedded_query AS ( + SELECT + pgml.embed('mixedbread-ai/mxbai-embed-large-v1', 'How do I write a select statement with pgml.transform?', '{"prompt": "Represent this sentence for searching relevant passages: "}')::vector embedding +), +vector_search AS ( + SELECT + chunks.id, + ( + SELECT + embedding + FROM embedded_query) <=> embeddings.embedding cosine_distance, + chunks.chunk + FROM + chunks + INNER JOIN embeddings ON embeddings.chunk_id = chunks.id + ORDER BY + embeddings.embedding <=> ( + SELECT + embedding + FROM embedded_query) + LIMIT 6 +), +row_number_vector_search AS ( + SELECT + cosine_distance, + chunk, + ROW_NUMBER() OVER () AS row_number + FROM + vector_search +), +context AS ( + SELECT + chunk + FROM ( + SELECT + chunk + FROM + row_number_vector_search AS rnsv1 + INNER JOIN ( + SELECT + pgml.rank('mixedbread-ai/mxbai-rerank-base-v1', 'How do I write a select statement with pgml.transform?', array_agg("chunk"), '{"return_documents": false, "top_k": 1}'::jsonb || '{}') AS rank + FROM + row_number_vector_search + ) AS rnsv2 ON (rank).corpus_id + 1 = rnsv1.row_number + ) AS sub_query +) +SELECT + pgml.transform_stream( + task => '{ + "task": "conversational", + "model": "meta-llama/Meta-Llama-3-8B-Instruct" + }'::jsonb, + inputs => ARRAY['{"role": "system", "content": "You are a friendly and helpful chatbot."}'::jsonb, jsonb_build_object('role', 'user', 'content', replace('Given the context answer the following question: How do I write a select statement with pgml.transform? Context:\n\n{CONTEXT}', '{CONTEXT}', chunk))], + args => '{ + "max_new_tokens": 100 + }'::jsonb) +FROM + context; +FETCH 2 FROM c; +END; +``` + +!!! + +!!! results + +BEGIN +Time: 73.012 ms + +DECLARE CURSOR +Time: 77.593 ms + + transform_stream +------------------ + [] + ["To"] +(2 rows) + +Time: 135.170 ms + +!!! + +!!! + +Note how fast this is now! With unified RAG we can perform the entire RAG pipeline and get the first token for our text generation back in under 300 milliseconds. We have reduced our RAG system that involved 4 different network calls into a single unified system that requires one sql query and yields a response in: TIME From 253e41043b202ed67bf46d6004190344cd9aef5e Mon Sep 17 00:00:00 2001 From: SilasMarvin <19626586+SilasMarvin@users.noreply.github.com> Date: Mon, 10 Jun 2024 14:51:59 -0700 Subject: [PATCH 6/9] Some small cleanups and clarifications --- pgml-cms/docs/guides/unified-rag.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/pgml-cms/docs/guides/unified-rag.md b/pgml-cms/docs/guides/unified-rag.md index 2a5d035c7..5950549e0 100644 --- a/pgml-cms/docs/guides/unified-rag.md +++ b/pgml-cms/docs/guides/unified-rag.md @@ -33,7 +33,7 @@ Unified RAG is a solution to the drawbacks of RAG. Instead of relying on separat ### Preperation -Just like RAG, the first step is to prepare our unified RAG system. The first step in preparing our Unified RAG system is storing our documents in our PostgresML Postgres database. +Just like RAG, the first step is to prepare our unified RAG system, and the first step in preparing our Unified RAG system is storing our documents in our PostgresML Postgres database. !!! generic @@ -91,11 +91,11 @@ INSERT INTO documents (document) SELECT md5(random()::text) FROM generate_series !!! !!! + In addition to the document that contains an example of pgml.transform we have inserted 100 randomly generated documents. We include these noisy documents to verify that our Unified RAG system can retrieve the correct context. We can then split them using the pgml.chunk function. - !!! generic !!! code block @@ -120,7 +120,7 @@ FROM ( !!! -Note: we are explicitly setting a really small chunk size we want to split this document into 6 chunks, 3 of which only have text and don't show the examples they are referring to so we can demonstrate reranking while still utilizing a resonably small demo. +Note: we are explicitly setting a really small chunk size as we want to split our example document into 6 chunks, 3 of which only have text and don't show the examples they are referring to so we can demonstrate reranking. We can verify they were split correctly. @@ -136,7 +136,6 @@ SELECT * FROM chunks limit 10; !!! results -pgml=# SELECT * FROM chunks limit 10; id | chunk | chunk_index | document_id -----+--------------------------------------------------------+-------------+------------- 107 | Here is an example of the pgml.transform function | 1 | 102 @@ -184,7 +183,6 @@ pgml=# SELECT * FROM chunks limit 10; Instead of using an embedding API, we are going to embed our chunks directly in our databse using the `pgml.embed` function. - !!! generic !!! code block @@ -313,6 +311,8 @@ id | cosine_distance | chunk We are using a CTE to embed the user query, and then performing nearest neighbors search using the cosine similarity function to compare the distance between our embeddings. Note how fast this is! Our embeddings utilize an HNSW index from pgvector to perform ridiculously fast retrieval. +There is a slight problem with the results of our retrieval. If you were to ask me: `How do I write a select statement with pgml.transform?` I couldn't use any of the top 3 results from our search to answer that queestion. Our search results aren't bad, but they can be better. This is why we rerank. + ### Unified Retrieval + Reranking We can rerank in the database in the same query we did retrieval with using the `pgml.rank` function. @@ -419,6 +419,8 @@ FROM ( We are using the mixedbread-ai/mxbai-rerank-base-v1 model to rerank the results from our semantic search. Once again, note how fast this is. We have now combined the embedding api call, the semantic search api call, and the rerank api call from our RAG flow into one sql query. +Also notice that the top 3 results all show examples using the `pgml.transform` function. This is the exact results we wanted for our search, and why we needed to rerank. + ### Unified Retrieval + Reranking + Text Generation Using the pgml.transform function, we can perform text generation in the same query we did retrieval and reranking with. @@ -498,9 +500,9 @@ FROM !!! -We have now combined the embedding api call, the semantic search api call, the rerank api call and the text generation api call from our RAG flow into one sql query. +We have now combined the embedding api call, the semantic search api call, the rerank api call and the text generation api call from our RAG flow into one sql query. -We are using meta-llama/Meta-Llama-3-8B-Instruct to perform text generation. We have a number of different models available for text generation, but for our use case `meta-llama/Meta-Llama-3-8B-Instruct` is a fantastic mix between speed and capability. +We are using meta-llama/Meta-Llama-3-8B-Instruct to perform text generation. We have a number of different models available for text generation, but for our use case `meta-llama/Meta-Llama-3-8B-Instruct` is a fantastic mix between speed and capability. For this simple example we are only passing the top search result as context to the LLM. In real world use cases, you will want to pass more results. We can stream from the database by using the `pgml.transform_stream` function and cursors. Here is a query measuring time to first token. @@ -594,6 +596,6 @@ Time: 135.170 ms !!! -Note how fast this is now! With unified RAG we can perform the entire RAG pipeline and get the first token for our text generation back in under 300 milliseconds. +Note how fast this is! With unified RAG we can perform the entire RAG pipeline and get the first token for our text generation back in under 300 milliseconds. -We have reduced our RAG system that involved 4 different network calls into a single unified system that requires one sql query and yields a response in: TIME +In summary, we have reduced our RAG system that involved four different network calls into a single unified system that requires one sql query and yields a response in: TIME From 7adc2e0159e47687a50a647a4c8b6bc706789a9f Mon Sep 17 00:00:00 2001 From: SilasMarvin <19626586+SilasMarvin@users.noreply.github.com> Date: Tue, 11 Jun 2024 14:04:55 -0700 Subject: [PATCH 7/9] Ready for review except for timings --- .../assets/rag-flow-with-reranking.png | Bin 0 -> 76732 bytes pgml-cms/docs/SUMMARY.md | 1 + pgml-cms/docs/guides/unified-rag.md | 168 +++++------------- 3 files changed, 48 insertions(+), 121 deletions(-) create mode 100644 pgml-cms/docs/.gitbook/assets/rag-flow-with-reranking.png diff --git a/pgml-cms/docs/.gitbook/assets/rag-flow-with-reranking.png b/pgml-cms/docs/.gitbook/assets/rag-flow-with-reranking.png new file mode 100644 index 0000000000000000000000000000000000000000..4d17073d86a02f6d6d2fa4a06bfa1e7e2eb611a7 GIT binary patch literal 76732 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 X9rw>3gO6WOUCZT=>p|@Pz~BED=}+`^ literal 0 HcmV?d00001 diff --git a/pgml-cms/docs/SUMMARY.md b/pgml-cms/docs/SUMMARY.md index 94d70ad47..ea6979b5e 100644 --- a/pgml-cms/docs/SUMMARY.md +++ b/pgml-cms/docs/SUMMARY.md @@ -63,6 +63,7 @@ * [Chatbots](guides/chatbots/README.md) * [Example Application](use-cases/chatbots.md) * [Supervised Learning](guides/supervised-learning.md) +* [Unified RAG](guides/unified-rag.md) * [OpenSourceAI](guides/opensourceai.md) * [Natural Language Processing](guides/natural-language-processing.md) diff --git a/pgml-cms/docs/guides/unified-rag.md b/pgml-cms/docs/guides/unified-rag.md index 5950549e0..d41e18573 100644 --- a/pgml-cms/docs/guides/unified-rag.md +++ b/pgml-cms/docs/guides/unified-rag.md @@ -6,7 +6,7 @@ featured: true # Unified RAG -This is not a post about the typically modern RAG workflow, this is a demonstration of Unified RAG and the simplicity and power it provides. +This is not a guide on typical RAG workflows, this is a demonstration of Unified RAG and the simplicity and power it provides. ## Introduction @@ -18,9 +18,8 @@ RAG has grown rapidly in popularity. It is not an esoteric practice run only by As quick reminder, the typical modern RAG workflow looks like this: -TODO: INSERT RAG DIAGRAM - -Steps one through three prepare our RAG system, and steps four through eight are RAG itself. +

Steps one through three prepare our RAG system, and steps four through eight are RAG itself.

+ ## Unified RAG @@ -37,7 +36,7 @@ Just like RAG, the first step is to prepare our unified RAG system, and the firs !!! generic -!!! code block +!!! code_block ```postgresql CREATE TABLE documents (id SERIAL PRIMARY KEY, document text NOT NULL); @@ -98,7 +97,7 @@ We can then split them using the pgml.chunk function. !!! generic -!!! code block +!!! code_block ```postgresql CREATE TABLE chunks(id SERIAL PRIMARY KEY, chunk text NOT NULL, chunk_index int NOT NULL, document_id int references documents(id)); @@ -120,13 +119,17 @@ FROM ( !!! -Note: we are explicitly setting a really small chunk size as we want to split our example document into 6 chunks, 3 of which only have text and don't show the examples they are referring to so we can demonstrate reranking. +!!! note + +We are explicitly setting a really small chunk size as we want to split our example document into 6 chunks, 3 of which only have text and don't show the examples they are referring to so we can demonstrate reranking. + +!!! We can verify they were split correctly. !!! generic -!!! code block +!!! code\_block ```postgresql SELECT * FROM chunks limit 10; @@ -136,46 +139,18 @@ SELECT * FROM chunks limit 10; !!! results - id | chunk | chunk_index | document_id ------+--------------------------------------------------------+-------------+------------- - 107 | Here is an example of the pgml.transform function | 1 | 102 - 108 | SELECT pgml.transform( +| 2 | 102 - | task => '{ +| | - | "task": "text-generation", +| | - | "model": "meta-llama/Meta-Llama-3-8B-Instruct" +| | - | }'::JSONB, +| | - | inputs => ARRAY['AI is going to'], +| | - | args => '{ +| | - | "max_new_tokens": 100 +| | - | }'::JSONB +| | - | ); | | - 109 | Here is another example of the pgml.transform function | 3 | 102 - 110 | SELECT pgml.transform( +| 4 | 102 - | task => '{ +| | - | "task": "text-generation", +| | - | "model": "meta-llama/Meta-Llama-3-70B-Instruct" +| | - | }'::JSONB, +| | - | inputs => ARRAY['AI is going to'], +| | - | args => '{ +| | - | "max_new_tokens": 100 +| | - | }'::JSONB +| | - | ); | | - 111 | Here is a third example of the pgml.transform function | 5 | 102 - 112 | SELECT pgml.transform( +| 6 | 102 - | task => '{ +| | - | "task": "text-generation", +| | - | "model": "microsoft/Phi-3-mini-128k-instruct" +| | - | }'::JSONB, +| | - | inputs => ARRAY['AI is going to'], +| | - | args => '{ +| | - | "max_new_tokens": 100 +| | - | }'::JSONB +| | - | ); | | - 113 | ae94d3413ae82367c3d0592a67302b25 | 1 | 103 - 114 | 34b901600979ed0138557680ff528aa5 | 1 | 104 - 115 | ce71f8c6a6d697f4c4c9172c0691d646 | 1 | 105 - 116 | f018a8fde18db014a1a71dd700118d89 | 1 | 106 -(10 rows) +| id | chunk | chunk_index | document_id | +| ---- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | ------------- | +| 1 | Here is an example of the pgml.transform function | 1 | 1 | +| 2 | SELECT pgml.transform(\n task => ''{\n "task": "text-generation",\n "model": "meta-llama/Meta-Llama-3-8B-Instruct"\n }''::JSONB,\n inputs => ARRAY[''AI is going to''],\n args => ''{\n "max_new_tokens": 100\n }''::JSONB\n ); | 2 | 1 | +| 3 | Here is another example of the pgml.transform function | 3 | 1 | +| 4 | SELECT pgml.transform(\n task => ''{\n "task": "text-generation",\n "model": "meta-llama/Meta-Llama-3-70B-Instruct"\n }''::JSONB,\n inputs => ARRAY[''AI is going to''],\n args => ''{\n "max_new_tokens": 100\n }''::JSONB\n ); | 4 | 1 | +| 5 | Here is a third example of the pgml.transform function | 5 | 1 | +| 6 | SELECT pgml.transform(\n task => ''{\n "task": "text-generation",\n "model": "microsoft/Phi-3-mini-128k-instruct"\n }''::JSONB,\n inputs => ARRAY[''AI is going to''],\n args => ''{\n "max_new_tokens": 100\n }''::JSONB\n ); | 6 | 1 | +| 7 | ae94d3413ae82367c3d0592a67302b25 | 1 | 2 | +| 8 | 34b901600979ed0138557680ff528aa5 | 1 | 3 | +| 9 | ce71f8c6a6d697f4c4c9172c0691d646 | 1 | 4 | +| 10 | f018a8fde18db014a1a71dd700118d89 | 1 | 5 | !!! @@ -185,7 +160,7 @@ Instead of using an embedding API, we are going to embed our chunks directly in !!! generic -!!! code block +!!! code_block ```postgresql CREATE TABLE embeddings ( @@ -211,7 +186,7 @@ We can verify they were embedded correctly. !!! generic -!!! code block +!!! code_block ```postgresql \x auto @@ -223,9 +198,11 @@ SELECT * FROM embeddings LIMIT 1; !!! results +```text id | 1 chunk_id | 1 embedding | [0.018623363,-0.02285168,0.030968409,-0.0008862989,-0.018534033,-0.025041971,0.013351363,0.030264968,0.018940015,0.040349673,0.048829854,0.015713623,0.021163238,-0.004478061,-0.0062974053,0.01342851,-0.020463197,-0.04097013,-0.030838259,-0.0026781335,-0.013514478,-0.017542545,-0.055083144,-0.061959717,-0.012871186,0.031224959,0.02112418,-0.014853348,0.055648107,0.08431109,-0.041937426,-0.02310592,0.02245858,-0.0431297,-0.008469138,-0.011226366,0.032495555,-0.020337906,-0.016152548,-0.023888526,0.02149491,-0.0053377654,0.0476396,-0.036587544,-0.07834923,0.015603419,0.043070674,0.019468445,-0.066474535,-0.0015779501,-0.013878166,-0.013458725,0.013851631,0.0071652774,-0.023882905,-0.015201843,0.012238541,-0.03737877,-0.025391884,0.043650895,0.01558388,0.039119314,0.029194985,-0.04744193,0.0056170537,0.010778638,-0.017884707,-0.00029244038,-0.012602758,-0.007875246,-0.04526054,-6.4284686e-05,-0.005769598,-0.00038845933,-0.032822825,0.03684274,-0.0008313914,-0.046097573,-0.014152655,0.04616714,-0.022156844,0.03566803,-0.014032094,0.009407709,-0.038648155,-0.024573283,0.0156378,0.0547954,0.035394646,0.0076721613,-0.007008655,0.032833662,-0.0011310929,-0.013156701,-0.0042242086,0.069960855,-0.021828847,0.02955284,-0.025502147,-0.009076977,0.05445286,0.08737233,-0.02128801,0.042810723,-0.0058011413,-0.0107959015,0.032310173,-0.010621498,-0.021176925,-0.021960221,-0.015585316,-0.007902493,0.034406897,-0.023450606,0.0037850286,0.04483244,-0.011478958,-0.031562425,-0.019675884,-0.008219446,-0.005607503,-0.03065768,0.0323341,-0.019487593,0.009064247,-0.038718406,0.0059558107,0.023667725,-0.035244368,9.467191e-05,0.0049183182,-0.037334662,-0.021340346,0.0019130141,0.019300135,-0.0029919841,-0.045514077,0.02666689,0.0046224073,-0.021685645,-0.0037645202,0.0006780366,-0.015406854,0.09090279,0.018704489,-0.02280434,0.05506764,-0.008431497,-0.037277948,0.03009002,-0.009108825,-0.00083089864,0.0048499256,0.0048382734,0.0094076255,-0.024700468,-0.016617157,0.008510655,-0.012369503,0.014046174,-0.010123938,-0.028991196,0.009815532,0.054396246,-0.029008204,0.04051117,-0.07013572,-0.03733185,-0.060128953,-0.024095867,0.0018222647,0.0018169725,-0.0009262719,-0.005803398,0.03986231,0.06270649,0.01694802,-0.008162654,0.004494133,0.038037747,-0.018806586,-0.011087607,0.026261529,0.052072495,0.016593924,0.0072109043,0.03479167,0.009446735,0.020005314,-0.027620671,0.018090751,0.04036098,-0.0027258266,0.016745605,-0.02886597,0.04071484,-0.06869631,0.001225516,-0.06299305,-0.0709894,-0.0192085,0.013239349,-0.021542944,0.001710626,-0.018116038,-0.01748119,0.01775824,0.03925247,-0.012190861,0.035636537,0.042466108,-0.016491935,-0.037154924,0.018040363,-0.0131627545,0.010722516,-0.026140723,0.02564186,-0.004605382,0.041173078,0.00073589047,0.011592239,0.009908486,0.043702055,0.053091794,-0.012142852,-0.00018352101,0.085855715,-0.014580144,0.029045325,-0.0023999067,0.025174063,0.044601757,0.035770934,0.040519748,0.037240535,0.043620642,0.044118866,0.019248607,0.011306996,0.020493535,0.035936765,0.048831582,0.012623841,0.009265478,0.010971202,-0.0132412,0.0109977005,-0.0054538464,0.016473738,-0.04083495,0.042505562,-0.001342487,0.005840936,0.0017675279,0.017308434,0.0420143,0.051328707,-0.009452692,0.0057223514,0.026780825,0.00742446,-0.024630526,0.03107323,0.00916192,0.027411995,-0.0019175496,-0.025291001,-0.01901041,-0.07651367,-0.0465344,-0.042462647,-0.024365354,-0.021079501,-0.0432224,0.00013768316,0.00036046258,-0.03718051,0.038763855,0.0032811756,0.00697624,-0.017028604,-0.048220832,0.012214309,0.03986564,0.003932904,-0.042311475,0.005391691,0.028816152,0.069943205,-0.055599026,-0.010274334,0.028868295,0.00585409,0.009760283,0.0118976,-0.040581644,-0.053004548,-0.0526296,-0.034240413,-0.0038363612,-0.004730754,-0.018723277,-0.01601637,-0.038638163,0.06655874,0.0351013,-0.004038268,0.040204167,0.040881433,-0.04239331,-0.010466879,0.009326172,0.00036304537,-0.056721557,0.03998027,0.02481976,-0.004078023,0.0029230101,-0.019404871,-0.005828477,0.04294278,-0.017550338,-0.007534357,-0.008580863,0.056146596,0.007770364,-0.03207084,0.017874546,0.004025578,-0.047864694,-0.034685463,-0.033363935,0.02950657,0.05429194,0.0073523414,-0.014066911,0.02366431,0.03610486,0.032978192,0.016071666,-0.035677373,0.0054646228,0.0203664,0.019233122,0.058928937,0.0041354564,-0.02027497,0.00040053058,0.0019034429,-0.012043072,0.0017847657,0.03676109,0.047565766,-0.005874584,0.017794278,-0.030046426,-0.021112567,0.0056568286,0.01376357,0.05977862,0.011873086,-0.028216759,-0.06745307,-0.016887149,-0.04243197,-0.021764198,0.047688756,0.023734126,-0.04353192,0.021475876,0.01892414,-0.017509887,0.0032162662,-0.009358749,-0.03721738,0.047566965,-0.017878285,0.042617068,-0.027871821,-0.04227529,0.003985077,-0.019497044,0.0072685108,0.021165995,0.045710433,0.0059271595,-0.006183208,-0.032289572,-0.044465903,-0.020464543,0.0033873026,0.022058886,-0.02369358,-0.054754533,0.0071472377,0.0021873175,0.04660187,0.051053047,-0.010261539,-0.009315611,0.02052967,0.009023642,0.031200182,-0.040883888,0.016621651,-0.038626544,0.013732269,0.010218355,0.019598525,-0.006492417,-0.012904362,-0.010913204,0.024882413,0.026525095,0.008932081,-0.016051447,0.037517436,0.053253606,0.035980936,-0.0074353246,-0.017852481,-0.009176863,0.026370667,0.03406368,-0.036369573,-0.0033056326,-0.039790567,-0.0010809397,0.06398017,-0.0233756,-0.022745207,0.0041284347,-0.006868821,-0.022491742,0.029775932,0.050810635,-0.011080408,-0.007292075,-0.078457326,0.0044635567,0.012759795,-0.015698882,-0.02220119,0.00942075,-0.014544812,0.026497401,0.01487379,-0.005634491,-0.025069563,0.018097453,-0.029922431,0.06136796,-0.060082547,0.01085696,-0.039873533,-0.023137532,-0.01009546,0.005100517,-0.029780779,-0.018876795,0.0013024161,-0.0027637074,-0.05871409,-0.04807621,0.033885162,-0.0048714406,-0.023327459,0.024403112,-0.03556512,-0.022570046,0.025841955,0.016745063,0.01596773,-0.018458387,-0.038628712,0.012267835,0.013733216,-0.05570125,0.023331221,-0.010143926,0.0030010103,-0.04085697,-0.04617182,0.009094808,-0.057054907,-0.045473132,0.010000442,-0.011206348,-0.03056877,0.02560045,-0.009973477,0.042476565,-0.0801304,0.03246869,-0.038539965,-0.010913026,-0.022911731,0.030005522,-0.010367593,0.026667004,-0.027558804,-0.05233932,0.009694177,0.0073628323,0.015929429,-0.026884604,0.016071552,-0.00019720798,0.00052713073,-0.028247854,-0.028402891,-0.016789969,-0.024457792,-0.0025927501,0.011493104,0.029336551,-0.035506643,-0.03293709,0.06718526,0.032991756,-0.061416663,-0.034664486,0.028762456,-0.015881855,-0.0012977219,0.017649014,0.013985521,-0.03500709,-0.06555898,0.01739066,-0.045807093,0.004867656,-0.049182948,-0.028917754,0.0113239065,0.013335351,0.055981997,-0.036910992,-0.018820828,-0.043516353,0.008788547,-0.05666949,0.009573692,-0.021700945,0.010256802,-0.017312856,0.044344205,-0.0076902485,-0.008851547,0.0010788938,0.011200733,0.034334365,0.022364784,-0.030579677,-0.03471,-0.011425675,-0.011280336,0.020478066,-0.007686596,-0.022225162,0.028765464,-0.016065672,0.037145622,-0.009211553,0.007401809,-0.04353853,-0.04326396,-0.011851935,-0.03837259,-0.024392553,-0.056246143,0.043768484,-0.0021168136,-0.0066281,-0.006896298,-0.014978161,-0.041984025,-0.07014386,0.042733505,-0.030345151,-0.028227473,-0.029198963,-0.019491067,0.036128435,0.006671823,0.03273865,0.10413083,0.046565324,0.03476281,-0.021236487,0.010281997,0.008132755,-0.006925993,0.0037259492,-0.00085186976,-0.063399576,-0.031152688,-0.026266094,-0.039713737,-0.017881637,-0.004793995,0.044549145,-0.019131236,0.041359022,-0.020011334,-0.0487966,-0.012533663,0.009177706,0.056267086,0.004863351,0.029361043,-0.017181171,0.05994776,0.024275357,-0.026009355,-0.037247155,-0.00069368834,0.049283065,0.00031620747,-0.05058156,0.038948,0.0038390015,-0.04601819,-0.018070936,0.006863339,-0.024927856,-0.0056363824,-0.05078538,-0.0061668083,0.009082598,-0.007671819,0.043758992,0.02404526,-0.02915477,0.015156649,0.03255342,-0.029333884,-0.030988852,0.0285258,0.038548548,-0.021007381,-0.004295833,-0.004408545,-0.015797473,0.03404609,0.015294826,0.043694574,0.064626984,0.023716459,0.02087564,0.028617894,0.05740349,0.040547665,-0.020582093,0.0074607623,0.007739327,-0.065488316,-0.0101815825,-0.001488302,0.05273952,0.035568725,-0.013645145,0.00071412086,0.05593781,0.021648252,-0.022956904,-0.039080553,0.019539805,-0.07495989,-0.0033871594,-0.007018141,-0.010935482,-5.7075984e-05,0.013419309,-0.003545881,-0.022760011,0.00988566,0.014339391,-0.008118722,0.056001987,-0.020148695,0.0015329354,-0.024960503,-0.029633753,-0.013379987,-0.0025359367,0.013124176,0.031880926,-0.01562599,0.030065667,0.0014069993,0.0072038868,0.014385158,-0.009696549,-0.014109655,-0.059258915,-0.0002165593,0.016604712,-0.0059224735,-0.0013092262,-0.00022250676,-0.0023060953,-0.014856572,-0.009526227,-0.030465033,-0.039493423,-0.0011756015,0.033197496,-0.028803488,0.011914758,-0.030594831,-0.008639591,-0.020312231,0.026512157,0.015287617,0.0032433916,0.0074692816,0.0066296835,0.030222693,0.025374962,0.027766889,-0.017209511,-0.032084063,-0.020027842,0.008249133,-0.005054688,0.051436525,-0.030558063,-0.02633653,-0.01538074,0.010943056,0.0036713344,0.0024809965,0.006587549,-0.007795616,-0.051794346,-0.019547012,-0.011581287,-0.007759964,0.045571648,-0.009941077,-0.055039328,0.0055089286,-0.025752712,-0.011321939,0.0015637486,-0.06359818,-0.034881815,0.01625671,-0.013557044,0.039825413,-0.0027895744,-0.014577813,-0.0008740217,0.0034209616,0.043508507,-0.023725279,0.012181109,-0.009782305,0.0018773589,-0.065146625,0.009437339,0.00733527,0.049834568,-0.020543063,-0.039150853,-0.015234995,-0.006770511,0.002985214,-0.0011479045,0.009379375,-0.011452433,-0.0277739,0.014886782,-0.0065106237,0.006157106,-0.009041895,0.0031169152,-0.0669943,0.0058886297,-0.056187652,0.011594736,0.018308813,-0.026984183,-0.021653237,0.081568025,0.02491183,0.0063725654,0.028600894,0.04295813,0.019567039,-0.015854416,-0.07523876,0.012444418,0.02459371,0.054541484,-0.0017476659,-0.023083968,0.010912003,0.01662412,0.033263847,-0.022505535,0.016509151,0.019118164,0.026604444,-0.01345531,-0.034896314,-0.030420221,-0.005380027,0.009990224,0.063245244,-0.02383651,-0.031892184,-0.019316372,-0.016938515,0.040447593,-0.0030380695,-0.035975304,0.011557656,0.0014175953,0.0033523554,0.019000882,-0.009868413,0.025040675,0.0313598,0.020148544,0.025335543,-0.0030205864,0.0033406885,0.015278818,-0.008082225,-0.013311091,0.0024015747,0.02845818,-0.024585644,-0.0633492,-0.07347503,-0.008628047,-0.044017814,-0.010691597,0.03241164,0.0060925046,-0.032058343,-0.041429296,0.06868553,0.011523587,0.05747461,0.043150447,-0.035121176,-0.0052461633,0.04020538,0.021331007,0.02410664,-0.021407101,0.08082899,0.025684848,0.06999515,0.02202676,-0.025417957,-0.0094303815,0.028135775,-0.019147158,-0.04165579,-0.029573435,-0.0066949194,0.006705128,-0.015028007,-0.037273537,-0.0018824468,0.017890878,-0.0038961077,-0.045805767,0.0017864663,0.057283465,-0.06149215,0.014828884,0.016780626,0.03504063,0.012826686,0.01825945,-0.014611099,-0.05054207,0.0059569273,-0.050427742,0.012945258,-0.000114398965,0.02219763,-0.022247856,-0.029176414,-0.020923832,-0.025116103,-0.0077409917,-0.016431509,0.02489512,0.04602958,0.03150148,0.012386089,-0.05198216,-0.0030460325,0.0268005,0.038448498,0.01924401,0.07118071,0.036725424,-0.013376856,-0.0049849628,-0.03859098,0.03737393,-0.0052245436,-0.006352251,0.019535184,-0.0017854937,-0.0153605975,-0.067677096,0.0035186394,0.072521344,-0.031051565,-0.016579162,-0.035821736,0.0012950175,-0.04756073,-0.037519347,-0.044505138,0.03384531,0.016431695,0.01076104,0.01761071,-0.030177226,0.20769434,0.044621687,0.025764097,-0.00054298044,0.029406168,0.053361185,0.013022782,-0.006139999,0.001014758,-0.051892612,0.023887891,0.0035872294,0.008639285,0.010232208,-0.021343045,0.017568272,-0.07338228,0.014043151,-0.015673313,-0.04877262,-0.04944962,0.05635428,0.0064074355,0.042409293,0.017486382,0.026187604,0.052255314,-0.039807603,-0.03299426,-0.04731727,-0.034517273,0.00047638942,0.008196412,0.020099401,-0.007953495,0.005094485,-0.032003388,-0.033158697,-0.020399494,0.015141361,0.026477406,-0.01990327,0.021339003,-0.043441944,-0.01901073,0.021291636,-0.039682653,0.039700523,0.012196781,-0.025805188,0.028795147,-0.027478887,0.022309775,-0.09748059,-0.014054129,0.0018843628,0.014869343,-0.019351315,0.0026920864,0.03932672,-0.0066732406,0.035402156,0.0051303576,0.01524948,-0.010795729,0.063722104,-0.0139351925,0.016053425,-0.042903405,-0.008158309,-0.025266778,-0.025320085,0.051727448,-0.046809513,0.020976106,0.032922912,-0.018999893,0.009321827,0.0026644706,-0.034224827,0.007180524,-0.011403546,0.00018723078,0.020122612,0.0053222817,0.038247555,-0.04966653,1.7162782e-05,0.028443096,0.056440514,0.037390858,0.050378226,-0.03398227,0.029389588,-0.01307477] +``` !!! @@ -268,42 +245,14 @@ LIMIT 6; !!! results -id | cosine_distance | chunk ------+---------------------+-------------------------------------------------------- - 107 | 0.09044166306461232 | Here is an example of the pgml.transform function - 109 | 0.10787954026965096 | Here is another example of the pgml.transform function - 111 | 0.11683694289239333 | Here is a third example of the pgml.transform function - 112 | 0.17520464423854842 | SELECT pgml.transform( + - | | task => '{ + - | | "task": "text-generation", + - | | "model": "microsoft/Phi-3-mini-128k-instruct" + - | | }'::JSONB, + - | | inputs => ARRAY['AI is going to'], + - | | args => '{ + - | | "max_new_tokens": 100 + - | | }'::JSONB + - | | ); - 108 | 0.17699128851412282 | SELECT pgml.transform( + - | | task => '{ + - | | "task": "text-generation", + - | | "model": "meta-llama/Meta-Llama-3-8B-Instruct" + - | | }'::JSONB, + - | | inputs => ARRAY['AI is going to'], + - | | args => '{ + - | | "max_new_tokens": 100 + - | | }'::JSONB + - | | ); - 110 | 0.17844729798760672 | SELECT pgml.transform( + - | | task => '{ + - | | "task": "text-generation", + - | | "model": "meta-llama/Meta-Llama-3-70B-Instruct" + - | | }'::JSONB, + - | | inputs => ARRAY['AI is going to'], + - | | args => '{ + - | | "max_new_tokens": 100 + - | | }'::JSONB + - | | ); -(6 rows) +| id | cosine_distance | chunk | +| --- | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | 0.09044166306461232 | Here is an example of the pgml.transform function | +| 3 | 0.10787954026965096 | Here is another example of the pgml.transform function | +| 5 | 0.11683694289239333 | Here is a third example of the pgml.transform function | +| 2 | 0.17699128851412282 | SELECT pgml.transform(\n task => ''{\n "task": "text-generation",\n "model": "meta-llama/Meta-Llama-3-8B-Instruct"\n }''::JSONB,\n inputs => ARRAY[''AI is going to''],\n args => ''{\n "max_new_tokens": 100\n }''::JSONB\n ); | +| 4 | 0.17844729798760672 | SELECT pgml.transform(\n task => ''{\n "task": "text-generation",\n "model": "meta-llama/Meta-Llama-3-70B-Instruct"\n }''::JSONB,\n inputs => ARRAY[''AI is going to''],\n args => ''{\n "max_new_tokens": 100\n }''::JSONB\n ); | +| 6 | 0.17520464423854842 | SELECT pgml.transform(\n task => ''{\n "task": "text-generation",\n "model": "microsoft/Phi-3-mini-128k-instruct"\n }''::JSONB,\n inputs => ARRAY[''AI is going to''],\n args => ''{\n "max_new_tokens": 100\n }''::JSONB\n ); | !!! @@ -376,41 +325,14 @@ FROM ( !!! results - cosine_distance | rank_score | chunk ----------------------+----------------------+-------------------------------------------------------- - 0.17520464423854842 | 0.021043598651885986 | SELECT pgml.transform( + - | | task => '{ + - | | "task": "text-generation", + - | | "model": "microsoft/Phi-3-mini-128k-instruct" + - | | }'::JSONB, + - | | inputs => ARRAY['AI is going to'], + - | | args => '{ + - | | "max_new_tokens": 100 + - | | }'::JSONB + - | | ); - 0.17844729798760672 | 0.020746054127812386 | SELECT pgml.transform( + - | | task => '{ + - | | "task": "text-generation", + - | | "model": "meta-llama/Meta-Llama-3-70B-Instruct" + - | | }'::JSONB, + - | | inputs => ARRAY['AI is going to'], + - | | args => '{ + - | | "max_new_tokens": 100 + - | | }'::JSONB + - | | ); - 0.17699128851412282 | 0.020292343571782112 | SELECT pgml.transform( + - | | task => '{ + - | | "task": "text-generation", + - | | "model": "meta-llama/Meta-Llama-3-8B-Instruct" + - | | }'::JSONB, + - | | inputs => ARRAY['AI is going to'], + - | | args => '{ + - | | "max_new_tokens": 100 + - | | }'::JSONB + - | | ); - 0.09044166306461232 | 0.01262627448886633 | Here is an example of the pgml.transform function - 0.11683694289239333 | 0.012577935121953487 | Here is a third example of the pgml.transform function - 0.10787954026965096 | 0.01253141276538372 | Here is another example of the pgml.transform function +| cosine_distance | rank_score | chunk | +| ---------------------+--------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 0.2124727254737595 | 0.3427378833293915 | SELECT pgml.transform(\n task => ''{\n "task": "text-generation",\n "model": "microsoft/Phi-3-mini-128k-instruct"\n }''::JSONB,\n inputs => ARRAY[''AI is going to''],\n args => ''{\n "max_new_tokens": 100\n }''::JSONB\n ); | +| 0.2109014406365579 | 0.342184841632843 | SELECT pgml.transform(\n task => ''{\n "task": "text-generation",\n "model": "meta-llama/Meta-Llama-3-70B-Instruct"\n }''::JSONB,\n inputs => ARRAY[''AI is going to''],\n args => ''{\n "max_new_tokens": 100\n }''::JSONB\n ); | +| 0.21259646694819168 | 0.3332781493663788 | SELECT pgml.transform(\n task => ''{\n "task": "text-generation",\n "model": "meta-llama/Meta-Llama-3-8B-Instruct"\n }''::JSONB,\n inputs => ARRAY[''AI is going to''],\n args => ''{\n "max_new_tokens": 100\n }''::JSONB\n ); | +| 0.19483324929456136 | 0.03163915500044823 | Here is an example of the pgml.transform function | +| 0.1685870257610742 | 0.031176624819636345 | Here is a third example of the pgml.transform function | +| 0.1834613039099552 | 0.028772158548235893 | Here is another example of the pgml.transform function | !!! @@ -494,7 +416,9 @@ FROM !!! results +```text ["To write a SELECT statement with pgml.transform, you can use the following syntax:\n\n```sql\nSELECT pgml.transform(\n task => '{\n \"task\": \"text-generation\",\n \"model\": \"meta-llama/Meta-Llama-3-70B-Instruct\"\n }'::JSONB,\n inputs => ARRAY['AI is going to'],\n args => '{\n \"max_new_tokens\": 100\n }'::JSONB\n"] +``` !!! @@ -578,6 +502,7 @@ END; !!! results +```text BEGIN Time: 73.012 ms @@ -591,6 +516,7 @@ Time: 77.593 ms (2 rows) Time: 135.170 ms +``` !!! From adea646dee3ebe960ab9f39922e6e71c0eeb705b Mon Sep 17 00:00:00 2001 From: SilasMarvin <19626586+SilasMarvin@users.noreply.github.com> Date: Wed, 12 Jun 2024 09:30:02 -0700 Subject: [PATCH 8/9] Add some formatting --- pgml-cms/docs/guides/unified-rag.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pgml-cms/docs/guides/unified-rag.md b/pgml-cms/docs/guides/unified-rag.md index d41e18573..ce6177f48 100644 --- a/pgml-cms/docs/guides/unified-rag.md +++ b/pgml-cms/docs/guides/unified-rag.md @@ -339,7 +339,7 @@ FROM ( !!! -We are using the mixedbread-ai/mxbai-rerank-base-v1 model to rerank the results from our semantic search. Once again, note how fast this is. We have now combined the embedding api call, the semantic search api call, and the rerank api call from our RAG flow into one sql query. +We are using the `mixedbread-ai/mxbai-rerank-base-v1` model to rerank the results from our semantic search. Once again, note how fast this is. We have now combined the embedding api call, the semantic search api call, and the rerank api call from our RAG flow into one sql query. Also notice that the top 3 results all show examples using the `pgml.transform` function. This is the exact results we wanted for our search, and why we needed to rerank. @@ -426,7 +426,7 @@ FROM We have now combined the embedding api call, the semantic search api call, the rerank api call and the text generation api call from our RAG flow into one sql query. -We are using meta-llama/Meta-Llama-3-8B-Instruct to perform text generation. We have a number of different models available for text generation, but for our use case `meta-llama/Meta-Llama-3-8B-Instruct` is a fantastic mix between speed and capability. For this simple example we are only passing the top search result as context to the LLM. In real world use cases, you will want to pass more results. +We are using `meta-llama/Meta-Llama-3-8B-Instruct` to perform text generation. We have a number of different models available for text generation, but for our use case `meta-llama/Meta-Llama-3-8B-Instruct` is a fantastic mix between speed and capability. For this simple example we are only passing the top search result as context to the LLM. In real world use cases, you will want to pass more results. We can stream from the database by using the `pgml.transform_stream` function and cursors. Here is a query measuring time to first token. @@ -524,4 +524,4 @@ Time: 135.170 ms Note how fast this is! With unified RAG we can perform the entire RAG pipeline and get the first token for our text generation back in under 300 milliseconds. -In summary, we have reduced our RAG system that involved four different network calls into a single unified system that requires one sql query and yields a response in: TIME +In summary, we have reduced our RAG system that involved four different network calls into a single unified system that requires one sql query and yields a response in less than 300 milliseconds. From d3e60231ac18481b203eecb1ed7bcfa04e2837bc Mon Sep 17 00:00:00 2001 From: SilasMarvin <19626586+SilasMarvin@users.noreply.github.com> Date: Wed, 12 Jun 2024 15:32:30 -0700 Subject: [PATCH 9/9] Unified RAG ready to go --- .../assets/unified-rag-header-image.png | Bin 0 -> 248043 bytes pgml-cms/blog/SUMMARY.md | 1 + pgml-cms/blog/unified-rag.md | 535 ++++++++++++++++++ pgml-cms/docs/guides/unified-rag.md | 29 +- 4 files changed, 551 insertions(+), 14 deletions(-) create mode 100644 pgml-cms/blog/.gitbook/assets/unified-rag-header-image.png create mode 100644 pgml-cms/blog/unified-rag.md diff --git a/pgml-cms/blog/.gitbook/assets/unified-rag-header-image.png b/pgml-cms/blog/.gitbook/assets/unified-rag-header-image.png new file mode 100644 index 0000000000000000000000000000000000000000..1877a369e17cb5d080430ef0377c94dc670de5c0 GIT binary patch literal 248043 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 74pGuJP?)J5p7gw-=8kz{2mn(+ zK+)mKddKrz7ux=dyIY^o6L*Pp+y z&0Johx7Q6ZI)NG0?~-TV&NYYhj*ix64FH_wg<=82 zIMzyg|86n(0E+v};pqK;eSm-b>AEWW?*NR^#Dq}@)NJ^Ir1MU1CIq9gR0co_Z>drp zIyJ1Zn5DuhYeVkc4Pq4N0EkAa!4dl-!k3rP^@N#>^_gy+6qeKJLKJtkwh%hVttXn& z=Y|}kIfSB|o+t9iCety482#~-7VA52*Tt%G2!mGzC5p?UBOS^u%CUEH)Vm{hJ(uWh zCQ|K2q9z9YO|s9PUV8dvI8NeXT9>Gox(^vE-Is*ZD}7ecvSdY*;r(q(sVKnnFjF%vsKAgjx9> zDZuy7Qd z0x2hSf3{Vv>)$9)|L}$WelUqRGfw)Urj^jk@qFB#%(6ce2JXN$OeAWnUxiD2{qg>n z5z?RD8E94ed9_#EDn{aCdt+{WMzQ(E#RHV~;MTd+N4E9X5z_mMh}SuxkK1x^ICG#t zSgEw+g_F3k38Ccu@i9(>@A#wc1*p^2NIrM0LF2gX5$_kb$a9}7(Pn7{>U55SMcbiq z7$Xf>Ie{5AXycQEg_>Va=S>j#@U29v1V!|*47QKTduIupA1HW;&7Q1@s_`L=S*PpT z2ZtRYI!7`1LHI@+D=CcF33^U_^1~=YX$cJxcXne`3-YabU9Z6m+l8Wt(QC7A5D$YE z<|Q51H6Qlj(yHa{*Rt<9nynYzMt3No+rmi?7ZGL3*#%EVT|Q}S+Fjxl(iQbTWBXAL z<2)V@8k)?6AtNE0LSSj_*M2_{4eIS8$-|3gT8(p)9#tw1o4FUYxUpDlTpuRA3N1ht z2Ko)AdE774-ur!tO(I@k#${aw+YZXeh2Cdk{YQ~w2@B>;8pz4bC zQanrT*iPt`|2co*nD9JvlWUy|LPHbK)43*Cx$E^_ZRBx(p6{<}T&>Ynsiv34<=@-C zfBfm^Mk9L-Xy%^o4U)A7SSGT>H+e(rit) zA}qkvIKA|Ku7>fs29}zEy4`<&ZGqwH1DYTW@DoICQLIL)uFBFd_eQrcwt*uJNDh$< zLir}tQFZcI%hMgz+Q2WW$5tmsAAC-?@v}Il=vb|jr!wtgP4N9wV>`MR1Z+V^9Eqb3ff+%XbC>e=i zsOZhQP8SJfRzoLkOlET~uSo~9$Ccn#8^S?q(d>RA-;JbgXbm>-EvYI_R0xG;AIF~BO;)&+|)8eQ!`An z`}0dx6JSbx=3>N?$01-I&)4V!bL{7b9t~%TY9DMZS>IVKpC{_>|7ic_E(~Op9#x-% zwFy{>rpjdA?ys=HG=vTA{|J?Rt779fHk&#(&1{`D4A>k{*#5Awk9ytX_W4!9=Ctc) zl+3^W_~X~Fzy0>>#tn~P%My9lnRl#6);M&cE(gHWkN|b#<|aaz(58_T6OdTNTvj6- z_7f0_#ljBqgF1%Xd)u_$Bxhn8RWJIn!Au3Ru4C6~3-xb0P(^H|lL~-`XrFI0ouDAz zMxpx4qQdDYJ0%W7L+C3WON{24$v2P0tA*XCBNV-46gs%qOzc03a(P4B;U;a$W=V^X zWtMXf!4Ta~!N!wFwxO%zvgy-O`n^^2RP@-GD31dXgG_Y77(Ei1z`%$18{s3Znn*F! z6iE3+U&hgJlSY9yl^;|jPCquH#8FAB{ekR#qF-B$E~GvXp)TZiWV8bre8Bd00y|!T zUT6ndd+1b4ETOZ;HMS)#fxUr{D3(a$&RDjFX3o|?Ou)f13_V0p>E^$*U0rY7HWm#f zlA=gS{E#SVG`5t-81_ryK^9Jf0(mHQ`>_50KWERO#%OoZW*>GN7_s5lGm6A}?>YD5 z+|tcdmM#AJO94xa5ob}3<%my3ob2;S58j7^&U)P$B+3`JB9VUvhms*W!TV2tDC){G z^oh30**y!*chFPbhg%%MemO(>Mk%r;|TQdz0d%-mYT zQN?-y>*O|OU|~31&g}=5bf>7?WJT9-uNmxx;Ae3I$l&1+bi6FzwBraYk{@ zrrd?(z27{T@WUky<03(2_IUs)*;Wf<2x6~><%5Wb4|Qv|9wsmv?r#I+IQD*)3rB(4 z*udvT75Z(?An3iu8EtFaw=u73+x8t~%Bus`);4Y0OzAW?pgv^%B;C!h*Tc4$1PnRh z+cvw#b)%yFfe`DJgc)}jF`>%~A)KuYNEq&H>ng|n*I-yfRJk-#FjpaO7QU&>0|cyx7^m;l}Rx^aB|0r+GX88m~DN1{ekwt zFj0>GD~;i`R3Sd!i*kq|?|puymhf0wU5j13oH^K+yYK$aJOss#&jHfg?N)>dm~JXl zq+h>&{q79umpd7Myko6#MY@#jHp23T97jh-wrdNq;)tN3m^iXH`u@_NRV9t z5@5l}MF2L|zMp^i~q&7GOoHW$%ZvPlwyCz3IZ> zVIJd$!wIdZd%0~_0MLz!m?9OW)gB7Z{4}tfpXYX_7~ufsg$yy50)K!EM-uqm20tU z&JxPD42Kno{L;H~YF#t^+Woy415JWc)TOnrumSe>fisj8)2EYQKNWe6mwUK4D+_1t z3E%m6HlIHJE>Zgb9w9AcybLIv4N_;H$ETtyd-mHtol{CDM|mGFeR})e%f4MpGgH|U zQ^QfPKq1TARKsaQ%3iTzM`b7O*(G;{jP-1lO>B-;ol9UG z(gwHT-VZ99L`{x1+d$1}1-e?zeaO)`0}LVhAzFn0hfw*AV>cPlBI`b1wk+mJ%+J>$ z=RQj@Ueb);$a@HRjnQ9Sh_eQ9ot5q=r*y~#o*N9huI)0_m1}~sJ^*dhl@Vcyc-1;o zN2;?(9Oe07+AQM{)+qz)sbN^-<&rt}+##^J)+Zkqn`RH7H8{BR>tdU0BSF2h=N5@e ze2}3FYRj|oHsNP3BOsyL5b&Py#+e$l%Zd<_?JU$0q&UEznwYejd)IR^8ovojAV9ja z(8FXiVSXQz6gdPq9rjl`+;28>bX5XJX00K0+_lAWDydv6Cawc4E9j=CC7e2EL?tsy zZ7o1R>M|SFO7_7P$Xwc6tHK(q>7O|GKae4?$Ms%<;GEp!IWKzFr|*@yGs$#*RXE1u z?e+0gq+x`(os&a_)jN7D_Vh%=X-x7FJWY${>JSbCVeRrb$_yz==ZoOc4cFA z*)M6T;yS2>D-j4LP}@owd{SJz*HQwRnF(>B<7utpsx~LPlyG|!LbRd`3OfNos)ri* zN!1fGrp614=bT|5KElIo83*&yZ=um(w{n?$qD2g1t+F**#o0apQs}0>MzQy>&}FxE zql2%E*R36V3aLIw%bO^gCbza31?cU)Dz0Ezfv+~e+bw+RV1-UAp8 zy&spu#Kj$1fgb2>9~ZD!7U;5*W^UN2+B4OP&lV4&;RyC5sl{v9 zgjTb>z+^{RyXdIy%XJ~LJ$1(BRaQT%hsI{ifkQFH@uPcL^WU&#K;UHG6hZk(z(?2IZkh+9d)-u`RT z`CI<>?OS4Tu3|M}qRuCwRg%U{&NMiFKwm&kZepTT*Rdb*kUK3{-NX5Up9EC~E^2XBjowTx{RVh!wN4Ln ze|dN?GsV3}_{<0%tOFMg*|`f>6;^BgHK{h_3^Ws6erVO$=|ygl*;9D=6=XFHUX5*^ zH^hogqk|=Ldt!VO_%ee(+80tytyY^Yb_c z4P1rj(sW?OgTLZz&lbM;qBkkl7?cLlc3m)(z0l3#wxFVzbDGCI$LZ)jj9}_@rC?0< zQ276H;S0+EyGH;nJ zgMNBFdpKwer;guiQ7=2sXk{We1S<$t$>AK!lKWjedfKb;*?r?NqTcLg=Q z%SQ2EPAPKo_3z`Qeh{48h}mb8Qg(X`ASH zU^W&&s_Y``+p34Bjg%G_M%O+n_)BMeGxVXa;IVTBxM5n~`7}rCBwSg)v@wGr&Yet0 zs48)(;DF5~$i-$!@kpGF0e`>v^;))|-}a)}jfQf01@A zJ8~mOP({{@Rjemjd^MZxqZ&Pz!3a9Y>jeyWVH>dh|DWT?VvjVy>fnVh185%V8Fpo5 zL}p~ZeIB*sadY(X7zF#=VJQD;xGGPgGKP= z&4#4C^J))~rGfdi)cs=Ol+hD z1)(ipdP1ULq}Gy0?>U)>RB#Y59iDKDr=Uydz!oFx*U#001BWNklpRtmQYb(&fs9BDaq)$x<4qieWm zc(v8wXDm=nvHN?Sou(n`SL#hyDp7ev%>>tX)btcD)s^kfjBsX-vrG28r@v>4?*VbW z{`!B#1g+)$A>Fv1JLB=oK5X=HN)dgpPl84=$$yOGPhWXYuk zG4ou zFv~+*S^gH43Ad8@U{=svB_CB!Js`LfXnAg|1g!{r+Pfr=1OL&IdKz`kBD#2d0!_B; zVlSNy^Oz*jZ(US0adv^{JW`)4j+0CV0mw?pMr!T%W{?+>0S0{>!vuyTU3*ch9pvl= z>B)MHpqo&<+1pE;v)Gu72{BDROeNu(;c?vJ8eE{V5HqP|$hE*nx%1KZMzkb-G{y-Q zRnEa{&}vSb9YjZF4tzAG1;y_*=m9b~@-r!tsldeRm~C!o)}4}oR+fCY+Ob+x0tYnJ z_4i%xOgG`b-)eP<`~)hie);+oygs4R*_gx8B2Gcx$8~i|4VU}Zr)1*{p8K<>Kx)1Z zS|&QUUw-dO`9B83uShwcuRrA9b;SGS%iB{b@?HbJUQb)umns*hU!nRZpPjp(R;|8O zU$ozU>Dym%qwA5}`x4$k%1n zL$EYsV>4NJZA&z^VV|UpEZRvqkUwca%3G5Oc?z)k5Qq_-?TqSDLfdFxh2%;hX`RD7~+u4<_s=jMQPjyC!7()d`6c#VF z^7@@+6Pci^`e{&ef6pIhyYBwcWPl6`YBlr^Opu-}i!UcLz-xb;seY1&vu*KC^6%f{ z;gn4gs`}G&^5T~d9rF(!Aa#e!&laWrR=sXJ^3Df$rqx>wkuxeT;cihQQHbjNW@*#3 zpzkr993A@3B4_susHq2{w>W4z_ZjF_0d%BfL)2k$IfeLD?=!{#JxGmP3FnTZX zU=-Dd3;>KuVa|(l4wOf2Y{|tsj>IsM%{M?!gUHO9O@?-k;#0IJ+o}xcWvEC_dv*bi zY;`#Xlp^W(S#lM;?)xCi(Gh_}pX$#U3A*P}*DemJSay@IK;OZRl9Ir;Y4rMv$yD*Mal>(fx5G}T5x zpD%~UYZ@7ct$6e3iVxv2Wwy=_u}{YWkab}V&J50|??YJIah|2yePB0oDwmPi`?RW- zfx`MSebUh|`M4askU56B?9n&?cfBbF{(uOGZLRPI9!N{#gqX|P_2!t=f&+o?6#)bve(f(MFB$D1E*HXs_i9+Cg8Z)wlz|#jajU6eoc6hur z6bDE|p1#0KU3CMpZI{W+thz4ZTkz(%j*B|af;YV=hFe)O-2okGKy~fI$Ve?4r3SF_ z2#+QkGPuKGAngVpZ8yvS%c&VwQ`pvC0B@!d&>~N`{EO1thAhy!srBBq*2@iuychr~ z#Lo5ra#t7E#m!EWYl^)kpll^Ye>|+|wtmds2Xg5an^|O8ZhRd`V*4q$y@V_ezJot_ z*$*~d5YBOodL3x;t$<4iTmUJke&e>xTRDf*j1 z7rGF}xU^{k(a&MB2{AE8ox!G*8Uuy2y3*BH`^(SZh&*Z~YUz%H;m|Nl9AiruokgUmw$Cy^|t z!NXH^E>&gY0GN8tBJ}%e$}o&55;j|q7FxcodqJm$Gh<6A$Zdm}lm^gZr3(+QL7T4R zn@C@ueRu!*_iY<+eafpr>-FjO^pFE0Pl0b@eY?8rb={{ovh3@oars_>+Ez*T#X4A4 ze^TAZ_$KSxEDRedM3^Xjp$P_1{)SqXtV^#N=ed*(U0d3elp>mX7^2XwB~b3?T3byN zR>#Fk$|-2P>R$td!#TZTB)*+ZLjh#^#uwx6A%XC?q+73mJ=?^!03ZkwQ zba5Y3DT)73yhDex@_y93^W8wl&|XdrY^wdD9UQP~epX95orrYvwjeS-bVpIjPSM@0 zNzP2QS0Fx|w zkQFxGE797LZZT1w1@Nyqjo)$A5eN`$_-tm=!Ruk1y{5 zK}qQOgSC8q!yCq3G{am>Q)PeF$}gLwo0X-3;5UZvHD)FyK^Q~u#}LmmQ%l&WrrZI~ zS0%$#5Y*$3;IUvDY7 zV(HR6sFMr?ofp3h9WUY(6i;zUL{sO6drSDJ6+X&9DZ^K-2tMdDv;bz|PyTJD_)2Dp z#~~4mN%9zqW9--gwwzxg5#dJ7i-|S2MM#36imv?Ohw81Y}igA@t>7q0j1U_bgHvHS)T8Mo@)+;6*Jzs%mgg5 zAJ-MAe*XiI6Ru{W2e(AN8ZzTUp+b%?(HKaUS6|?8N{n3 zIy|lrg$rUlPO*6HDFsk;YsibaufT{i*E#0X#9aCLcI})mrM(Bcg zuxS}1s(fyznXoYPY>|#=qO>xK6eky#=q5M}6@w0{J-*IFuz&r6iJZJN!7rBip&2^Q z%IQLvJU=YFWQCo8&vE^XPJU@KT(UePmlL=hIPDe^9+uwBQK8QoZa zDMhep8c}6+bG^9WtAk{dGG%nG^#Ywe!a2uKRe{l6V5SotS-E%dk&a?-Y{9j5M$N)Y)jn8}WahR8CfpO#o(5O6w^*j}tKQe#mi#PTmzfCYv(^R#y% zvgo(amn`0xa|OutUw`~@%RKri7nata&p#lI^z)kgaXBmG)j2wCPY<`P5StOr?e@4I z*?kUnZ{MwZL*jE|ZdXaZ7oqM-Hd~$ay6$=&d*_e7%~$B5?Vu=M{pf~&1jO}W3%uL* zffO81TZb^y?G5J9*S~GWz5L9Jsn72j;?oS`8*Y#Jli#T+vt34+T^P|Z;;)fVlEvW{ zB1>8on0zzBV9^B5i<2rab1yt2VkqcZcJ8bLQ9-(v==y4_QFUDBsUV9uk_Pov0>oa| zr+$)kAmo*T4N$Pad9122F7;`4!z9w>?Z>OHvG|bCQ?`0ARw*5ZftYhC5+RsAshUzu zqoHyEUltjP%q4mo-kL6XD6395S!_SxP0*g#ma(RyA}&g#C>Mf zon#_X8)hha_h&-*hK^$y5@j|C)iz}zqcKdTT^8RLv4Zu>X_n0-mTsIoM}b46e_)+u zfzn6UD_Ik@4rMI6mTOkjsS%wYAdE;qyl(a4DY6Y$ESLsb4+KFO&}J|?RHll=DHOOG zr8Tq}bm6$)jAc!M&XA}m%K&T<+M+ZKnMO)Ea0!IwkjcyNd4;-S7rA#~(V6H0m?$+o zAxltLd@QEDJmd6l^`*@s;+kR4ZC@LDhbHUw9thj2H7@JN92M_(I^Dx}uXl7h?t|nz zecmcpTguofy|+!SAfvH$`{;H3Ai~H)j}M!6)OB~Txb1KW%rkCLVp(O=C^G^rsz`j|krG5Nixv~Ywbo72)+f}s^;y9_tCohYbw>Dzz69+GIU}thiNG|HYw4hRD^WKmXr{0a;}A!Ty+K`u@Brb=>*IJ}S7r=a)?k5aD#&VbXfrz}Kdh_Q`jVI0T9S z4|`$keL3TnBXnCN)q%7BDgr@RzTHC zbI1ztY&1uVjpJYGt^}p<{C|vH*=`$25>y{`blp|m)fZ`U9&J!Bf&>YcECB{a*jeoH z|DUsw)os~cYX)QZ5=oI%vnn&9GBd)YP7=XJvR7&*3)^Dln_2`rjz`v28f=H4=G$76 zYH6>7l~$NQ0!Wq3!bHa`1465{NuuhPiMjO*&fMlB)hBwAe3v0j0PIj!12~%wMu_kRlVwlL`24~uijnwco1R$q3C1Ntt_3H zHN07^$Fj|QT4wBYH_gi_)4W2ki3E8%F$RzcnRHN^hcj@J1CVUVP(xelYcXnUoNYO! zR>>m5hpfJC6Qz~2e6YjN z6|>Q<{U=hxO@U1J5C4xbo?o`v2vVXc{T$nb#Mbmz=IXY(-R2pwIndn}(N{W+#s6M@ zlCyug-kPJ{NO$?h&Ao0L;HD$4QYJ4{zHpe59A18s(|`OX)Bj;RD8An`5okM-_H0Qo zU>$#6{`*q8Jnmk|0rL8{H}rJ%@^5Nhs(%0BGJK|^Iy#{)QYO?c$+{9?Y9YV{Dl!=o zGX*7Vg@!l-c7;G@wsb_!N>`>Se!NM#Xk5bjby&on5HHfYmbs}0`k=++X6!JMbn>Qi zY96B-b35lgrzTrq8ekr?vYtfsE=P;C&TVg=SMU;v2yAMV2zcPsU73CP2Y}K8rHF@{+uL6- z#`ASi#3#~PPWlUm+H%2%4dmbMb-7I_f6Er%Moe#i3DVSrQFg=4bs1DG8D$?=Ed`Hl zeQ(Tux2O1ZZ0_+xIS#wM-E~3eJBnToRoSoimh>M=)6e8(_vMGSk>`DW?rs|-dVD*9 z`t)C8zW!XKdpZ@*-n!a`Nf{DxYw4?|NT^qhrThToTgi@9Ep;K`UwkO7a7sF$+N6bz z4OJpiH%KQMRfk#NW>u-qT0e%yYhW1*uB%whNYSrGzF7F^$V4uhPK_5oB;9B4zgFiE zPp_}1iF>+FPa5oZVkfO5S6^KSB0rSSEBo- zMsU0L!`{A&S{|tiT{6yoSXE%w)@FOX>)vd?@BYMw^l?`Px!E?u_12EN$!}hN*umZR z(!%HKeXQzTffHMp7OBt;`QnGxd%p8MtV|y47OeKtnA2DAb&g4%yx=X;s$64 zYnN*Phb4$v9i0s`mK>*N9>E}dLOA-)OwpPUg9d$`aYqOp)mUWR>CPd7t5^l2m~ESsKp9#~9Uqn&mhcr>JvB9{ zbW}|xnCdD~k)=2rEUCLPMm-xOmQo(b5YvX@)lU831ObMDj@SQqpxkg%R@eP|op&$W z!Y>E1*L(fCV4Ix?>;>(T8E%VE&7K`-rT&G--1Fl;L3($0zpd;0tva|5k^a>T=_Bo4 zJb0rvrEC2ggxXZ4C=0zMh^Nvh@p zBR__P%?V3);QnMM?OaYd1I@R5xuo3DfsYt0r>a#-%?WYpdp3hZR`N zG7st-Y5=}EC(sHP0p{4~tZWr^bwqG5=T<XkpnESQ<)O2$dk7=y9Y>10xQjS z6l?xN=SxJXu`3?lUA>>_-W{ahZwee6ku4BvPXz^0l{2aP?NK`$zW(yi?U0$%{F zsC;b~lCM5X*0LmA-DPiD8f*rL4x~k}hGFH+;b@IFa}}LKlvS5YYU_0zvq|bWUTVjE z?!&2W*UJjt2|y&LKo%vlak&N$q5fJtJ@*ID@#xoKN!i;J)`{`JY1lX^ysfJ|&VuGC zGDykSi;HVuc}gJ!-iAsKZV;Rg|D)~Nb{p5NXeeGqiWDh{k}NyU2P7{>GB$FO7zi*2 zeJM`=|8KfB<=E*#rzp^#0GR-j8OTodWvzW#o9`!(<35aDg*MA9hjt#3liF70?1G)( zbAUEgdQ8p3-1eiC$!oK<#_bRiVzlNF9yI1Qj1%dkcVSRq@9nI;wZwKz&Y{VfB}0{m zHgx#0X_Ekr44rS+BD9=l^gAFbh1W%AQRF~92I;}^Y7W*$Q%j95q5(yDj;3EPd!l9A z7al-L9921lK-)nT7&Sgl$JHm^Zxx~UE1UQ@uA|^9U@Ca&xRzrt1*ED)-G3`Fy+2)y{O$h!R!=(LUuM>yZhJ#7_fNk#ti5MN z`juGnTCSFigHzXZEQRnBFKaynmuNNs;hlF>MXEUM-Puk9Ba?p3&`7e9kRokZBd%38 zS6-&U4uSYz=i9DzYO(=LGcvJ|24-xu2O&+Z+9e;RedKoOA7mSuR&;G5Ck#n8@m<`WE+ zeZKa#&9fnXn>wxdMm%Pfy1kW@*0RrG*Rf9fdH|;x~(c?i@7NSeKljmF6@O2@R z^~kiH;mUsg?2HFiBFOu`!asetaBQaEvhosR}DxI zrAd7%f%f#}5bp;v?5jhp+jFH;@rCs-8$+vr)0#0>6u)MW`{UXsI9?lbAFm((2S2#3 zkP_=DFS+oaLs{@!J%lC`2|nG%yYHXguGo>P_5c7N07*naRPW?w@8_4-wH<%|eUa|% zeEr9-KR-XOeBy23q<2hBIGO~bd`kkbLRdaC!JO`Bf~I1yIK-+Iuj-l#AC^{p=@dvK zCK~tWj0V?gmMVm^Y+WCdSe%(EPcxr*hLcsA5g2DL9=wYIq?GjMfyyK7DJp5h(x`o_ z9{Z6QAo|B3m)yH1!^TJ)zh96bKpHylh0X}&jSt(TRM53kLFlp0EVhZq(T!^7Vs=Z+ zZKC@Qb2FK{NeyfRfJBES{O{X6jfYsh2W%OaqIelya;!Bn%1zR-iN=DSFR!ZKZ)(AN zp0^3UKUvOv-RC;RtsEO$2|iL=BW3zuoi=tyeM?*Wxkad_(O=h!V6x)eJOuA6UPm{| z&M>dLd0-L#L>D3enY5mnq|D-tHY2y6B)u+yjw}gNQyoboei;xqNmW{E4^e*=k!+wD zD26mr@NXGUBfM1fEAjPjw2O9nKAlz`@!QoQDCS;c>1uCe=eQ%>P#!xdpeYTzm>?)<8M}eetN!Tg&SY^ zqStTde=X^r*KfRjmeBF@>#q}?qoj?Yb=d^zpyC4`>KYa=1!8;SYTijls&F(BKo^n0 zA*!PC%BnP?LNrN#D4C4wKuj8^Lnz5kMZ(Ve}fnh4y=gER2j~fuuA&gr0R!-bI zvqZQ_+pA{b%J);OG@|hm=Dc)r8xg#f8Jt=Gxwh>X`$>-h8HZ$Nn4jr>tsRu+otXO( z$wco0>*IvSZ{6$wwM4g7cXM0IPSH&U=H@L+b^=lheiHmafRp=nL&|=EB=dlytT1X; zMr}U#G41*#S_@WSWv^t*w`nF`Wp%DVe5_n{b4(+!mu;wv0C%6qoJs9qSWBWZo(EA$F6o*U-3hcsbr+st zgck!N+|=0eOXS1?NjycA+aT*f>ZbXlMBLYxL$RyV6*3WzzJZ-{A+NBtZ-b+6FJydc z)$@1}B3Kj1^Ord6bD7|~ImGeweEfwF-+!Sla6X<+ryo~`IIOj?=dV1m3J$KRf*${^ z1@Uyt3ZOjK9CI5``4hc=d3k?({aIGd5jDPE?k8KX%FtA6Ra0jN8H0=;kd%IyOamU# z$xo^-!4(?1h*=Ze4gkPSGGP{UUPU8#3+|B~IyHMOw2d_=E}wcXCg}l<^_=n;w46jA zlxeJ=#@aW1h$R~>ehf}~+VrOjE!#SbQB+B7xEm9&vxSW?4icY0n~^u@z89D~M|fRq z>(l7roPL?cyzCUx&-iF%>p+3Wc}Lfb@^Yu>*paKc#H`)xW>9d_Fw-&jO0#}pHha<) zVJr)e+%U0?oANTY+RjK9c@musj@e~0D(~F}^g}fh$TV0})?tHSz4g%!NRL^@Df?hX zeAA4!Yl+x!1eKvS^gw`9Cjdl&&m8x1$h1i(f^Hk-IGy1or3ZtTDF#Wi$M`h(;*l5N zBUYE&akk>+@&_n{W)pg_#AJ=wtDZC!8?DGA1yamoR3LpMd zlRcM!Oo{}T`ak){#TPDJgyT22`Z%q|dwl*?Z{a_jAw8Ua{J`g}3`V5-bb(6%ea8!K zx;Vt~J9Bw^zHLzePJO+rUkh-Y!9@Njqh9~y>spu7=#gkN8r?_N8EFPV-~qf<6y*R( zoUmVNx9aA= zh9q(0^Jvqql4!#SWE7G{PUXNW2eKO>vy^!OS}`4-Ccy!x`whochaCl^lg)?*FMkq;&4_0yChq9g&EcJ3Y6-K6E^o%!jZ5AN6cww+ z_=DZg$pO?eZuXAYXnXD>{GiNwH(Bs8Fj?nA9N4(E%9_0ad{P7DY|_4xG$pmrq$6NM zc;(t7l8;MaxNU;8#qk!gCeF=kJZ%LIy;$Q0;^5(-4;@^H1;woj#vjPJOab8%0M0Px zqdEXYpB^h_6Xf#NE`p1#L=TC%mCf-~DS)cAJ&h|zanmTO4M5(f-#@)sH=5M*gB?92 zgAQ33bWAv%-- z#Ul)O5(tkWqT+GeP=@=!QBNJwh0kZTsK-4A3Cr!5yC7!R+lnQ zHS@sszE(iZ#_pu6E>`P;N!3slRU%b$6w{8K=c0zdGGvV&P&{B3XQKy}p5Ki+$gYf* z`f0;}yo{ZHqGX=y1SrT2hdhn62+pk9XSs-N$ec4QE!*n?5jZ6bw_W+n?Aony|&QNU{gvf7bC_QXz?d)XG>uWS9My+6Oj^sm6&e=uRVo!i7Ya^myp z^4IO*_AlV@=mY?e;MNTPe7`+FCipS`p!vl}S%N(C-=2hz|(ychH?Mj*RRu_llO;l^lYC)_;b zg^;lajEk$@sqq6{DC;!se5N*uQk_%UV^hq=!FZzO;5GuclY$rJ6oMP$;Mh((2))`J zAO$>GzTL=Dm$FAC`AT()v)ktshqN)fV6(=xUY-I`H$mErWF7E`H8~k@uFzYq0-M7Q ze5i7_Re*G=6@qrchIhL$`66aJEi9vw0(T_486G?EJV#xu=Zex(Lux%<9c!q3*;?OwRtgim!*yXeu%WY-@Ml8Yut{4A0mAYk z6ZI+#Wn{YVBzuBKU=zXeo@hb<=)nWjU}@ByHwG64^afkdM%kXQgk>aT4ZxcS?xSv^ z0t_=kk5$(W)%m8jZ*;gTaCP4wZ2V<4tS`SW`Cp%(Z@+C9-_KyLZygF_&rfVXS&Dfo%Y>O=UP zZv|tV)_s1{>Uep6f4SFKZ_j^95id=G>hG?T9-!>EA9v4qBm$iR4_pC@AibIdWfBL6 z1%zJ65U6MZVNxTw0&;+d6Nk3Wp$EdPj6($s>|IbQX_psIM3;Mc;1u1ncPw`{#2c`&x` zEM#4|#F)nb>?fAOO$TI4mn^shgvZJ#>NEW)s`74U!dngG6B#+@<>Nd+qR~6T;tx{9##>HuROb}=xEq-5qrM$Nl=lqTf zf4SQ}W`fh**f00ePm9)<^XV}|pbMN&t0kW=Elr?DoZH>!)g!LQyZL`?4gnv|$K(3% zd_4d2hoQsw(2W{sx;9U{z9Oi%JoouSLvFW+{`Tbq@Ryex_RxRM5uet1+D~o1@V=4a z>+3k+XPgnnV<&ybrVeX#6Gk7V+WImjB(9#L1V@-Gj;r<-$NTy~;bKRKLvmWcaskpy zzPO1MYy|+N5J}3}Gb`DsOwgziK1AMwZJ0_)V%lj`!-jlOrebuYT!P8O0MMicRC?`q ztjBR#2$7mc9b=JWN;KDPssP@xT{x$0VMSB}Bt~}t@NG1;t0|6p<85{oNOGNVdHRsN z^!#0KxGM1UbI=@_I|VmpZpUNX;gVFX+-y<|nRFEwhH>XNG0erXu`FJs?S5bL#89C) z0)sC?Y)ya^n8#>JuSMmd&}yZ2y_jq=2O`40*G=8r2o0}QSPNNU0};U@Xrz6I=c=&a zU~s9na)V02k&X<&oF(J{)F%TPkpR#RJ=`;)#2jgY)qs(3o1B^`ZaGlHM6eFk81$-t z-;|iz`1kjpK+vaav(MYtUjWnTe^}}xU%jkxf9(QXFF(@46|KMh_j86=Lpc7XQ;YD8 z8N4DQH2dpu%?J4T$K&b-VEjjX0~dKU?KPJ)=V?!JI$~C78Rwzj{*SdZ`&wmc!|H9$ zW1R_n1VVNzyS1P0|NlGp^ayNcD@zq%Osp8YyU#h@J>8?&!+<-jrR1wqU`8pqAqG2I z$PJreOw$6t=#AYi>jJmiPjv<%^3V_&kRjo`ySS=8PP1v9468Ftu;yTRW^us(=cEr| z&Eu+k&wJ6YarL7!yWn>#1k~cdtZ>~m2(b%Gvsl?qdtEOF(JG5SI+smE8hF}jYiP(f zSAkJ!g^1!XM?TtC9`ICRolN5@a7eCJN1H8W8vwzip_!rGm|PiE_B<#$dP*zgYgyM@ zaiWnlBZZYrd864@n8s@ia#ck3u}+2a582TiuIq!0Zzpy=*x-jhDTfwf*wjJ zaonKdoh=m__HtcOB+>udw@U)~)0g+7N2Q$pe1&#f8sPEEFDHcmQFhP`LqiL#=~$2~ zNsF2$Us1DPO&cF*i<6}4g9-`snko1RoqWfGqH=+TE6%#19S5>Cb7i3v#n|oe)g`EhEUT72>#5G@p*J)MGjCOCAq=~6Xn*~UpW1)h{+tv4L8$kQy0>{@{Wm>Dc zH}(+Jl{(k8wD#4smMH>hlH=BM3fz9Yo00Hs< zxWdC-afQ>v9o>INcix>&=chrxEqL;v7f2(U-!@1 z+o%7OB-Pum5(_U74m9!&ZXspOcoA%{Z-8^nX{Jd9M<8y25S8e*EIW@YDhyCXLbp_2 znwanA$RG|Oyrqwz)`;qkYvFl>oaD~S`;JD}XkdW36^v^&)CNJ!j~$Hz8zEQnw)JH7wD^`of@l&55BFnhbKC~%;aZ4jhaK8^pr==LuVDsQ{N!Wu2PKiyqh8q&gh}h zm9W8Qt7#?OjnK=ITt&z88OV-UccZS2&ykyDOtOnP@u`wR^se!TZq`1jyyACsWQ8e^^k0=_=JbC6aX`A#Z3jKSsLv-T!rS2)~qvB4}$KSAviQ71I_nl zH2<3hS++!&s=CZ2L#+Gz+jpYg$BT#{gC#3Io5V9n&v8?~=cbNA*Uu5RWQkzntk1twH5C^J-*Lkd%H?1Y(40|*4ods8Hh4-)D_v#4p%xp2m33H z1k@jpD!7C64Rb&VnjC83JE>*fY5e2HdCpa$ZSPgfhUBF(?m(Qmw!VWW;bw&(ObpsU zKnO}B4oS(td+$^aTM@L8eD0enu2EC>DRF~!Us0!%$)fJu2r9MLqRB*wR$tAHuab4^ zgpU=5Euk^iDZuyO*ST9<8rj&5tx)~Wv$Zvg*k@~Qrdg}K(fh@#M!8#v4pRe@pvOls zL)-Tiw;{8>5>2Y`$=}fdzi}el2;Piysv)DVHhGP}InU-90~TvIZXU`6|8q_}lyJsh<$yZ7Zfc zzWqzZ@GnlQmI~HV^^>~#z@HQyJ86l-!VNTn6RS1#b;v|#SMX+3;1A&Ah7&;0AS}~z z21XF88CuXNpg#C*r@EF_gK)Q2O>go()iOe(&<@@j7D&5yd0-YK2I09geX}lEIHtK+ zy5-h^aSKjkD5-P0>9Y%bUO?`nmJH(4k4ry`H8~nvnZ*dr08mLybZcH?hQThLSK5qV z{>HU83r$htUXM$~54IUwYS9G_Wi7c$v@o=HiaB8bjA0Cu=ynzCQ-&yJVa1>Xj1s;f za)hmqS;TQ_g;-V%4mFvObZdQVAd|+`1=CPBxUqDAYPE5I6Dz!sHf4|>Ie5jH>uK5# z)Yx2APLFtPio|Kk+4LrwC)wF@;rYWT0O?7896(8uN<1na! z0WD}@dtK^z_5Z%!yilyZP^OLGlNFsE;`mU=5bk`w^h_MDDAUt>-m_SLNrE0f>IWa< z_~-h?x98U%gasQR+CBgWCn80_1N!_gfZK@cOrnQx(5DK3oVGIpcZU z64fb6x#Q`oF!B0E$M9ZWUQ0gg>!pUhOBIEP=Bin6^_{$619x5X?nl znzm;hS{Ev!Pm7e3SIQso4&Up_3hPwabZ{G2w`1b|&mlLtZmX5WET^3IHZJ#TR)#j} zs=bFTTD{&6RpR0v5m{23#Q$#J z**LT8=v0rJ1Vx%F8$fC%Vk1cWx)CPr{e?Qr#OQ1EUUDSyY>|Fd=_%Z=km)F6n30I`t- zNl^;vSO*_eRWn}89(9L%BIeN1^Z$P{`9N8Ab-AJ=CRztuw&jh?<-J7aOG6i1QE;hS zgRRHdLu#Qd%^B49DEwHZ&|%-OvPTw7q9lW1fSf2_4<72WQWNq5P5Vo!G~T`=)oZZ^ zZ(gn9bhnoK>G6(Kzth4yS5k}df4LNdkO5vz^yc{EVILH|UtsKD2*=_D1stvKK3(47 z@pAg8`{~;`i@ZKcns`0Dd$|1daPPJ7_0cKH?YoKDr+=&!Nt(jQhe7bP1xn=Jz1|MgNF2Qm8(TL9dlw*3*X1%N8cdHlNf#sH>(YaD|Q_7~t)6XVIA0D1grx$V!xWebN z2YmhvQ-2{x__=8QBfh0%h(f(7-`rnnwD%A1Sp02)ZOC#Tv@Q|ne)x`V+}-{2{jtRD zf84L{#z~*IwLm1nCgY(hjT$I$L$Z%yeGqnbh(Qcc&@~n2+_6Oh(#F_pmZv)Yg$Od?XGr>~?q_6w0| zsmCVQ&4LNDKz4S>6$hac;f|Tuvm@fr*qAGq zo7tqRY}Mg9xjtvtQ~Ztd#D&Z;V32>|DvWt@CaIB)mT=hAk7k%8<+0sH`W=s5mu;S9 z?&7F;KLr5|vs%eI;%I_6g&_VMy--e0KBJiGiHnf+1N3{1O-)W&3KsK#|0qiI(PtMV zk!(9eEFz;T7+7n`=B;72Wr`C6=bbRv0s%EL;3+8cQC6v|*fO+)t5@xN!bz1PipDVn ziKz&Xi2wdz9>=>&S@iK8&prdG4;|v^^%(8d`tR;<&h^n(PJs8PzwG40_~^Itz!>RY zw!V@#z=vK-vY&2NDpLIL&GNskOs4q6-3M6c`OEE_Z^2 zkONu_TrplMer0)9-9iqZF1NwNE~LN>-EPx5L$QurfVCR)(%6z|=FoJ5RuutfPtIXb zHflkY{ja@y}n|hhRtj*{N zd|AJXIoMg6-8}iwQjC>LPOT;av9J8-MlbzB{DZ(Y>)m#CiqDbRYxH(sh?r%Pw+422aE_(TYwg&yY`EJEmg=XBB zN)!@Ad47L<`0nr>wBpOkwtxB2&+eYy_ckJxJil>ooX`Ib5`9S$&q%*0Gga6qj{Jb) zH5ql)2&~^=91>=fhE-EpEjrFC!tQX4x@#CJfg-ZdFbZ@bKmpu#LDXCVNi`_$S4I1% zu>?!zO3BO!pzP_RY^-a^L6%7PJ!zo{IuIKsPPuWEKgf*2yy*z&lP_!tjbzr3F=IxE zqPZMpRJEEtItrOPXsL+YZsb@;91L{1>9$MieO@dv?PkpBY9=3zORckS+Gt|m+fB5i z*FkXY8xBFg!#pSYF)a}pQP0YzTKJfku~%u{Er#b^Sok7h52cSP&K;KDEn%sqT=lZ@ zl1+>tkmxAp6ZD@Z3wc2w6dED5$9_4H$>YXADI$cf5i?(kL!q<312lNhXKvqjPgD zl^fit;Hv{jW47}qK!aF%V!w%}CSbde(}9V& z%RW%Jc0|4@YxR3KH&fX3-b211UI}ONPGVGat`_T!Ado_ILM_)hZpUfNTg+T$D|EEM zsqNS-evGo;wUBSta}IjC-Yu#pd{$BD_hk7jrGB%ZM9eL5nF7KA0wdS3V3ebGQ>)ZUp_SF z({aTtpU!W~aoX`*90JC_FGZvCGE^O+d20o-Ta*6=OZHwzZG%+BX_(3c=MZYa<|4rl2~&Fcm?B59BQn*{v*g z(g}|40NqgT#~KNX<^hX+$=r9=MW}pR9ZlOUNx7yzR9jb6+jHogsb?u$bnS!>}ZkU|NxaCcwdsPs$JiQUpJ8tsJ2)Sb7^OEIwIw^M2#|tyR$_3X>^~1k=nC6*ef2 zo+3IM$VK)9=-px3yFJur@?x$`)^c-z?)UsZ(yq0)jpPVw-m^P9vpc&x`yxSpA_Ukl z%wwXMk|iq#UVH%p;W3uHVYZ)?^%bz!%pKH~ zjcv0Hvuj!~7g@a(_&=$d1{)`7RUd>hA+#-zLG;cbxKI^>Q#dLO*-M8&Ln4ZTzJiPs zvYUpnbK&qQy!90jQy^&d+0>O>H+W?V+|HY;Jlm#J|2}^GuZTEaiRzb~g7@(7^nA|S za}u9ZmUGdR7U%6AOO+z{9yj&~=7+=K_Hcau`sZ3m?@xyV?uzbqPjDbS94{3q`XBt9 z2tI(s?%tn0`tW=K%F{33?!h5%<>W`?OZTs}rGmdw#6PGfSBl(Ahj3#_VpA*v4?|HG zxhJcjUFwFaf&>wAG-C?UTuG33OZ9P@8cUTBhj?9D2zNwgGJ=% zm}PpTisw?YK8y;K5tMJS4ws4SHEKC5zV5YWbJ;BQ1Q=C;X;wR9eQayZngtQKL9Wj$ z@Iu)PI;F(dv0Sqe_Y3{%l5JKA`A`+iY}-QCH;Ff8Oykhu2XI~U!mBneX_#e&-?^oh z*513-vTCb=Ipaec)ChGC*{tNaIqwj!SFg zVnPLIkkv8P_XM!iag4RZvbP4hLOW2Ki%j+0hL+qm81r<{7E%r0!fCtP^nxmY5O7cBF=SfhFfOF`~$u5>OGpf4+NsxAh^b;R^tsvn+l$U;28Y zfJ|FwxpaCwqXEnR^YN-|y3dRDa5y7mw?CX7{}?D9?w?PG-GRUbc#OtRN2l2M+8HTCY& z%mKQTg`$(iG}e8xWnbXM;$*!mwSbmnmYmv~!BK&S^%Zg<&S(Z&Y$1n}4amjQ+*ku~ zD(#@WDjU_5j<#T@Au5E)gnVQasgA7~Mi=!km6nIaYUuPe7(f*!K~U2qHtT{!mNikP z)EMQ|$Cmrf(pinQU#uNNZ~K~Cs|q{B#_Irrh`!j|ghKmGD%nPlO>O5Y_$@NLx-06m z4t}hnX;#ZxnMk>evpVWJ8eNl36Egm^Y@op9x@+|cvYPRw19(*-#-=QzZIzF%*i>pZ zifO3~wVo!^H^M<+ySkgkI#~uJlr?$Q56twg5;Jrg?d7usmatW<$N?PeKotxFy@uFQ zk*ksg9~Y#VMNbCR85yJ=6!kAsjVX_qIG2|2vQ=42RQ#W`YR_x);qkf%^q6z3hBdy1#wCAfDJ~o;ciIFmb#+y;}+Usq^(*AimnKxOw$NzW?&~hjWGLm&+FR1OEXK zm7sDqSQbH_e5GY!$)BtsL`a&MTsT=7Qq-vxRNO$49=UU5t_ZOxO4?_@XRQf%T|5Ua z3SY5USXTycJ(;)ni3Js)Q%!K%Bfo$ar?GCDA--3kEf=WTG!PHD6;#CFI_PeiY$fCp zrb28Lcmt_Xuwq%#s1S_Ppd9s6JGo}8H(WGk9zL#QmtreR-Ivf48|uwiyu9&EXDIp5 z&bqZ0O%+OV8Hhbts9MR|B(DoCqEfz|b?1Pjp-9O!&U-IK=a(iy%F}_r?ZD=R9G1#D z`L)8sQI#)OYL&*yZbBorc#eSYf#$X-+VAHMsKFCBdFJBE_1;SRYpL4G_7P7H9o$BC z=4!x+```u59w4lU?2AQH#Z?{_ftN*aTW~srX~Dq21pWv*d3H8&2SEthv!g20zi#i2 zFXtktoPWAT1O@y{%0%CCjR(-j{&)dG&WDcYd_ITkeO9`=+rvu`-ye<#(83}A-F?{M z?Qo!X_&_@i|HG{E+(Y_&`i>vS_py8V2(HPv$nZF`5amyFxqrOy!nO3j|G~`sb3SHE z)u)T8<+rP&z26?G$>T2o-=$!@6VwOHduLP2@sfJi&`>$$19cWV?zITI?U+tsf`|rr=+JLnSh?lc^l5H`G8; zubrPIQY_EX(yvmDUz*BI4Ekn5CRRzJm2xPs^!mDGYoWVgnG>(`L(|r6##Pct#+Y4e z>4%M@lN9yGxKh3kYpZJn@B#teniRTCimZuSNA}Eh5I&jh)FMd=W>PI5WeQc7sI#v& zI^vmBZs-MqfJI6cnqLE+)XK>+kW&Gjen7G(u0dkRnx8TFTDruF-sgoMyJMOOz83JSYzn)Gfi&L0#^x?D6G5qkCC7 zf?yj-Lz$#-b!)1YvLA`)ps30uTaz749N@vIz6wT$UMREOBDMH}%X@MQqTvvP4WfBE z-A4ukym~oA`X9osMY(Moiy8z8fB-=}NRT3>l{4c}ojRk5#lTc(Z!5teJbPKnwh}P>G zgMH!?nZ}@~^tqXY0GzmnHD3cnMUz(U>&68wK^93=W0h*Jm!Ed?&aov}wV~PiwRK)Y zCymv*#h}`(Ix+m8wX(gCHY^Yjvk2B-&NJaIvXsN2`jow#hy92*7w&(pac`M2pr&Y9tEUZRBM| zsm9Qi4AF=~F^!Z!X<+Pp-Zhp=N*ieqe;CW%mvVnO92vERcOV2(5>X31l5kkl-&Z3~<^a6;_uU8~KefZ(}^8?gZUQ91pvS5kNFFNU~ z)x5|1*S7!RUoVqPj|gB@+vX|kn#5DbOgl7?3mKS#cX zMfmj2)w^kDYN6K)Gf;icyFtKx2Ye3ix*)=a`R%+IWrr!(7}dcS^MePvLG*CQ2i&0l=uv_XvBNQQ$DwdYR!%orYaNO$CmbH0@JIJfXT@}S z1_Vudoq6G7_DN;B?3~{5{&f=WBUSnR(HhCezkbjCvz;i7-a6>gk<)Gtc~94lI(Fp+ zP%wO_nT{>95vLLgiYiBGwaHLVq>)7gI_f1i5|=R332JmnTYL6YO%W0g66dk+2K;FXFRfm#DHY*pS38?kE|uiBP2bms%LSeh^PA-J6rn)%+vfvc3%Bqk7<*G%k9 zAKFp-8lNLos+&|Abm~LkcAbFi5CrowAxfJBYaq9Rnv@T1)%eZcEQtE=v|+8b8_iQl zY-6kwE>H!7-8KQe(Ab?O;w&_&{S0IItEK20Bz1<4Gx17045#vcxWryfVbs_ zR-kReN7@4-_hO=145%!s6Q#10irV*$wAUyl`4KRvn_iz63-Y|sw-E90B;IdJ z{C}CXeSE;UFA^yup+xyi3g_5=bG*vedB9)caCKGSaV!rV3q6#V(v8F6iU2}L$biak z`{KzDPx9$-p2#|tb?X<&bjsxvcV!-cQ1CR}`|yO1s?kfZ)@I%gLi(`Tq=ju)F|R@-;n!){YPU+an$8PVB_(@( z0g`hVRiQR%Flr9NwDU>xVGd1eU@!(BV`WW9S_c6qEJJ1eyy;~>HCj(RUNT=N<_7>d zHGYz20ZtjK>)}eePA=fp}_sU0FfV-r_{} zzuupxV$Qjx=NZyJMZ`lMcv=6GM*4F9_3{@HLneR>fkF?34{nbo_yYy`{#CxB-!nQ2 z5DHIR(ereC;*G*2#frmfWN%UUB3qQ}tj@};7JaO{*XoY6V9um{|NiU5k-M+TKz=N> zum6`L?%sU=mw!M1l_u*>syL)s3hL}CX&#$)0s=8p@B7@WtYys5B2sSUpeWS|f)(Kl zdf3u#bU+IPZ*n8`AOm+8PPIC!Zc>kNUD-NXf%A@mZ6?z;4hlPZyNO1LX(!@1r`AwD zE3+c#-nq)xb{Al(5vu!U>L&#Gx$Z$$+c^zv@O|8_v(;N;x_2JJOmV+ApeomF>OO5! zZRU01eE?vm0ea@5-pN{-_Ocn5$pH-;A%oJQQDce*|8D9p)pj4Dgd_lB7jh`jfXyO+ ziqH%&DrPkkwf$DkPg|LMY}ai)=t~_c*rH^VTth{DK6OiVO@jsFbh?Xp)2J6S)w6_4 zUZL*58>ZuMM#d+8JkOGAlJ@h6CQIJ;)DxfqXMeiu+5zhq&Pe@np6 z9^i(EfPirPjyQoRAs>N;{F86c>%OB)!NajoNI^$N)%oqRWIEGBW{W)aloiwA_RJH{ ziwEyd*&vmgqyI@Qy#Mf$opPV6PXGS9N{A;synXxT89D#V-J)sUnw8dXj7r^WPP@+3 zY#ehHJEy(BafWCkC*J4|RNgB}Y^rI`0;?Tud=m`W1(m#wE^yuojZxC5R)@|pqeYOK zPX^vq=!JXnU&5}mw~ge8YK}gp&*_=&xyU6AG3Le;gcynwShm)}!W(~E z8mrCHh9r+kN+RocudC{n3gGH$*;P*3Ce=kyJs=72dF_*llG;$URRZ4z?g0`l7HdYIuROy#rJ$q=(DxrJwaQjb0U8>89S#4pBFOH*a>Y@q?##>jhegxs-%+;KqvFk8FR&3Vz514&(!eY}DDx4`kr5{3H3nF+0UQ{rf=KfUZ-5 zIGk}5-6dbWe{re%GxB=4@bWWoI)kPR;d0II>y@joO@;sX`L*WrFaLTeJ!C;CQW^Y1 z>HhH@{Nc^_QNcc+Vv|=enkpfY0aB7yln7`G0p21RMV`zma|5Ol6?Iuw)Vw5P!9e{$ z1EU2j8D=RN7p!PCX^)nA-bj!{F1yLfvO(yTz352HGI8bG)DZ-+h4xKye6|a%&tjwM z0h+S9L>G@TrXoBx~bLmxOLfp%_s{IuI67&`j(| zyHzZ5NvJ4Ccu_mskVFn`ilaC$kh^Max)SMuYR~{jl4c&@CM4sEHwO4t8k!hg<(DFL zeUpq31vgx%9NGi84`o$GYu&L8uSpX+r$f4cIB z_iGLN`PH7S&)1Vd=bbS>%FlfM^5)Guq==`h1X0yRnYS;I{C6Zh(X(!}r8T_d7K{#K zMcx_&5JgP{jV3{YtddVDe{X~ot!WUuQ$kFwwTg-=1C3yUbqM#84jE}1oz&c`hK)2 z%tPIK1e{0-CGYg0^VclNyKd!ee!o6de7L%Od%1kdNBu7t>WRGJAs>LAPTyXGR^KQe ztY%GaaDV>dZ1U@8`szq-a9Ta$_Hcho2_oNvJYfBt(b9^Q)(<)BoO${^sQdf-OMaj_ zM=lLMtS7H81F>s!)%#bwIc}c+{ex1?s<-japRNMJ;}^;f*O2Kyaa|!Gh^Hahl5j(j zSJW5tN5%arQ_-`6oA0m)W{dFQmQ1eh+L%EUUR+bvO2y&&YbTdHQXVj7%N zl6M+;$t0uNff*;Zc3G4dTFvdy&K6JvxF~prXgnETi&oxjH-5tqp^>BZ8V_)uvQkj( zto=}d0c-91dh0sjNm;Bf1pY52TC1XUlqK(rnJ+`wH3Kg8%d*UR_9@DdFIpL47td7O ziwy~xR24Of=+xH1)+9nsh5LqP6(keo4N&Y*4{3Xw9gI${BE&R5wM}Si~e% zcaDLx*#h1}ZA*eG)gW(%1dwTo5S1h9JkCM_X0^%Ey|j7szkfY)@OA|!ubcj#u#9Z} zu;n9xAej9v8GpXv`rl56{Kaui4CE8}`t9Lz;WqQ@Od$^651)>wm4jqASPx)xhPc!; z-alLl;VTPz|M3M4o`RFdsmGv0fkJ<*dV-7lK`SH)>n}f;XU3r z#v21fV-e_tt?C&eGPGD`^`6OU&eijR9d4vkFdr{tV zK<|S0dmLAHP05|Jdnz8BTrvu6ywL>Ac38 zHm3gc;aUa(h>23fi$l=DC75eg`i{9eP30fzXeval5Pd)y8hW#6+iRrNqz&HaDoYU{ z4p~u4(u64JITULH&_k$%?tmE_P5KB?lfGkciq`iCv2faI!)6ZkAdteL|TMf1i9$}V6jx*dxc-d&3sD9oe|0I@tShVF8_=j4A z1W)lbk_3-@x%u_CPN}$Ej8g;PHWwu7+qu;e!nR@fU&dhZpVqSW<)KeS7(RIQ7piQ*hAP{tpxo%5ywB z9Ij7{fovbXaRg7rI}VoxYOR>+Q0PVhP;2pejSp+3?&uV6PmH=$=2lK!p8eyy$AIut z5n(-5q}>1X>??Bt?8{uUFi>R1md-5_ zjura4o=n7tYpIgst<;IT#`<}0qvLKDeM`IE^e*(-M%_mohbHv>vYpi&vTb9|yv$1*A|0cMix`dD3jZ2JPZFHyy zW<*@Z++9q@!qIXE`>uP~dFs<{+>U+fW|RHoh^GiQRNk)6Sr%2s$`vR3ngEx z6op$CUEoQ=aS9S7cYV8-svj-=XXr~A6~!v=ksATzr6YU z<}u6kM@7vK4XqcT>sxXaBqpY1q%=ekw}Ox{7eSBNgJNEy(sLXiwXu!$2yEoM^C`4TmHWmm$w$z6 zk#f%>&gC|BN%3Yw0&uC^!2Jk5Zl+zAKVuvDfuUESqSH*?#mu@>OljqRM4vkN(C z#6DMXu>3tU6*yTtJ59YsqRh1C%Hk>-+GFWRM+q9i8YwHiCpl9kO|7Yel$};8lH!hC4&%Qf^n~Bnt0NRf z0XI1uJ>V2Tu2&jSnDy7O^-R(CyBIQXi4wiLInNXon@~BZHS;bOmwlSAF&ZaN<0Q$+Hxt!jbl_e zLDM)8w-G*SZ$;8cBYac0uhZN`P7M<{ucUCW>V0%IuQ`rptpO{16#x!AK-3mMC`i{i zi=%Z0BiWeEg~jmx zP#`Zp8Zg!55!AM+8+VIQeP-J^S=VZ%;;Xy?yDEntkqXcw>aNrLf{r1LVXoB0h1RX14vaj{hRI&k)LGTfTD7t1Y9YH8 zZx%eX*$%))fpv;W5^4-MKY)QO1(y1#CeH3pZnUy$vM--(Io9-3Mo(E0vAEHH##m`)vDjeZQe&!jfe~|sz{4N zM#V$N>%oUzFKBQ_m5s7X<=B*@lS%gD=%+r7ZH(D65Chs%@d_5dY)uS&3M0>z9mX;p zB=jx^5#`>unzz&5cvIthP|ureFGj8B>`WHH?)Q}=qCLYQ{Z`Vtq?=l(>>0`Vs=2F8 zNNP$s_Yv$M;+x67of=wzg#(6|lIT^eXv;2b(WSx5H3`G;uLxQkgAdC1J|!IB@(Ze7 zXwobZf5J&4OQw~?`E*cGk0@`}nfIk%PLu)QO_|c${B?Kt@a^Rp7+>C>nef+_GfUsT zo!{`~iag?oj>s|S@Gl67V#4*w@(XghEbdW=_VqFObbZWGm6Bcw48=E28V-_hlp^`< z?TJBwRPoaX6~)~PDH=VU|uE(7_8@wF^VLO?L0Tz)ear(Y*3 z;{+gj!hy`R4k{Ve8ll3HqMRb-BNqw#oM;L%SjYn0;o~5a63o{o2LlIM?*340H%=Sv z!IzmG5s=!gt3=yI&tuXPz?@$qpL5z%02veIqwLK20Qlm}O&H*@#>@O_87n_Gs)m89 z!Ob-s5_AX1=)y~9MU10rdBe6nl|qTx8Y4fd%C@uw28w z$6(ATJjbQj2{$JvRg4@Iq8&#)CmLIcBgHYDY?m?^_`qoslW_2n0fA!BO|4ZBjPDu# zUyduQON+`t*^Nee1d`ftZNTbkri)yIB;b`U!v$z`DD7u2-asS3o9fU1A(Q&cDLwlC zq+JgM8y&951+K0RD`z;y1^CAm{S5@QKCa$EUb1FhFHa98P+VW$9z{=UoqE-ezoov3 zw`&{fr&V-bnuLxbb}CChoTVGj2P51))3ZLVkNEKV={Ag?-+Ts*ek@p*Jkxn;X_*UJ zu4B=|NQ%br2?;t3^2$VEZL)Oj+Ky3MP~DhW&}0p-agZ_3>fpJpapz#ksn%{69HVW? zET+YUW}&eu0K>*pM;gztb6?X4*iNMeSeh8FFj)>VOEvzNuWN0NA~}NU>F4yjd#2~L z%kCk`vJRavaVPt%LqJ@d(Kmy~#CIHk0j_)`){;lF| zJ|otLVHuPvrexkmqeP&gpvhQD`|cnuyfE6N0>G=~5a69mL(+Z$`oe8Cx};(NZzbRm za_M!agxK|mRpLZ6@k;@w(cS;3CII3fMCO-23(}XJ*wt=NSxUE!9bzWIpaOF zmTV+U!ns1xLZqcf$J-vqfvC>tnX7t)QpBK*c-x~-5T(3taG^NE33gO_H|u^`?4aA` zKYu>sUp`)7_m}f}YQIR9?oYq&yEy6*BK&g80StN!{fn9d=e2aKKPs-OEc;?D8kIv- z47IjgtGKBOKu{F8-pbu>jipV@^fW#CDv_V7Ka(r<6BuYbHg zQEc4RtB1R7o7MxQ!`=PMzX zA_oX0;ekd2bTUiXm-%16@73M|gHyQWb{S(;385)*ER7g)uz{gGNJXxMD%!^g&|V*g zgDQFOBDKL4%7-o-+rY)qc>ymLNP+>N4?Kc~y}$*iCK}PA(*`_8a72zoo^elNAO>ov zl3{=X5O8-^F%0O2MKvrgl!tN)IgVDM)B!=r@a<>7C>q>03YZBBarGF5_X9^$EN+Fc zRnLcB`E}>$ikkYbuej#Br~9+o_4#<>sqy&kkCRY&T!Z>@4fgLzH_o>&xV&7`q2|Xq z;;71_>z}K6ur{2KabK+HX)6xrtG;jJ5f_`*wN6v~TvMSAL;PhGE`9iUONI~Y^j>wr zdD%esvDzG;y#7yj-*G#B_~H8cr#C;oprreH@c?P?!`5q*(oUBIw zx7E4<%`Kb0cPQtVkPaxP0TK<*%WBS!-EZqyr0C&_XPlFsH&Dl$squsw?j@B`B%mOG zK%gLGh=WC;n}s*UNI7t+as4|S*4havO$`2~#l;RJE)+;A)BwJWjdux7Y>s0AN;bnx z7hH`<0_102CgnQ^SS{}W`Ou|HdnLHuJE%hm&+A6aqfbiEvg9*KoEVSYLEpp(nBKW= z2RL4~jW4~1ki^O7HdE&pMTVTAN)T4iIfToDOky@}9+jK5qjn(x_fhqiN8u+vl3g!D z5tAml(+K#O$ENG3?Bac_OEds-7CsqEbA}TK5Br`HU|~e-wt`I{ENyOjjyql@k%9xG z!%2sxZi2-d4|oa=Dhl}XNIBJL$y=A(;9FQF%eWwAogZ!PU-y&FH)X}eD}wxuxbOUG zD*!7f`i6phdVCL$zlWrFi>U)2?<-2WtSM3J#0r%*AO&gjbZ3G8@a@&b^JU)c)p{rQ zjFoP0x8aAX>f5Ax<*_x+o1N(68Q)G7g!em1bgB&b#4)5rV! zS60hktC+s7uf)y-Wp!N&Fl=TyQ;o)|jA9x1UEfTtM*C1o8eDvar5;84jm$ws!0mlw z&^ILj`38_|aeYp5aGdETv_?xWIiv=gL>H74!erl(B&CSG8#+VhBzE2;kwPa-;l)zYXQ1_Q!EQ~;}6X`FlS$zem~T! zFpST7llJ((srHwr@V>0SzTp;s)P~aK`hhLi%d58=U%0Ald&`DeJkHltST87^)f?}g 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
79qlG1*@*1SB))WRD-8j2XwD2*wG^NGPRm54{ z&LU4B@8A$q3{Io0kbg!#r|cF`=oCAX%~EZRPC_Ug>?7+0$G?w4S+e1FeO}UZ5(L`9 zIG)0I>T?%`12<`yo&1Wx1}+j|bIqpllBiT*L)mCEDdl}0WUq0YnASNv2M3UoLK;B8 zqgJ$j&nN)7;K-7JflUE6CaX!timD-Kd0$m_1r^0#mP#s6IkK`uy(lG~++R`E%k*f~ z(hzV_=mF+$+M<@fybq9kV~T(n&fb;AIcQ?R}=2AkyF8(tUe*_V^c#!FWWvb}=U!1>>y-U#*iRgJVV#9j_!^OlR*D2NPFg4}{}=tma81P>p$7 z8HxhxKw8_LM0P!}J2J%$EV_OI-q4-Lv#p9UvI)mBfCPdv=Ll|`-P{P_Vp`3nM{^EM zFLP+xagAgF4(Og;AV&@1KP9>!1Z+=RJTt!mc8v=S>dc@69bS3^u~-=Ql3vld1>kRR zEA1L$f@B?12{J<%Ro^e72ZnOX8UHi0;(1kDc7814Se^LVDRz>lRj(Cy^*oAhQrV#T zkmj3dfm}dgARlLH3!~%?;9j27IFTi}xRo{DI$1{J+h3&28^ZHlzHzsvC)bPX zf%T8*zR__{XZy>2$Minc^I^q95nx;|cirCQxPU8S*8R_8S`=w_D`rfW@?ym};POAl zu57oBBnhgII=ZUsY*zI_f(A@j4EcMpRiK19!LXV2UMS}+bX(lCsOOae+8AO85h3lquTY(SFz)*sZ9l!&0=RUR?SR1&>+PN$eG-OGl^DI9dG9W;Xx~w#)r`j@fSB=NrY%0Mhb1m4z?v4` zcwnBih>=cZ`@P6BQi&N1UZq(oo;z^>?5An+L*|wrf~f~@7d`IflV1`dzhNNIxd9VN z8KmG6j7LW43_ui8m77wPhxtI|r9_KJO=WG90vJb|L7`KZrA)JO<{)@TGAWpEn|QOZ z*5xe1kaEbe@`xrbM5~No;bPl1@MdQ#OByoCQ4OLMYJ#&S=e1ys0MG)7Hr>uCAJ{u1 zOaG_=uGpw%Gdq{%_barB+CX1NH`)ZK>yp8q z1Wc`Jwk{$dwLU81H5KhzWRmiRrU7Fmv=!ag@2sfzRbU9MZoHyX^UQ!B>;!PZU<@g5 z=^nvuXa%C27{Qf+ph;BNMwxpKs~3RM8py`6`e2MTX6HNF(vuult=}`tmUMJSg>*8S z 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 literal 0 HcmV?d00001 diff --git a/pgml-cms/blog/SUMMARY.md b/pgml-cms/blog/SUMMARY.md index 3abd4242e..e4224f8c2 100644 --- a/pgml-cms/blog/SUMMARY.md +++ b/pgml-cms/blog/SUMMARY.md @@ -1,6 +1,7 @@ # Table of contents * [Home](README.md) +* [Unified RAG](unified-rag.md) * [Announcing the Release of our Rust SDK](announcing-the-release-of-our-rust-sdk.md) * [Serverless LLMs are dead; Long live Serverless LLMs](serverless-llms-are-dead-long-live-serverless-llms.md) * [Speeding up vector recall 5x with HNSW](speeding-up-vector-recall-5x-with-hnsw.md) diff --git a/pgml-cms/blog/unified-rag.md b/pgml-cms/blog/unified-rag.md new file mode 100644 index 000000000..49461068d --- /dev/null +++ b/pgml-cms/blog/unified-rag.md @@ -0,0 +1,535 @@ +--- +description: >- + Embedding generation, storage and retrieval + search reranking + text generation - all in Postgres. +featured: true +image: ".gitbook/assets/unified-rag-header-image.png" +--- + +# Unified RAG + +

+ +
Author
+ +
+ +Silas Marvin + +June 12, 2024 + +## The pitfalls of typical RAG systems + +The typical modern RAG workflow looks like this: + +

Steps one through three prepare our RAG system, and steps four through eight are RAG itself.

+ +RAG systems have a number of drawbacks: +- They require multiple different paid services +- They introduce new microservices and points of failure +- They are slow and expose user data to third parties providing a negative user experience + + +## The solution: Unified RAG + +Unified RAG is a solution to the drawbacks of RAG. Instead of relying on separate microservices to handle embedding, retrieval, reranking, and text generation, unified RAG combines them under one service. In this case, we will be combining them all under PostgresML. + +### Preperation + +Just like RAG, the first step is to prepare our unified RAG system, and the first step in preparing our Unified RAG system is storing our documents in our PostgresML Postgres database. + +!!! generic + +!!! code_block + +```postgresql +CREATE TABLE documents (id SERIAL PRIMARY KEY, document text NOT NULL); + +-- Insert a document that has some examples of pgml.transform +INSERT INTO documents (document) VALUES (' +Here is an example of the pgml.transform function + +SELECT pgml.transform( + task => ''{ + "task": "text-generation", + "model": "meta-llama/Meta-Llama-3-8B-Instruct" + }''::JSONB, + inputs => ARRAY[''AI is going to''], + args => ''{ + "max_new_tokens": 100 + }''::JSONB +); + +Here is another example of the pgml.transform function + +SELECT pgml.transform( + task => ''{ + "task": "text-generation", + "model": "meta-llama/Meta-Llama-3-70B-Instruct" + }''::JSONB, + inputs => ARRAY[''AI is going to''], + args => ''{ + "max_new_tokens": 100 + }''::JSONB +); + +Here is a third example of the pgml.transform function + +SELECT pgml.transform( + task => ''{ + "task": "text-generation", + "model": "microsoft/Phi-3-mini-128k-instruct" + }''::JSONB, + inputs => ARRAY[''AI is going to''], + args => ''{ + "max_new_tokens": 100 + }''::JSONB +); +'); + +-- Also insert some random documents +INSERT INTO documents (document) SELECT md5(random()::text) FROM generate_series(1, 100); +``` + +!!! + +!!! + +In addition to the document that contains an example of `pgml.transform` we have inserted 100 randomly generated documents. We include these noisy documents to verify that our Unified RAG system can retrieve the correct context. + +We can then split them using the `pgml.chunk` function. + +!!! generic + +!!! code_block + +```postgresql +CREATE TABLE chunks(id SERIAL PRIMARY KEY, chunk text NOT NULL, chunk_index int NOT NULL, document_id int references documents(id)); + +INSERT INTO chunks (chunk, chunk_index, document_id) +SELECT + (chunk).chunk, + (chunk).chunk_index, + id +FROM ( + SELECT + pgml.chunk('recursive_character', document, '{"chunk_size": 250}') chunk, + id + FROM + documents) sub_query; +``` + +!!! + +!!! + +!!! note + +We are explicitly setting a really small chunk size as we want to split our example document into 6 chunks, 3 of which only have text and don't show the examples they are referring to so we can demonstrate reranking. + +!!! + +We can verify they were split correctly. + +!!! generic + +!!! code\_block + +```postgresql +SELECT * FROM chunks limit 10; +``` + +!!! + +!!! results + +| id | chunk | chunk_index | document_id | +| ---- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | ------------- | +| 1 | Here is an example of the pgml.transform function | 1 | 1 | +| 2 | SELECT pgml.transform(\n task => ''{\n "task": "text-generation",\n "model": "meta-llama/Meta-Llama-3-8B-Instruct"\n }''::JSONB,\n inputs => ARRAY[''AI is going to''],\n args => ''{\n "max_new_tokens": 100\n }''::JSONB\n ); | 2 | 1 | +| 3 | Here is another example of the pgml.transform function | 3 | 1 | +| 4 | SELECT pgml.transform(\n task => ''{\n "task": "text-generation",\n "model": "meta-llama/Meta-Llama-3-70B-Instruct"\n }''::JSONB,\n inputs => ARRAY[''AI is going to''],\n args => ''{\n "max_new_tokens": 100\n }''::JSONB\n ); | 4 | 1 | +| 5 | Here is a third example of the pgml.transform function | 5 | 1 | +| 6 | SELECT pgml.transform(\n task => ''{\n "task": "text-generation",\n "model": "microsoft/Phi-3-mini-128k-instruct"\n }''::JSONB,\n inputs => ARRAY[''AI is going to''],\n args => ''{\n "max_new_tokens": 100\n }''::JSONB\n ); | 6 | 1 | +| 7 | ae94d3413ae82367c3d0592a67302b25 | 1 | 2 | +| 8 | 34b901600979ed0138557680ff528aa5 | 1 | 3 | +| 9 | ce71f8c6a6d697f4c4c9172c0691d646 | 1 | 4 | +| 10 | f018a8fde18db014a1a71dd700118d89 | 1 | 5 | + +!!! + +!!! + +Instead of using an embedding API, we are going to embed our chunks directly in our databse using the `pgml.embed` function. + +!!! generic + +!!! code_block + +```postgresql +CREATE TABLE embeddings ( + id SERIAL PRIMARY KEY, chunk_id bigint, embedding vector (1024), + FOREIGN KEY (chunk_id) REFERENCES chunks (id) ON DELETE CASCADE +); + +INSERT INTO embeddings(chunk_id, embedding) +SELECT + id, + pgml.embed('mixedbread-ai/mxbai-embed-large-v1', chunk) +FROM + chunks; +``` + +!!! + +!!! + +In this case we are using the `mixedbread-ai/mxbai-embed-large-v1` a SOTA model with incredible recall performance. + +We can verify they were embedded correctly. + +!!! generic + +!!! code_block + +```postgresql +\x auto +SELECT * FROM embeddings LIMIT 1; +\x off +``` + +!!! + +!!! results + +```text +id | 1 +chunk_id | 1 +embedding | [0.018623363,-0.02285168,0.030968409,-0.0008862989,-0.018534033,-0.025041971,0.013351363,0.030264968,0.018940015,0.040349673,0.048829854,0.015713623,0.021163238,-0.004478061,-0.0062974053,0.01342851,-0.020463197,-0.04097013,-0.030838259,-0.0026781335,-0.013514478,-0.017542545,-0.055083144,-0.061959717,-0.012871186,0.031224959,0.02112418,-0.014853348,0.055648107,0.08431109,-0.041937426,-0.02310592,0.02245858,-0.0431297,-0.008469138,-0.011226366,0.032495555,-0.020337906,-0.016152548,-0.023888526,0.02149491,-0.0053377654,0.0476396,-0.036587544,-0.07834923,0.015603419,0.043070674,0.019468445,-0.066474535,-0.0015779501,-0.013878166,-0.013458725,0.013851631,0.0071652774,-0.023882905,-0.015201843,0.012238541,-0.03737877,-0.025391884,0.043650895,0.01558388,0.039119314,0.029194985,-0.04744193,0.0056170537,0.010778638,-0.017884707,-0.00029244038,-0.012602758,-0.007875246,-0.04526054,-6.4284686e-05,-0.005769598,-0.00038845933,-0.032822825,0.03684274,-0.0008313914,-0.046097573,-0.014152655,0.04616714,-0.022156844,0.03566803,-0.014032094,0.009407709,-0.038648155,-0.024573283,0.0156378,0.0547954,0.035394646,0.0076721613,-0.007008655,0.032833662,-0.0011310929,-0.013156701,-0.0042242086,0.069960855,-0.021828847,0.02955284,-0.025502147,-0.009076977,0.05445286,0.08737233,-0.02128801,0.042810723,-0.0058011413,-0.0107959015,0.032310173,-0.010621498,-0.021176925,-0.021960221,-0.015585316,-0.007902493,0.034406897,-0.023450606,0.0037850286,0.04483244,-0.011478958,-0.031562425,-0.019675884,-0.008219446,-0.005607503,-0.03065768,0.0323341,-0.019487593,0.009064247,-0.038718406,0.0059558107,0.023667725,-0.035244368,9.467191e-05,0.0049183182,-0.037334662,-0.021340346,0.0019130141,0.019300135,-0.0029919841,-0.045514077,0.02666689,0.0046224073,-0.021685645,-0.0037645202,0.0006780366,-0.015406854,0.09090279,0.018704489,-0.02280434,0.05506764,-0.008431497,-0.037277948,0.03009002,-0.009108825,-0.00083089864,0.0048499256,0.0048382734,0.0094076255,-0.024700468,-0.016617157,0.008510655,-0.012369503,0.014046174,-0.010123938,-0.028991196,0.009815532,0.054396246,-0.029008204,0.04051117,-0.07013572,-0.03733185,-0.060128953,-0.024095867,0.0018222647,0.0018169725,-0.0009262719,-0.005803398,0.03986231,0.06270649,0.01694802,-0.008162654,0.004494133,0.038037747,-0.018806586,-0.011087607,0.026261529,0.052072495,0.016593924,0.0072109043,0.03479167,0.009446735,0.020005314,-0.027620671,0.018090751,0.04036098,-0.0027258266,0.016745605,-0.02886597,0.04071484,-0.06869631,0.001225516,-0.06299305,-0.0709894,-0.0192085,0.013239349,-0.021542944,0.001710626,-0.018116038,-0.01748119,0.01775824,0.03925247,-0.012190861,0.035636537,0.042466108,-0.016491935,-0.037154924,0.018040363,-0.0131627545,0.010722516,-0.026140723,0.02564186,-0.004605382,0.041173078,0.00073589047,0.011592239,0.009908486,0.043702055,0.053091794,-0.012142852,-0.00018352101,0.085855715,-0.014580144,0.029045325,-0.0023999067,0.025174063,0.044601757,0.035770934,0.040519748,0.037240535,0.043620642,0.044118866,0.019248607,0.011306996,0.020493535,0.035936765,0.048831582,0.012623841,0.009265478,0.010971202,-0.0132412,0.0109977005,-0.0054538464,0.016473738,-0.04083495,0.042505562,-0.001342487,0.005840936,0.0017675279,0.017308434,0.0420143,0.051328707,-0.009452692,0.0057223514,0.026780825,0.00742446,-0.024630526,0.03107323,0.00916192,0.027411995,-0.0019175496,-0.025291001,-0.01901041,-0.07651367,-0.0465344,-0.042462647,-0.024365354,-0.021079501,-0.0432224,0.00013768316,0.00036046258,-0.03718051,0.038763855,0.0032811756,0.00697624,-0.017028604,-0.048220832,0.012214309,0.03986564,0.003932904,-0.042311475,0.005391691,0.028816152,0.069943205,-0.055599026,-0.010274334,0.028868295,0.00585409,0.009760283,0.0118976,-0.040581644,-0.053004548,-0.0526296,-0.034240413,-0.0038363612,-0.004730754,-0.018723277,-0.01601637,-0.038638163,0.06655874,0.0351013,-0.004038268,0.040204167,0.040881433,-0.04239331,-0.010466879,0.009326172,0.00036304537,-0.056721557,0.03998027,0.02481976,-0.004078023,0.0029230101,-0.019404871,-0.005828477,0.04294278,-0.017550338,-0.007534357,-0.008580863,0.056146596,0.007770364,-0.03207084,0.017874546,0.004025578,-0.047864694,-0.034685463,-0.033363935,0.02950657,0.05429194,0.0073523414,-0.014066911,0.02366431,0.03610486,0.032978192,0.016071666,-0.035677373,0.0054646228,0.0203664,0.019233122,0.058928937,0.0041354564,-0.02027497,0.00040053058,0.0019034429,-0.012043072,0.0017847657,0.03676109,0.047565766,-0.005874584,0.017794278,-0.030046426,-0.021112567,0.0056568286,0.01376357,0.05977862,0.011873086,-0.028216759,-0.06745307,-0.016887149,-0.04243197,-0.021764198,0.047688756,0.023734126,-0.04353192,0.021475876,0.01892414,-0.017509887,0.0032162662,-0.009358749,-0.03721738,0.047566965,-0.017878285,0.042617068,-0.027871821,-0.04227529,0.003985077,-0.019497044,0.0072685108,0.021165995,0.045710433,0.0059271595,-0.006183208,-0.032289572,-0.044465903,-0.020464543,0.0033873026,0.022058886,-0.02369358,-0.054754533,0.0071472377,0.0021873175,0.04660187,0.051053047,-0.010261539,-0.009315611,0.02052967,0.009023642,0.031200182,-0.040883888,0.016621651,-0.038626544,0.013732269,0.010218355,0.019598525,-0.006492417,-0.012904362,-0.010913204,0.024882413,0.026525095,0.008932081,-0.016051447,0.037517436,0.053253606,0.035980936,-0.0074353246,-0.017852481,-0.009176863,0.026370667,0.03406368,-0.036369573,-0.0033056326,-0.039790567,-0.0010809397,0.06398017,-0.0233756,-0.022745207,0.0041284347,-0.006868821,-0.022491742,0.029775932,0.050810635,-0.011080408,-0.007292075,-0.078457326,0.0044635567,0.012759795,-0.015698882,-0.02220119,0.00942075,-0.014544812,0.026497401,0.01487379,-0.005634491,-0.025069563,0.018097453,-0.029922431,0.06136796,-0.060082547,0.01085696,-0.039873533,-0.023137532,-0.01009546,0.005100517,-0.029780779,-0.018876795,0.0013024161,-0.0027637074,-0.05871409,-0.04807621,0.033885162,-0.0048714406,-0.023327459,0.024403112,-0.03556512,-0.022570046,0.025841955,0.016745063,0.01596773,-0.018458387,-0.038628712,0.012267835,0.013733216,-0.05570125,0.023331221,-0.010143926,0.0030010103,-0.04085697,-0.04617182,0.009094808,-0.057054907,-0.045473132,0.010000442,-0.011206348,-0.03056877,0.02560045,-0.009973477,0.042476565,-0.0801304,0.03246869,-0.038539965,-0.010913026,-0.022911731,0.030005522,-0.010367593,0.026667004,-0.027558804,-0.05233932,0.009694177,0.0073628323,0.015929429,-0.026884604,0.016071552,-0.00019720798,0.00052713073,-0.028247854,-0.028402891,-0.016789969,-0.024457792,-0.0025927501,0.011493104,0.029336551,-0.035506643,-0.03293709,0.06718526,0.032991756,-0.061416663,-0.034664486,0.028762456,-0.015881855,-0.0012977219,0.017649014,0.013985521,-0.03500709,-0.06555898,0.01739066,-0.045807093,0.004867656,-0.049182948,-0.028917754,0.0113239065,0.013335351,0.055981997,-0.036910992,-0.018820828,-0.043516353,0.008788547,-0.05666949,0.009573692,-0.021700945,0.010256802,-0.017312856,0.044344205,-0.0076902485,-0.008851547,0.0010788938,0.011200733,0.034334365,0.022364784,-0.030579677,-0.03471,-0.011425675,-0.011280336,0.020478066,-0.007686596,-0.022225162,0.028765464,-0.016065672,0.037145622,-0.009211553,0.007401809,-0.04353853,-0.04326396,-0.011851935,-0.03837259,-0.024392553,-0.056246143,0.043768484,-0.0021168136,-0.0066281,-0.006896298,-0.014978161,-0.041984025,-0.07014386,0.042733505,-0.030345151,-0.028227473,-0.029198963,-0.019491067,0.036128435,0.006671823,0.03273865,0.10413083,0.046565324,0.03476281,-0.021236487,0.010281997,0.008132755,-0.006925993,0.0037259492,-0.00085186976,-0.063399576,-0.031152688,-0.026266094,-0.039713737,-0.017881637,-0.004793995,0.044549145,-0.019131236,0.041359022,-0.020011334,-0.0487966,-0.012533663,0.009177706,0.056267086,0.004863351,0.029361043,-0.017181171,0.05994776,0.024275357,-0.026009355,-0.037247155,-0.00069368834,0.049283065,0.00031620747,-0.05058156,0.038948,0.0038390015,-0.04601819,-0.018070936,0.006863339,-0.024927856,-0.0056363824,-0.05078538,-0.0061668083,0.009082598,-0.007671819,0.043758992,0.02404526,-0.02915477,0.015156649,0.03255342,-0.029333884,-0.030988852,0.0285258,0.038548548,-0.021007381,-0.004295833,-0.004408545,-0.015797473,0.03404609,0.015294826,0.043694574,0.064626984,0.023716459,0.02087564,0.028617894,0.05740349,0.040547665,-0.020582093,0.0074607623,0.007739327,-0.065488316,-0.0101815825,-0.001488302,0.05273952,0.035568725,-0.013645145,0.00071412086,0.05593781,0.021648252,-0.022956904,-0.039080553,0.019539805,-0.07495989,-0.0033871594,-0.007018141,-0.010935482,-5.7075984e-05,0.013419309,-0.003545881,-0.022760011,0.00988566,0.014339391,-0.008118722,0.056001987,-0.020148695,0.0015329354,-0.024960503,-0.029633753,-0.013379987,-0.0025359367,0.013124176,0.031880926,-0.01562599,0.030065667,0.0014069993,0.0072038868,0.014385158,-0.009696549,-0.014109655,-0.059258915,-0.0002165593,0.016604712,-0.0059224735,-0.0013092262,-0.00022250676,-0.0023060953,-0.014856572,-0.009526227,-0.030465033,-0.039493423,-0.0011756015,0.033197496,-0.028803488,0.011914758,-0.030594831,-0.008639591,-0.020312231,0.026512157,0.015287617,0.0032433916,0.0074692816,0.0066296835,0.030222693,0.025374962,0.027766889,-0.017209511,-0.032084063,-0.020027842,0.008249133,-0.005054688,0.051436525,-0.030558063,-0.02633653,-0.01538074,0.010943056,0.0036713344,0.0024809965,0.006587549,-0.007795616,-0.051794346,-0.019547012,-0.011581287,-0.007759964,0.045571648,-0.009941077,-0.055039328,0.0055089286,-0.025752712,-0.011321939,0.0015637486,-0.06359818,-0.034881815,0.01625671,-0.013557044,0.039825413,-0.0027895744,-0.014577813,-0.0008740217,0.0034209616,0.043508507,-0.023725279,0.012181109,-0.009782305,0.0018773589,-0.065146625,0.009437339,0.00733527,0.049834568,-0.020543063,-0.039150853,-0.015234995,-0.006770511,0.002985214,-0.0011479045,0.009379375,-0.011452433,-0.0277739,0.014886782,-0.0065106237,0.006157106,-0.009041895,0.0031169152,-0.0669943,0.0058886297,-0.056187652,0.011594736,0.018308813,-0.026984183,-0.021653237,0.081568025,0.02491183,0.0063725654,0.028600894,0.04295813,0.019567039,-0.015854416,-0.07523876,0.012444418,0.02459371,0.054541484,-0.0017476659,-0.023083968,0.010912003,0.01662412,0.033263847,-0.022505535,0.016509151,0.019118164,0.026604444,-0.01345531,-0.034896314,-0.030420221,-0.005380027,0.009990224,0.063245244,-0.02383651,-0.031892184,-0.019316372,-0.016938515,0.040447593,-0.0030380695,-0.035975304,0.011557656,0.0014175953,0.0033523554,0.019000882,-0.009868413,0.025040675,0.0313598,0.020148544,0.025335543,-0.0030205864,0.0033406885,0.015278818,-0.008082225,-0.013311091,0.0024015747,0.02845818,-0.024585644,-0.0633492,-0.07347503,-0.008628047,-0.044017814,-0.010691597,0.03241164,0.0060925046,-0.032058343,-0.041429296,0.06868553,0.011523587,0.05747461,0.043150447,-0.035121176,-0.0052461633,0.04020538,0.021331007,0.02410664,-0.021407101,0.08082899,0.025684848,0.06999515,0.02202676,-0.025417957,-0.0094303815,0.028135775,-0.019147158,-0.04165579,-0.029573435,-0.0066949194,0.006705128,-0.015028007,-0.037273537,-0.0018824468,0.017890878,-0.0038961077,-0.045805767,0.0017864663,0.057283465,-0.06149215,0.014828884,0.016780626,0.03504063,0.012826686,0.01825945,-0.014611099,-0.05054207,0.0059569273,-0.050427742,0.012945258,-0.000114398965,0.02219763,-0.022247856,-0.029176414,-0.020923832,-0.025116103,-0.0077409917,-0.016431509,0.02489512,0.04602958,0.03150148,0.012386089,-0.05198216,-0.0030460325,0.0268005,0.038448498,0.01924401,0.07118071,0.036725424,-0.013376856,-0.0049849628,-0.03859098,0.03737393,-0.0052245436,-0.006352251,0.019535184,-0.0017854937,-0.0153605975,-0.067677096,0.0035186394,0.072521344,-0.031051565,-0.016579162,-0.035821736,0.0012950175,-0.04756073,-0.037519347,-0.044505138,0.03384531,0.016431695,0.01076104,0.01761071,-0.030177226,0.20769434,0.044621687,0.025764097,-0.00054298044,0.029406168,0.053361185,0.013022782,-0.006139999,0.001014758,-0.051892612,0.023887891,0.0035872294,0.008639285,0.010232208,-0.021343045,0.017568272,-0.07338228,0.014043151,-0.015673313,-0.04877262,-0.04944962,0.05635428,0.0064074355,0.042409293,0.017486382,0.026187604,0.052255314,-0.039807603,-0.03299426,-0.04731727,-0.034517273,0.00047638942,0.008196412,0.020099401,-0.007953495,0.005094485,-0.032003388,-0.033158697,-0.020399494,0.015141361,0.026477406,-0.01990327,0.021339003,-0.043441944,-0.01901073,0.021291636,-0.039682653,0.039700523,0.012196781,-0.025805188,0.028795147,-0.027478887,0.022309775,-0.09748059,-0.014054129,0.0018843628,0.014869343,-0.019351315,0.0026920864,0.03932672,-0.0066732406,0.035402156,0.0051303576,0.01524948,-0.010795729,0.063722104,-0.0139351925,0.016053425,-0.042903405,-0.008158309,-0.025266778,-0.025320085,0.051727448,-0.046809513,0.020976106,0.032922912,-0.018999893,0.009321827,0.0026644706,-0.034224827,0.007180524,-0.011403546,0.00018723078,0.020122612,0.0053222817,0.038247555,-0.04966653,1.7162782e-05,0.028443096,0.056440514,0.037390858,0.050378226,-0.03398227,0.029389588,-0.01307477] +``` + +!!! + +!!! + +Notice that we set expanded display to auto to make it easier to visualize the output. + +### Unified Retrieval + +Retrieval with Unified RAG is lightning fast and incredibly simple. + +!!! generic + +!!! code_block time="32.823 ms" + +```postgresql +WITH embedded_query AS ( + SELECT + pgml.embed('mixedbread-ai/mxbai-embed-large-v1', 'How do I write a select statement with pgml.transform?', '{"prompt": "Represent this sentence for searching relevant passages: "}')::vector embedding +) +SELECT + chunks.id, + ( + SELECT + embedding + FROM embedded_query) <=> embeddings.embedding cosine_distance, + chunks.chunk +FROM + chunks + INNER JOIN embeddings ON embeddings.chunk_id = chunks.id +ORDER BY + embeddings.embedding <=> ( + SELECT + embedding + FROM embedded_query) +LIMIT 6; +``` + +!!! + +!!! results + +| id | cosine_distance | chunk | +| --- | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | 0.09044166306461232 | Here is an example of the pgml.transform function | +| 3 | 0.10787954026965096 | Here is another example of the pgml.transform function | +| 5 | 0.11683694289239333 | Here is a third example of the pgml.transform function | +| 2 | 0.17699128851412282 | SELECT pgml.transform(\n task => ''{\n "task": "text-generation",\n "model": "meta-llama/Meta-Llama-3-8B-Instruct"\n }''::JSONB,\n inputs => ARRAY[''AI is going to''],\n args => ''{\n "max_new_tokens": 100\n }''::JSONB\n ); | +| 4 | 0.17844729798760672 | SELECT pgml.transform(\n task => ''{\n "task": "text-generation",\n "model": "meta-llama/Meta-Llama-3-70B-Instruct"\n }''::JSONB,\n inputs => ARRAY[''AI is going to''],\n args => ''{\n "max_new_tokens": 100\n }''::JSONB\n ); | +| 6 | 0.17520464423854842 | SELECT pgml.transform(\n task => ''{\n "task": "text-generation",\n "model": "microsoft/Phi-3-mini-128k-instruct"\n }''::JSONB,\n inputs => ARRAY[''AI is going to''],\n args => ''{\n "max_new_tokens": 100\n }''::JSONB\n ); | + +!!! + +!!! + +We are using a CTE to embed the user query, and then performing nearest neighbors search using the cosine similarity function to compare the distance between our embeddings. Note how fast this is! We are embedding the query in the database and utilizing an HNSW index from pgvector to perform ridiculously fast retrieval. + +There is a slight problem with the results of our retrieval. If you were to ask me: `How do I write a select statement with pgml.transform?` I couldn't use any of the top 3 results from our search to answer that queestion. Our search results aren't bad, but they can be better. This is why we rerank. + +### Unified Retrieval + Reranking + +We can rerank in the database in the same query we did retrieval with using the `pgml.rank` function. + +!!! generic + +!!! code_block time="63.702 ms" + +```postgresql +WITH embedded_query AS ( + SELECT + pgml.embed('mixedbread-ai/mxbai-embed-large-v1', 'How do I write a select statement with pgml.transform?', '{"prompt": "Represent this sentence for searching relevant passages: "}')::vector embedding +), +vector_search AS ( + SELECT + chunks.id, + ( + SELECT + embedding + FROM embedded_query) <=> embeddings.embedding cosine_distance, + chunks.chunk + FROM + chunks + INNER JOIN embeddings ON embeddings.chunk_id = chunks.id + ORDER BY + embeddings.embedding <=> ( + SELECT + embedding + FROM embedded_query) + LIMIT 6 +), +row_number_vector_search AS ( + SELECT + cosine_distance, + chunk, + ROW_NUMBER() OVER () AS row_number + FROM + vector_search +) +SELECT + cosine_distance, + (rank).score AS rank_score, + chunk +FROM ( + SELECT + cosine_distance, + rank, + chunk + FROM + row_number_vector_search AS rnsv1 + INNER JOIN ( + SELECT + pgml.rank('mixedbread-ai/mxbai-rerank-base-v1', 'How do I write a select statement with pgml.transform?', array_agg("chunk"), '{"return_documents": false, "top_k": 6}'::jsonb || '{}') AS rank + FROM + row_number_vector_search + ) AS rnsv2 ON (rank).corpus_id + 1 = rnsv1.row_number +) AS sub_query; +``` + +!!! + +!!! results + +| cosine_distance | rank_score | chunk | +| -------------------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 0.2124727254737595 | 0.3427378833293915 | SELECT pgml.transform(\n task => ''{\n "task": "text-generation",\n "model": "meta-llama/Meta-Llama-3-70B-Instruct"\n }''::JSONB,\n inputs => ARRAY[''AI is going to''],\n args => ''{\n "max_new_tokens": 100\n }''::JSONB\n ); | +| 0.2109014406365579 | 0.342184841632843 | SELECT pgml.transform(\n task => ''{\n "task": "text-generation",\n "model": "meta-llama/Meta-Llama-3-8B-Instruct"\n }''::JSONB,\n inputs => ARRAY[''AI is going to''],\n args => ''{\n "max_new_tokens": 100\n }''::JSONB\n ); | +| 0.21259646694819168 | 0.3332781493663788 | SELECT pgml.transform(\n task => ''{\n "task": "text-generation",\n "model": "microsoft/Phi-3-mini-128k-instruct"\n }''::JSONB,\n inputs => ARRAY[''AI is going to''],\n args => ''{\n "max_new_tokens": 100\n }''::JSONB\n ); | +| 0.19483324929456136 | 0.03163915500044823 | Here is an example of the pgml.transform function | +| 0.1685870257610742 | 0.031176624819636345 | Here is a third example of the pgml.transform function | +| 0.1834613039099552 | 0.028772158548235893 | Here is another example of the pgml.transform function | + +!!! + +!!! + + +We are using the `mixedbread-ai/mxbai-rerank-base-v1` model to rerank the results from our semantic search. Once again, note how fast this is. We have now combined the embedding api call, the semantic search api call, and the rerank api call from our RAG flow into one sql query with embedding generation, retrieval and reranking all happening in the database. + +Also notice that the top 3 results all show examples using the `pgml.transform` function. This is the exact results we wanted for our search, and why we needed to rerank. + +### Unified Retrieval + Reranking + Text Generation + +Using the pgml.transform function, we can perform text generation in the same query we did retrieval and reranking with. + +!!! generic + +!!! code_block time="1496.823 ms" + +```postgresql +WITH embedded_query AS ( + SELECT + pgml.embed('mixedbread-ai/mxbai-embed-large-v1', 'How do I write a select statement with pgml.transform?', '{"prompt": "Represent this sentence for searching relevant passages: "}')::vector embedding +), +vector_search AS ( + SELECT + chunks.id, + ( + SELECT + embedding + FROM embedded_query) <=> embeddings.embedding cosine_distance, + chunks.chunk + FROM + chunks + INNER JOIN embeddings ON embeddings.chunk_id = chunks.id + ORDER BY + embeddings.embedding <=> ( + SELECT + embedding + FROM embedded_query) + LIMIT 6 +), +row_number_vector_search AS ( + SELECT + cosine_distance, + chunk, + ROW_NUMBER() OVER () AS row_number + FROM + vector_search +), +context AS ( + SELECT + chunk + FROM ( + SELECT + chunk + FROM + row_number_vector_search AS rnsv1 + INNER JOIN ( + SELECT + pgml.rank('mixedbread-ai/mxbai-rerank-base-v1', 'How do I write a select statement with pgml.transform?', array_agg("chunk"), '{"return_documents": false, "top_k": 1}'::jsonb || '{}') AS rank + FROM + row_number_vector_search + ) AS rnsv2 ON (rank).corpus_id + 1 = rnsv1.row_number + ) AS sub_query +) +SELECT + pgml.transform ( + task => '{ + "task": "conversational", + "model": "meta-llama/Meta-Llama-3-8B-Instruct" + }'::jsonb, + inputs => ARRAY['{"role": "system", "content": "You are a friendly and helpful chatbot."}'::jsonb, jsonb_build_object('role', 'user', 'content', replace('Given the context answer the following question: How do I write a select statement with pgml.transform? Context:\n\n{CONTEXT}', '{CONTEXT}', chunk))], + args => '{ + "max_new_tokens": 100 + }'::jsonb) +FROM + context; +``` + +!!! + +!!! results + +```text +["To write a SELECT statement with pgml.transform, you can use the following syntax:\n\n```sql\nSELECT pgml.transform(\n task => '{\n \"task\": \"text-generation\",\n \"model\": \"meta-llama/Meta-Llama-3-70B-Instruct\"\n }'::JSONB,\n inputs => ARRAY['AI is going to'],\n args => '{\n \"max_new_tokens\": 100\n }'::JSONB\n"] +``` + +!!! + +!!! + +We have now combined the embedding api call, the semantic search api call, the rerank api call and the text generation api call from our RAG flow into one sql query. + +We are using `meta-llama/Meta-Llama-3-8B-Instruct` to perform text generation. We have a number of different models available for text generation, but for our use case `meta-llama/Meta-Llama-3-8B-Instruct` is a fantastic mix between speed and capability. For this simple example we are only passing the top search result as context to the LLM. In real world use cases, you will want to pass more results. + +We can stream from the database by using the `pgml.transform_stream` function and cursors. Here is a query measuring time to first token. + +!!! generic + +!!! code_block time="100.117 ms" + +```postgresql +BEGIN; +DECLARE c CURSOR FOR WITH embedded_query AS ( + SELECT + pgml.embed('mixedbread-ai/mxbai-embed-large-v1', 'How do I write a select statement with pgml.transform?', '{"prompt": "Represent this sentence for searching relevant passages: "}')::vector embedding +), +vector_search AS ( + SELECT + chunks.id, + ( + SELECT + embedding + FROM embedded_query) <=> embeddings.embedding cosine_distance, + chunks.chunk + FROM + chunks + INNER JOIN embeddings ON embeddings.chunk_id = chunks.id + ORDER BY + embeddings.embedding <=> ( + SELECT + embedding + FROM embedded_query) + LIMIT 6 +), +row_number_vector_search AS ( + SELECT + cosine_distance, + chunk, + ROW_NUMBER() OVER () AS row_number + FROM + vector_search +), +context AS ( + SELECT + chunk + FROM ( + SELECT + chunk + FROM + row_number_vector_search AS rnsv1 + INNER JOIN ( + SELECT + pgml.rank('mixedbread-ai/mxbai-rerank-base-v1', 'How do I write a select statement with pgml.transform?', array_agg("chunk"), '{"return_documents": false, "top_k": 1}'::jsonb || '{}') AS rank + FROM + row_number_vector_search + ) AS rnsv2 ON (rank).corpus_id + 1 = rnsv1.row_number + ) AS sub_query +) +SELECT + pgml.transform_stream( + task => '{ + "task": "conversational", + "model": "meta-llama/Meta-Llama-3-8B-Instruct" + }'::jsonb, + inputs => ARRAY['{"role": "system", "content": "You are a friendly and helpful chatbot."}'::jsonb, jsonb_build_object('role', 'user', 'content', replace('Given the context answer the following question: How do I write a select statement with pgml.transform? Context:\n\n{CONTEXT}', '{CONTEXT}', chunk))], + args => '{ + "max_new_tokens": 100 + }'::jsonb) +FROM + context; +FETCH 2 FROM c; +END; +``` + +!!! + +!!! results + +```text +BEGIN +Time: 0.175 ms + +DECLARE CURSOR +Time: 31.498 ms + + transform_stream +------------------ + [] + ["To"] +(2 rows) + +Time: 68.204 ms + +COMMIT +Time: 0.240 ms +``` + +!!! + +!!! + +Note how fast this is! With unified RAG we can perform the entire RAG pipeline and get the first token for our text generation back in 100 milliseconds. + +In summary, we have reduced our RAG system that involved four different network calls into a single unified system that requires one sql query and yields a response in 100 milliseconds. Note that timing will vary with network latency. + +Feel free to give Unified RAG on PostgresML a try and let us know what you think. If you have any questions, or just have an idea on how to make PostgresML better, we'd love to hear form you in our [Discord](https://discord.com/invite/DmyJP3qJ7U). We’re open source, and welcome contributions from the community, especially when it comes to the rapidly evolving ML/AI landscape. diff --git a/pgml-cms/docs/guides/unified-rag.md b/pgml-cms/docs/guides/unified-rag.md index ce6177f48..ee7e38941 100644 --- a/pgml-cms/docs/guides/unified-rag.md +++ b/pgml-cms/docs/guides/unified-rag.md @@ -216,7 +216,7 @@ Retrieval with Unified RAG is lightning fast and incredibly simple. !!! generic -!!! code_block time="70.381 ms" +!!! code_block time="32.823 ms" ```postgresql WITH embedded_query AS ( @@ -268,7 +268,7 @@ We can rerank in the database in the same query we did retrieval with using the !!! generic -!!! code_block time="70.381 ms" +!!! code_block time="63.702 ms" ```postgresql WITH embedded_query AS ( @@ -326,10 +326,10 @@ FROM ( !!! results | cosine_distance | rank_score | chunk | -| ---------------------+--------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 0.2124727254737595 | 0.3427378833293915 | SELECT pgml.transform(\n task => ''{\n "task": "text-generation",\n "model": "microsoft/Phi-3-mini-128k-instruct"\n }''::JSONB,\n inputs => ARRAY[''AI is going to''],\n args => ''{\n "max_new_tokens": 100\n }''::JSONB\n ); | -| 0.2109014406365579 | 0.342184841632843 | SELECT pgml.transform(\n task => ''{\n "task": "text-generation",\n "model": "meta-llama/Meta-Llama-3-70B-Instruct"\n }''::JSONB,\n inputs => ARRAY[''AI is going to''],\n args => ''{\n "max_new_tokens": 100\n }''::JSONB\n ); | -| 0.21259646694819168 | 0.3332781493663788 | SELECT pgml.transform(\n task => ''{\n "task": "text-generation",\n "model": "meta-llama/Meta-Llama-3-8B-Instruct"\n }''::JSONB,\n inputs => ARRAY[''AI is going to''],\n args => ''{\n "max_new_tokens": 100\n }''::JSONB\n ); | +| -------------------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 0.2124727254737595 | 0.3427378833293915 | SELECT pgml.transform(\n task => ''{\n "task": "text-generation",\n "model": "meta-llama/Meta-Llama-3-70B-Instruct"\n }''::JSONB,\n inputs => ARRAY[''AI is going to''],\n args => ''{\n "max_new_tokens": 100\n }''::JSONB\n ); | +| 0.2109014406365579 | 0.342184841632843 | SELECT pgml.transform(\n task => ''{\n "task": "text-generation",\n "model": "meta-llama/Meta-Llama-3-8B-Instruct"\n }''::JSONB,\n inputs => ARRAY[''AI is going to''],\n args => ''{\n "max_new_tokens": 100\n }''::JSONB\n ); | +| 0.21259646694819168 | 0.3332781493663788 | SELECT pgml.transform(\n task => ''{\n "task": "text-generation",\n "model": "microsoft/Phi-3-mini-128k-instruct"\n }''::JSONB,\n inputs => ARRAY[''AI is going to''],\n args => ''{\n "max_new_tokens": 100\n }''::JSONB\n ); | | 0.19483324929456136 | 0.03163915500044823 | Here is an example of the pgml.transform function | | 0.1685870257610742 | 0.031176624819636345 | Here is a third example of the pgml.transform function | | 0.1834613039099552 | 0.028772158548235893 | Here is another example of the pgml.transform function | @@ -349,7 +349,7 @@ Using the pgml.transform function, we can perform text generation in the same qu !!! generic -!!! code_block time="70.381 ms" +!!! code_block time="1496.823 ms" ```postgresql WITH embedded_query AS ( @@ -432,7 +432,7 @@ We can stream from the database by using the `pgml.transform_stream` function an !!! generic -!!! code_block time="70.381 ms" +!!! code_block time="100.117 ms" ```postgresql BEGIN; @@ -504,10 +504,10 @@ END; ```text BEGIN -Time: 73.012 ms +Time: 0.175 ms DECLARE CURSOR -Time: 77.593 ms +Time: 31.498 ms transform_stream ------------------ @@ -515,13 +515,14 @@ Time: 77.593 ms ["To"] (2 rows) -Time: 135.170 ms +Time: 68.204 ms + +COMMIT +Time: 0.240 ms ``` !!! !!! -Note how fast this is! With unified RAG we can perform the entire RAG pipeline and get the first token for our text generation back in under 300 milliseconds. - -In summary, we have reduced our RAG system that involved four different network calls into a single unified system that requires one sql query and yields a response in less than 300 milliseconds. +Note how fast this is! With unified RAG we can perform the entire RAG pipeline and get the first token for our text generation back in 100 milliseconds. pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy