[{"data":1,"prerenderedAt":3189},["ShallowReactive",2],{"/developers/user-guide/advanced/running_on_multiple_machines-app":3,"navigation-developers":743,"/developers/user-guide/advanced/running_on_multiple_machines":2654,"surr-/developers/user-guide/advanced/running_on_multiple_machines":3186},{"id":4,"title":5,"author":6,"body":7,"description":735,"extension":736,"meta":737,"navigation":573,"path":738,"seo":739,"sitemap":740,"stem":741,"__hash__":742},"content/2.developers/4.user-guide/80.advanced/70.running_on_multiple_machines.md","Running on Multiple Machines",null,{"type":8,"value":9,"toc":723},"minimark",[10,14,18,21,34,39,47,58,62,67,73,113,117,125,183,188,224,241,244,247,283,318,354,372,392,396,410,455,459,462,597,600,604,613,617,634,640,646,652,658,662,665,704,719],[11,12,5],"h1",{"id":13},"running-on-multiple-machines",[15,16,17],"p",{},"Pathway pipelines can be distributed across multiple machines. Each machine runs a process, and together they form a single logical computation. Workers on different machines communicate over TCP, exchanging data and progress information the same way co-located processes do.",[15,19,20],{},"This is useful when:",[22,23,24,28,31],"ul",{},[25,26,27],"li",{},"The dataset or working state does not fit in the memory of a single machine.",[25,29,30],{},"The computation is CPU-bound enough to saturate all cores on one host.",[25,32,33],{},"You want to co-locate workers with partitioned data sources (e.g., Kafka brokers) to reduce network transfer.",[35,36,38],"h2",{"id":37},"how-it-works","How It Works",[15,40,41,42,46],{},"Every Pathway worker — regardless of which machine it runs on — executes the same dataflow on a different shard of the data. The workers discover each other through a fixed list of ",[43,44,45],"code",{},"host:port"," addresses provided at startup. All processes must be started before any of them begins processing data: the pipeline waits until the full cluster is assembled. While the pipeline waits for all of its workers, you will see a \"Preparing Pathway computation\" log message.",[15,48,49,50,53,54,57],{},"This is different from the default single-machine multi-process mode (",[43,51,52],{},"pathway spawn -n N","), where Pathway automatically assigns ports on ",[43,55,56],{},"127.0.0.1"," and launches all processes itself. In the multi-machine mode, you are responsible for starting one process per machine and telling each process where all the others are.",[35,59,61],{"id":60},"setting-up","Setting Up",[63,64,66],"h3",{"id":65},"_1-decide-on-addresses","1. Decide on addresses",[15,68,69,70,72],{},"Choose a ",[43,71,45],{}," pair for each process. The port must be reachable from all other machines in the cluster. For example, with two machines:",[74,75,76,89],"table",{},[77,78,79],"thead",{},[80,81,82,86],"tr",{},[83,84,85],"th",{},"Process",[83,87,88],{},"Address",[90,91,92,103],"tbody",{},[80,93,94,98],{},[95,96,97],"td",{},"0",[95,99,100],{},[43,101,102],{},"192.168.1.10:9000",[80,104,105,108],{},[95,106,107],{},"1",[95,109,110],{},[43,111,112],{},"192.168.1.11:9000",[63,114,116],{"id":115},"_2-start-the-process-on-each-machine","2. Start the process on each machine",[15,118,119,120,124],{},"On ",[121,122,123],"strong",{},"machine 0",":",[126,127,132],"pre",{"className":128,"code":129,"language":130,"meta":131,"style":131},"language-bash shiki shiki-themes material-theme-palenight","pathway spawn \\\n  --addresses 192.168.1.10:9000,192.168.1.11:9000 \\\n  --process-id 0 \\\n  python pipeline.py\n","bash","",[43,133,134,151,162,174],{"__ignoreMap":131},[135,136,139,143,147],"span",{"class":137,"line":138},"line",1,[135,140,142],{"class":141},"s5Dmg","pathway",[135,144,146],{"class":145},"sfyAc"," spawn",[135,148,150],{"class":149},"s0W1g"," \\\n",[135,152,154,157,160],{"class":137,"line":153},2,[135,155,156],{"class":145},"  --addresses",[135,158,159],{"class":145}," 192.168.1.10:9000,192.168.1.11:9000",[135,161,150],{"class":149},[135,163,165,168,172],{"class":137,"line":164},3,[135,166,167],{"class":145},"  --process-id",[135,169,171],{"class":170},"sx098"," 0",[135,173,150],{"class":149},[135,175,177,180],{"class":137,"line":176},4,[135,178,179],{"class":145},"  python",[135,181,182],{"class":145}," pipeline.py\n",[15,184,119,185,124],{},[121,186,187],{},"machine 1",[126,189,191],{"className":128,"code":190,"language":130,"meta":131,"style":131},"pathway spawn \\\n  --addresses 192.168.1.10:9000,192.168.1.11:9000 \\\n  --process-id 1 \\\n  python pipeline.py\n",[43,192,193,201,209,218],{"__ignoreMap":131},[135,194,195,197,199],{"class":137,"line":138},[135,196,142],{"class":141},[135,198,146],{"class":145},[135,200,150],{"class":149},[135,202,203,205,207],{"class":137,"line":153},[135,204,156],{"class":145},[135,206,159],{"class":145},[135,208,150],{"class":149},[135,210,211,213,216],{"class":137,"line":164},[135,212,167],{"class":145},[135,214,215],{"class":170}," 1",[135,217,150],{"class":149},[135,219,220,222],{"class":137,"line":176},[135,221,179],{"class":145},[135,223,182],{"class":145},[15,225,226,227,230,231,234,235,237,238,240],{},"Both commands receive the same ",[43,228,229],{},"--addresses"," list. The ",[43,232,233],{},"--process-id"," flag tells each machine which entry in that list belongs to it — process 0 binds to ",[43,236,102],{},", process 1 binds to ",[43,239,112],{},".",[15,242,243],{},"The two commands can be started in any order. The process that starts first will wait for the others to connect before beginning computation.",[15,245,246],{},"Note that a single machine can host more than one process. In that case, use the same host with different ports for each process on that machine:",[126,248,250],{"className":128,"code":249,"language":130,"meta":131,"style":131},"pathway spawn \\\n  --addresses 192.168.1.10:9000,192.168.1.10:9001,192.168.1.11:9000 \\\n  --process-id 0 \\\n  python pipeline.py\n",[43,251,252,260,269,277],{"__ignoreMap":131},[135,253,254,256,258],{"class":137,"line":138},[135,255,142],{"class":141},[135,257,146],{"class":145},[135,259,150],{"class":149},[135,261,262,264,267],{"class":137,"line":153},[135,263,156],{"class":145},[135,265,266],{"class":145}," 192.168.1.10:9000,192.168.1.10:9001,192.168.1.11:9000",[135,268,150],{"class":149},[135,270,271,273,275],{"class":137,"line":164},[135,272,167],{"class":145},[135,274,171],{"class":170},[135,276,150],{"class":149},[135,278,279,281],{"class":137,"line":176},[135,280,179],{"class":145},[135,282,182],{"class":145},[126,284,286],{"className":128,"code":285,"language":130,"meta":131,"style":131},"pathway spawn \\\n  --addresses 192.168.1.10:9000,192.168.1.10:9001,192.168.1.11:9000 \\\n  --process-id 1 \\\n  python pipeline.py\n",[43,287,288,296,304,312],{"__ignoreMap":131},[135,289,290,292,294],{"class":137,"line":138},[135,291,142],{"class":141},[135,293,146],{"class":145},[135,295,150],{"class":149},[135,297,298,300,302],{"class":137,"line":153},[135,299,156],{"class":145},[135,301,266],{"class":145},[135,303,150],{"class":149},[135,305,306,308,310],{"class":137,"line":164},[135,307,167],{"class":145},[135,309,215],{"class":170},[135,311,150],{"class":149},[135,313,314,316],{"class":137,"line":176},[135,315,179],{"class":145},[135,317,182],{"class":145},[126,319,321],{"className":128,"code":320,"language":130,"meta":131,"style":131},"pathway spawn \\\n  --addresses 192.168.1.10:9000,192.168.1.10:9001,192.168.1.11:9000 \\\n  --process-id 2 \\\n  python pipeline.py\n",[43,322,323,331,339,348],{"__ignoreMap":131},[135,324,325,327,329],{"class":137,"line":138},[135,326,142],{"class":141},[135,328,146],{"class":145},[135,330,150],{"class":149},[135,332,333,335,337],{"class":137,"line":153},[135,334,156],{"class":145},[135,336,266],{"class":145},[135,338,150],{"class":149},[135,340,341,343,346],{"class":137,"line":164},[135,342,167],{"class":145},[135,344,345],{"class":170}," 2",[135,347,150],{"class":149},[135,349,350,352],{"class":137,"line":176},[135,351,179],{"class":145},[135,353,182],{"class":145},[15,355,356,357,360,361,364,365,368,369,240],{},"Here processes 0 and 1 both run on ",[43,358,359],{},"192.168.1.10",", listening on ports ",[43,362,363],{},"9000"," and ",[43,366,367],{},"9001"," respectively, while process 2 runs on ",[43,370,371],{},"192.168.1.11",[15,373,374,375,378,379,383,384,388,389,240],{},"Please keep in mind that due to how the communication internally works, ",[121,376,377],{},"the list of workers must have them in the same order in all of the launched commands",". Only the ",[121,380,381],{},[43,382,233],{}," parameter must be varied, taking all values from ",[121,385,386],{},[43,387,97],{}," through ",[121,390,391],{},"the length of the list minus one",[63,393,395],{"id":394},"_3-use-threads-for-intra-machine-parallelism","3. Use threads for intra-machine parallelism",[15,397,398,399,402,403,405,406,409],{},"The ",[43,400,401],{},"--threads"," flag works independently of ",[43,404,229],{},". To run two threads per machine with the two-machine setup above, add ",[43,407,408],{},"--threads 2"," to both commands. This gives four total workers: two on each machine.",[126,411,413],{"className":128,"code":412,"language":130,"meta":131,"style":131},"pathway spawn \\\n  --addresses 192.168.1.10:9000,192.168.1.11:9000 \\\n  --process-id 0 \\\n  --threads 2 \\\n  python pipeline.py\n",[43,414,415,423,431,439,448],{"__ignoreMap":131},[135,416,417,419,421],{"class":137,"line":138},[135,418,142],{"class":141},[135,420,146],{"class":145},[135,422,150],{"class":149},[135,424,425,427,429],{"class":137,"line":153},[135,426,156],{"class":145},[135,428,159],{"class":145},[135,430,150],{"class":149},[135,432,433,435,437],{"class":137,"line":164},[135,434,167],{"class":145},[135,436,171],{"class":170},[135,438,150],{"class":149},[135,440,441,444,446],{"class":137,"line":176},[135,442,443],{"class":145},"  --threads",[135,445,345],{"class":170},[135,447,150],{"class":149},[135,449,451,453],{"class":137,"line":450},5,[135,452,179],{"class":145},[135,454,182],{"class":145},[63,456,458],{"id":457},"_4-add-persistence-recommended","4. Add persistence (recommended)",[15,460,461],{},"When running across machines, data persistence is strongly recommended. If any process crashes, the whole cluster must be restarted. Persistence ensures the pipeline resumes from the last checkpoint rather than replaying from the beginning:",[126,463,467],{"className":464,"code":465,"language":466,"meta":131,"style":131},"language-python shiki shiki-themes material-theme-palenight","persistence_config = pw.persistence.Config(\n    backend=pw.persistence.Backend.s3(\n        bucket_name=\"my-bucket\",\n        root_path=\"pathway-state/\",\n    ),\n)\n\npw.run(persistence_config=persistence_config)\n","python",[43,468,469,496,523,541,557,562,568,575],{"__ignoreMap":131},[135,470,471,474,478,481,483,487,489,493],{"class":137,"line":138},[135,472,473],{"class":149},"persistence_config ",[135,475,477],{"class":476},"sAklC","=",[135,479,480],{"class":149}," pw",[135,482,240],{"class":476},[135,484,486],{"class":485},"s-wAU","persistence",[135,488,240],{"class":476},[135,490,492],{"class":491},"sdLwU","Config",[135,494,495],{"class":476},"(\n",[135,497,498,502,504,507,509,511,513,516,518,521],{"class":137,"line":153},[135,499,501],{"class":500},"s7ZW3","    backend",[135,503,477],{"class":476},[135,505,506],{"class":491},"pw",[135,508,240],{"class":476},[135,510,486],{"class":485},[135,512,240],{"class":476},[135,514,515],{"class":485},"Backend",[135,517,240],{"class":476},[135,519,520],{"class":491},"s3",[135,522,495],{"class":476},[135,524,525,528,530,533,536,538],{"class":137,"line":164},[135,526,527],{"class":500},"        bucket_name",[135,529,477],{"class":476},[135,531,532],{"class":476},"\"",[135,534,535],{"class":145},"my-bucket",[135,537,532],{"class":476},[135,539,540],{"class":476},",\n",[135,542,543,546,548,550,553,555],{"class":137,"line":176},[135,544,545],{"class":500},"        root_path",[135,547,477],{"class":476},[135,549,532],{"class":476},[135,551,552],{"class":145},"pathway-state/",[135,554,532],{"class":476},[135,556,540],{"class":476},[135,558,559],{"class":137,"line":450},[135,560,561],{"class":476},"    ),\n",[135,563,565],{"class":137,"line":564},6,[135,566,567],{"class":476},")\n",[135,569,571],{"class":137,"line":570},7,[135,572,574],{"emptyLinePlaceholder":573},true,"\n",[135,576,578,580,582,585,588,591,593,595],{"class":137,"line":577},8,[135,579,506],{"class":149},[135,581,240],{"class":476},[135,583,584],{"class":491},"run",[135,586,587],{"class":476},"(",[135,589,590],{"class":500},"persistence_config",[135,592,477],{"class":476},[135,594,590],{"class":491},[135,596,567],{"class":476},[15,598,599],{},"It is important to use a shared storage (S3, GCS, Azure Blob, NFS) so that all machines can read and write the same state.",[35,601,603],{"id":602},"license","License",[15,605,606,607,612],{},"Running Pathway on multiple machines requires a Pathway Scale or Pathway Enterprise license. You can obtain a free Pathway Scale license ",[608,609,611],"a",{"href":610},"/get-license","here",". The page contains instructions for getting the license and using it in your pipeline.",[35,614,616],{"id":615},"limitations","Limitations",[15,618,619,622,623,625,626,630,631,633],{},[121,620,621],{},"No dynamic scaling."," The ",[43,624,229],{}," flag defines a fixed worker pool. Pathway's autoscaling mechanism (described in ",[608,627,629],{"href":628},"/developers/user-guide/advanced/worker-count-scaling/","Dynamic Worker Scaling",") is not available when a fixed address list is used. The number of processes is determined by the length of the ",[43,632,229],{}," list and cannot change at runtime.",[15,635,636,639],{},[121,637,638],{},"All processes must start for the pipeline to begin."," If one machine fails to start or takes too long, the others will wait indefinitely. There is no partial startup or degraded mode.",[15,641,642,645],{},[121,643,644],{},"At-least-once delivery."," As with all Pathway deployments, recovery after a crash replays data from the last committed checkpoint. Records written after the last checkpoint but before the crash may be processed again. Exactly-once semantics are available in the enterprise edition.",[15,647,648,651],{},[121,649,650],{},"Same binary on all machines."," All machines must run the same version of Pathway and the same pipeline code. Mismatched versions will cause a connection failure or undefined behavior.",[15,653,654,657],{},[121,655,656],{},"Firewall and networking."," Each machine must be able to reach all others on the specified ports. Pathway does not support NAT traversal or proxies between workers.",[35,659,661],{"id":660},"conclusion","Conclusion",[15,663,664],{},"To run a Pathway pipeline across multiple machines:",[666,667,668,677,686,692],"ol",{},[25,669,670,676],{},[121,671,672,673,675],{},"Choose one ",[43,674,45],{}," per process"," and ensure the ports are mutually reachable.",[25,678,679,682,683,240],{},[121,680,681],{},"Start each process independently"," using ",[43,684,685],{},"pathway spawn --addresses \u003Clist> --process-id \u003CN>",[25,687,688,691],{},[121,689,690],{},"Use shared persistent storage"," to enable fast recovery after restarts.",[25,693,694,703],{},[121,695,696,697,699,700],{},"Do not mix ",[43,698,229],{}," with ",[43,701,702],{},"--processes"," — the process count is derived from the address list.",[15,705,706,707,713,714,240],{},"If you have any questions, feel free to reach out on ",[608,708,712],{"href":709,"rel":710},"http://discord.com/invite/pathway",[711],"nofollow","Discord"," or open an issue on our ",[608,715,718],{"href":716,"rel":717},"https://github.com/pathwaycom/pathway/issues/",[711],"GitHub",[720,721,722],"style",{},"html pre.shiki code .s5Dmg, html code.shiki .s5Dmg{--shiki-default:#FFCB6B}html pre.shiki code .sfyAc, html code.shiki .sfyAc{--shiki-default:#C3E88D}html pre.shiki code .s0W1g, html code.shiki .s0W1g{--shiki-default:#BABED8}html pre.shiki code .sx098, html code.shiki .sx098{--shiki-default:#F78C6C}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sAklC, html code.shiki .sAklC{--shiki-default:#89DDFF}html pre.shiki code .s-wAU, html code.shiki .s-wAU{--shiki-default:#F07178}html pre.shiki code .sdLwU, html code.shiki .sdLwU{--shiki-default:#82AAFF}html pre.shiki code .s7ZW3, html code.shiki .s7ZW3{--shiki-default:#BABED8;--shiki-default-font-style:italic}",{"title":131,"searchDepth":153,"depth":153,"links":724},[725,726,732,733,734],{"id":37,"depth":153,"text":38},{"id":60,"depth":153,"text":61,"children":727},[728,729,730,731],{"id":65,"depth":164,"text":66},{"id":115,"depth":164,"text":116},{"id":394,"depth":164,"text":395},{"id":457,"depth":164,"text":458},{"id":602,"depth":153,"text":603},{"id":615,"depth":153,"text":616},{"id":660,"depth":153,"text":661},"This page describes how to distribute a Pathway pipeline across several machines","md",{},"/developers/user-guide/advanced/running_on_multiple_machines",{"title":5,"description":735},{"loc":738},"2.developers/4.user-guide/80.advanced/70.running_on_multiple_machines","vR2ogKWAJwCuUygk8ivXzYALCQsitV9pkTkqZ2SwKZo",[744],{"title":745,"path":746,"stem":747,"children":748,"page":766},"Developers","/developers","2.developers",[749,1607,1918],{"title":750,"path":751,"stem":752,"children":753,"page":766},"User Guide","/developers/user-guide","2.developers/4.user-guide",[754,809,1068,1189,1267,1384,1515,1531,1586],{"title":755,"meta":756,"icon":757,"path":758,"stem":759,"children":760,"page":766},"Introduction",{"icon":757},"heroicons:book-open","/developers/user-guide/introduction","2.developers/4.user-guide/10.introduction",[761,767,772,777,782,787,792,797,802],{"title":762,"path":763,"stem":764,"meta":765},"Welcome","/developers/user-guide/introduction/welcome","2.developers/4.user-guide/10.introduction/10.welcome",{"heading":766,"toc":766},false,{"title":768,"path":769,"stem":770,"meta":771},"Installation","/developers/user-guide/introduction/installation","2.developers/4.user-guide/10.introduction/20.installation",{"heading":766,"toc":766},{"title":773,"path":774,"stem":775,"meta":776},"Overview","/developers/user-guide/introduction/pathway-overview","2.developers/4.user-guide/10.introduction/30.pathway-overview",{},{"title":778,"path":779,"stem":780,"meta":781},"Starting Examples","/developers/user-guide/introduction/first_realtime_app_with_pathway","2.developers/4.user-guide/10.introduction/40.first_realtime_app_with_pathway",{},{"title":783,"path":784,"stem":785,"meta":786},"Core Concepts","/developers/user-guide/introduction/concepts","2.developers/4.user-guide/10.introduction/50.concepts",{},{"title":788,"path":789,"stem":790,"meta":791},"Why Pathway","/developers/user-guide/introduction/why-pathway","2.developers/4.user-guide/10.introduction/60.why-pathway",{},{"title":793,"path":794,"stem":795,"meta":796},"Licensing Guide","/developers/user-guide/introduction/licensing-guide","2.developers/4.user-guide/10.introduction/65.licensing-guide",{"heading":766,"toc":766},{"title":798,"path":799,"stem":800,"meta":801},"Streaming and Static Modes","/developers/user-guide/introduction/streaming-and-static-modes","2.developers/4.user-guide/10.introduction/70.streaming-and-static-modes",{},{"title":803,"path":804,"stem":805,"meta":806},"Batch Processing in Python","/developers/user-guide/introduction/batch-processing","2.developers/4.user-guide/10.introduction/80.batch-processing",{"thumbnail":807,"thumbnailFit":808},"/assets/content/documentation/pathway-batch.png","contain",{"title":810,"path":811,"stem":812,"children":813,"page":766},"Connect","/developers/user-guide/connect","2.developers/4.user-guide/20.connect",[814,826,831,837,842,847,860,870,875,896],{"title":815,"path":816,"stem":817,"meta":818},"Basic Data Types","/developers/user-guide/connect/datatypes","2.developers/4.user-guide/20.connect/20.datatypes",{"date":819,"tags":820,"keywords":822,"notebook_export_path":825},"2024-01-26",[821,74],"tutorial",[823,824],"type","schema","notebooks/tutorials/basic_datatypes.ipynb",{"title":827,"path":828,"stem":829,"meta":830},"Connectors in Pathway","/developers/user-guide/connect/connectors-in-pathway","2.developers/4.user-guide/20.connect/30.connectors-in-pathway",{},{"title":832,"path":833,"stem":834,"meta":835},"Connectors list","/developers/user-guide/connect/pathway-connectors","2.developers/4.user-guide/20.connect/35.pathway-connectors",{"layout":836,"aside":573,"toc":766,"single":573},"default",{"title":838,"path":839,"stem":840,"meta":841},"Defining Schema","/developers/user-guide/connect/schema","2.developers/4.user-guide/20.connect/40.schema",{},{"title":843,"path":844,"stem":845,"meta":846},"Generate Data Streams with the demo Module","/developers/user-guide/connect/artificial-streams","2.developers/4.user-guide/20.connect/50.artificial-streams",{},{"title":848,"path":849,"stem":850,"meta":851},"Automatic Generation of Schema Class","/developers/user-guide/connect/schema-generation","2.developers/4.user-guide/20.connect/60.schema-generation",{"date":852,"thumbnail":853,"tags":855,"keywords":856,"notebook_export_path":859},"2023-11-08",{"src":854},"/assets/content/blog/th-custom-connectors.png",[821,74],[824,823,857,858],"JSON","connectors","notebooks/tutorials/schema-generation.ipynb",{"title":861,"path":862,"stem":863,"meta":864},"Dealing with JSON Data Type","/developers/user-guide/connect/json_type","2.developers/4.user-guide/20.connect/70.json_type",{"date":865,"thumbnail":866,"tags":867,"keywords":868,"notebook_export_path":869},"2023-12-22","/assets/content/blog/th-json.png",[821,74],[857,823,824],"notebooks/tutorials/json_type.ipynb",{"title":871,"path":872,"stem":873,"meta":874},"Switching from Batch to Streaming","/developers/user-guide/connect/switch-from-batch-to-streaming","2.developers/4.user-guide/20.connect/80.switch-from-batch-to-streaming",{},{"title":876,"path":877,"stem":878,"meta":879},"Live Web Scraping","/developers/user-guide/connect/python-web-scraping","2.developers/4.user-guide/20.connect/90.python-web-scraping",{"date":880,"tags":881,"keywords":882,"tech_icons":890,"thumbnail":892,"deployment_tag":893,"docker_github_link":895},"2025-03-13",[821,858],[883,884,885,886,887,888,889],"connector","scraping","WEB","Python","input","streaming","web scraping",[891],"streamline:web","/assets/content/showcases/web_scraping/web-scraping-th.png",[894],"docker","https://github.com/pathwaycom/pathway/tree/main/examples/projects/web-scraping",{"title":897,"path":898,"stem":899,"children":900,"page":766},"Connectors","/developers/user-guide/connect/connectors","2.developers/4.user-guide/20.connect/99.connectors",[901,918,930,942,951,970,981,994,1002,1014,1024,1033,1045,1058],{"title":902,"path":903,"stem":904,"meta":905},"File System Connector","/developers/user-guide/connect/connectors/fs-connector","2.developers/4.user-guide/20.connect/99.connectors/05.fs-connector",{"date":819,"tags":906,"tech_icons":907,"deployment_tag":909,"keywords":911,"notebook_export_path":917},[821,74],[908],"lets-icons:file-fill",[910,894],"jupyter",[883,912,913,914,887,915,916,888],"file system","csv","json","output","static","notebooks/tutorials/fs_connector.ipynb",{"title":919,"path":920,"stem":921,"meta":922},"CSV connectors","/developers/user-guide/connect/connectors/csv_connectors","2.developers/4.user-guide/20.connect/99.connectors/10.csv_connectors",{"date":923,"thumbnail":924,"tags":925,"keywords":926,"tech_icons":928},"2023-01-12","/assets/content/blog/th-csv-connectors.png",[821,858],[883,927,887,915,916,888],"CSV",[929],"mdi:file-csv",{"title":931,"path":932,"stem":933,"meta":934},"Sending alerts to Slack","/developers/user-guide/connect/connectors/slack_send_alerts","2.developers/4.user-guide/20.connect/99.connectors/100.slack_send_alerts",{"date":935,"tags":936,"keywords":937,"tech_icons":940},"2024-02-16",[821,858],[883,938,939,915,888],"Slack","alerts",[941],"mdi:slack",{"title":943,"path":944,"stem":945,"meta":946},"Airbyte connectors","/developers/user-guide/connect/connectors/airbyte-connectors","2.developers/4.user-guide/20.connect/99.connectors/110.airbyte-connectors",{"tags":947,"keywords":948},[821,858],[883,949,950,887,916,888],"Airbyte","cloud",{"title":952,"path":953,"stem":954,"meta":955},"Using Pathway Debezium Connector for MongoDB","/developers/user-guide/connect/connectors/mongodb-debezium","2.developers/4.user-guide/20.connect/99.connectors/115.mongodb-debezium",{"date":956,"tags":957,"keywords":958,"tech_icons":966,"deployment_tag":968,"docker_github_link":969,"hideInConnectorList":573},"2024-10-30",[821,858],[883,959,960,961,962,963,964,965,887,915,888],"database","MongoDB","CDC","Debezium","Kafka","Zookeeper","Docker",[967],"material-symbols-light:database",[894],"https://github.com/pathwaycom/pathway/tree/main/examples/projects/debezium-mongodb-example",{"title":971,"path":972,"stem":973,"meta":974},"JSON Lines connectors","/developers/user-guide/connect/connectors/jsonlines-connector","2.developers/4.user-guide/20.connect/99.connectors/15.jsonlines-connector",{"date":975,"tags":976,"keywords":977,"tech_icons":979},"2024-02-20",[821,858],[883,978,857,887,915,916,888],"JSON Lines",[980],"lets-icons:json",{"title":982,"path":983,"stem":984,"meta":985},"Database connectors","/developers/user-guide/connect/connectors/database-connectors","2.developers/4.user-guide/20.connect/99.connectors/20.database-connectors",{"date":986,"thumbnail":987,"tags":988,"keywords":989,"tech_icons":991,"deployment_tag":992,"docker_github_link":993},"2023-01-19","/assets/content/blog/th-database-connectors.png",[821,858],[883,959,990,961,962,963,964,965,887,915,888],"PostgreSQL",[967],[894],"https://github.com/pathwaycom/pathway/tree/main/examples/projects/debezium-postgres-example",{"title":995,"path":996,"stem":997,"meta":998},"Custom Python connectors","/developers/user-guide/connect/connectors/custom-python-connectors","2.developers/4.user-guide/20.connect/99.connectors/30.custom-python-connectors",{"date":999,"thumbnail":854,"tags":1000,"keywords":1001},"2023-04-13",[821,858],[883,886,887,888],{"title":1003,"path":1004,"stem":1005,"meta":1006},"Kafka connectors","/developers/user-guide/connect/connectors/kafka_connectors","2.developers/4.user-guide/20.connect/99.connectors/30.kafka_connectors",{"date":1007,"thumbnail":1008,"tags":1009,"tech_icons":1010,"deployment_tag":1012,"keywords":1013},"2023-01-15","/assets/content/blog/th-kafka-connectors.png",[821,858],[1011],"mdi:apache-kafka",[894],[883,963,965,887,915,888],{"title":1015,"path":1016,"stem":1017,"meta":1018},"NATS connectors","/developers/user-guide/connect/connectors/nats-connectors","2.developers/4.user-guide/20.connect/99.connectors/33.nats-connectors",{"date":1019,"tags":1020,"deployment_tag":1021,"keywords":1022},"2024-12-06",[821,858],[894],[883,1023,965,887,915,888],"NATS",{"title":1025,"path":1026,"stem":1027,"meta":1028},"Python output connectors","/developers/user-guide/connect/connectors/python-output-connectors","2.developers/4.user-guide/20.connect/99.connectors/35.python-output-connectors",{"date":1029,"thumbnail":1030,"tags":1031,"keywords":1032},"2023-08-31","/assets/content/blog/th-output-connector.png",[821,858],[883,886,915,888],{"title":1034,"path":1035,"stem":1036,"meta":1037},"Google Drive connector","/developers/user-guide/connect/connectors/gdrive-connector","2.developers/4.user-guide/20.connect/99.connectors/70.gdrive-connector",{"date":1038,"thumbnail":1039,"tags":1040,"keywords":1041,"tech_icons":1043},"2023-12-14","/assets/content/blog/th-gdrive-connector.png",[821,858],[883,1042,950,887,916,888],"Google Drive",[1044],"simple-icons:googledrive",{"title":1046,"path":1047,"stem":1048,"meta":1049},"Switching from Kafka to Redpanda","/developers/user-guide/connect/connectors/switching-to-redpanda","2.developers/4.user-guide/20.connect/99.connectors/80.switching-to-redpanda",{"date":1050,"thumbnail":1051,"tags":1052,"keywords":1053,"deployment_tag":1055,"tech_icons":1056,"docker_github_link":1057,"hideInConnectorList":573},"2023-03-24","/assets/content/tutorials/redpanda/th-Kafka_vs_Redpanda.png",[821,858],[883,1054,963,964,965,887,915,888],"Redpanda",[894],[1011],"https://github.com/pathwaycom/pathway/tree/main/examples/projects/best-movies-example/redpanda-version",{"title":1059,"path":1060,"stem":1061,"meta":1062},"Custom WebSockets connectors","/developers/user-guide/connect/connectors/websockets-connectors","2.developers/4.user-guide/20.connect/99.connectors/90.websockets-connectors",{"date":1063,"tags":1064,"keywords":1065,"tech_icons":1067},"2023-01-24",[821,858],[883,1066,886,887,915,888],"WebSockets",[891],{"title":1069,"meta":1070,"path":1071,"stem":1072,"children":1073,"page":766},"Transform",{},"/developers/user-guide/data-transformation","2.developers/4.user-guide/30.data-transformation",[1074,1079,1093,1099,1105,1118,1134,1155,1171,1176],{"title":1075,"path":1076,"stem":1077,"meta":1078},"Table Operations Overview","/developers/user-guide/data-transformation/table-operations","2.developers/4.user-guide/30.data-transformation/10.table-operations",{},{"title":1080,"path":1081,"stem":1082,"meta":1083},"Asynchronous Transformations","/developers/user-guide/data-transformation/asynchronous-transformations","2.developers/4.user-guide/30.data-transformation/100.asynchronous-transformations",{"date":975,"thumbnail":131,"tags":1084,"keywords":1086,"notebook_export_path":1092},[821,1085],"engineering",[466,1087,1088,1089,1090,1091],"function","asynchronous","transformation","query","AsyncTransformer","notebooks/tutorials/asynctransformer.ipynb",{"title":1094,"path":1095,"stem":1096,"meta":1097},"Simple Join","/developers/user-guide/data-transformation/join-manual","2.developers/4.user-guide/30.data-transformation/20.join-manual",{"notebook_export_path":1098},"notebooks/tutorials/join_manual.ipynb",{"title":1100,"path":1101,"stem":1102,"meta":1103},"Groupby Reduce","/developers/user-guide/data-transformation/groupby-reduce-manual","2.developers/4.user-guide/30.data-transformation/30.groupby-reduce-manual",{"notebook_export_path":1104},"notebooks/tutorials/groupby_reduce_manual.ipynb",{"title":1106,"path":1107,"stem":1108,"meta":1109},"Writing Stateful Reducers","/developers/user-guide/data-transformation/custom-reducers","2.developers/4.user-guide/30.data-transformation/40.custom-reducers",{"date":1110,"thumbnail":866,"tags":1111,"keywords":1112,"notebook_export_path":1117},"2024-01-17",[821],[1113,1114,1115,1116],"reducers","aggregate","sumofsquares","median","notebooks/tutorials/custom_reducers.ipynb",{"title":1119,"path":1120,"stem":1121,"meta":1122},"Iterative Computations","/developers/user-guide/data-transformation/iterate","2.developers/4.user-guide/30.data-transformation/50.iterate",{"date":1123,"thumbnail":131,"tags":1124,"keywords":1125,"notebook_export_path":1133},"2023-12-28",[821,1085],[1126,1127,1128,1129,1130,1131,1132],"iterate","iteration","iterative","updates","connected components","collatz conjecture","newton method","notebooks/tutorials/iterate.ipynb",{"title":1135,"path":1136,"stem":1137,"children":1138,"meta":1152},"Indexes in Pathway","/developers/user-guide/data-transformation/indexes-in-pathway","2.developers/4.user-guide/30.data-transformation/60.indexes-in-pathway",[1139],{"title":1135,"path":1136,"stem":1137,"meta":1140},{"date":1141,"thumbnail":1142,"tags":1143,"keywords":1144,"notebook_export_path":1151},"2023-11-15","/assets/content/blog/th-computing-pagerank.png",[821,1085],[1145,1146,1147,1148,1149,1150],"index","indexing","join","asof join","asof_now","KNN","notebooks/tutorials/indexes.ipynb",{"date":1141,"thumbnail":1142,"tags":1153,"keywords":1154,"notebook_export_path":1151},[821,1085],[1145,1146,1147,1148,1149,1150],{"title":1156,"path":1157,"stem":1158,"children":1159,"meta":1168},"Indexing from 'groupby' and Single-row Tables","/developers/user-guide/data-transformation/indexing-grouped-tables","2.developers/4.user-guide/30.data-transformation/70.indexing-grouped-tables",[1160],{"title":1156,"path":1157,"stem":1158,"meta":1161},{"date":1162,"thumbnail":1142,"tags":1163,"keywords":1164},"2023-03-31",[821,74],[1165,1166,1167],"groupby","ix_ref","single-row table",{"date":1162,"thumbnail":1142,"tags":1169,"keywords":1170},[821,74],[1165,1166,1167],{"title":1172,"path":1173,"stem":1174,"meta":1175},"SQL API","/developers/user-guide/data-transformation/sql","2.developers/4.user-guide/30.data-transformation/80.sql",{"redirection":573},{"title":1177,"path":1178,"stem":1179,"meta":1180},"User-defined Functions","/developers/user-guide/data-transformation/user-defined-functions","2.developers/4.user-guide/30.data-transformation/90.user-defined-functions",{"date":1181,"thumbnail":131,"tags":1182,"keywords":1183,"notebook_export_path":1188},"2024-02-21",[821,1085],[466,1184,1087,1185,1089,1186,1187],"udf","apply","cache","timeout","notebooks/tutorials/udf.ipynb",{"title":1190,"path":1191,"stem":1192,"children":1193,"page":766},"Temporal Data","/developers/user-guide/temporal-data","2.developers/4.user-guide/40.temporal-data",[1194,1200,1205,1220,1232,1244,1258],{"title":1195,"path":1196,"stem":1197,"meta":1198},"Windowby Reduce","/developers/user-guide/temporal-data/windows-manual","2.developers/4.user-guide/40.temporal-data/10.windows-manual",{"notebook_export_path":1199},"notebooks/tutorials/windowby_manual.ipynb",{"title":1201,"path":1202,"stem":1203,"meta":1204},"Late Data and Cutoffs","/developers/user-guide/temporal-data/behaviors","2.developers/4.user-guide/40.temporal-data/20.behaviors",{},{"title":1206,"path":1207,"stem":1208,"meta":1209},"Controlling Temporal Behavior of Windows","/developers/user-guide/temporal-data/windows_with_behaviors","2.developers/4.user-guide/40.temporal-data/30.windows_with_behaviors",{"date":1210,"thumbnail":1211,"keywords":1212,"notebook_export_path":1219},"2024-01-08","assets/content/tutorials/clickstream_window_join/clickstream-window-join-th.png",[1213,1214,1215,1216,1217,1218],"windowby","behavior","late data","delay","cutoff","out-of-order data","notebooks/tutorials/windows_temporal_behavior.ipynb",{"title":1221,"path":1222,"stem":1223,"meta":1224},"ASOF Join","/developers/user-guide/temporal-data/asof-join","2.developers/4.user-guide/40.temporal-data/40.asof-join",{"date":1225,"thumbnail":1226,"tags":1227,"keywords":1228,"notebook_export_path":1231},"2023-05-24","/assets/content/tutorials/finance_ts_asof_join/asof-join-tutorial-th.png",[821,1085],[1148,1229,1230],"stock prices","financial data analysis","notebooks/tutorials/asof_join.ipynb",{"title":1233,"path":1234,"stem":1235,"meta":1236},"Interval Join","/developers/user-guide/temporal-data/interval-join","2.developers/4.user-guide/40.temporal-data/50.interval-join",{"date":1237,"thumbnail":1238,"tags":1239,"keywords":1240,"notebook_export_path":1243},"2023-05-22","assets/content/tutorials/fleet_eta_interval_join/fleet-eta-interval-join-th.png",[821,1085],[1241,1242],"interval join","ETA","notebooks/tutorials/interval_join.ipynb",{"title":1245,"path":1246,"stem":1247,"meta":1248},"Window Join","/developers/user-guide/temporal-data/window-join","2.developers/4.user-guide/40.temporal-data/60.window-join",{"date":1249,"thumbnail":1250,"tags":1251,"keywords":1252,"notebook_export_path":1257},"2023-06-14","/assets/content/tutorials/clickstream_window_join/clickstream-window-join-th.png",[821,1085],[1253,1254,1255,1256],"window","behavior analysis","clickstream","conversion rate","notebooks/tutorials/window_join.ipynb",{"title":1259,"path":1260,"stem":1261,"meta":1262},"Controlling Temporal Behavior of Interval Join","/developers/user-guide/temporal-data/temporal_behavior","2.developers/4.user-guide/40.temporal-data/70.temporal_behavior",{"date":1263,"thumbnail":1238,"tags":1264,"keywords":1265,"notebook_export_path":1266},"2023-11-28",[821,1085],[1241,1214,1215,1216,1217,1218],"notebooks/tutorials/interval_join_temporal_behavior.ipynb",{"title":1268,"meta":1269,"path":1270,"stem":1271,"children":1272,"page":766},"LLM tooling",{},"/developers/user-guide/llm-xpack","2.developers/4.user-guide/50.llm-xpack",[1273,1285,1294,1309,1321,1333,1345,1355,1365,1375],{"title":1274,"path":1275,"stem":1276,"meta":1277},"Introduction to the LLM xpack","/developers/user-guide/llm-xpack/overview","2.developers/4.user-guide/50.llm-xpack/10.overview",{"date":1278,"thumbnail":131,"tags":1279,"keywords":1281},"2024-02-14",[821,1280],"LLM",[1280,1282,1283,1284],"GPT","OpenAI","Gemini",{"title":1286,"path":1287,"stem":1288,"meta":1289},"Create your own RAG","/developers/user-guide/llm-xpack/llm-app-pathway","2.developers/4.user-guide/50.llm-xpack/20.llm-app-pathway",{"date":1290,"thumbnail":131,"tags":1291,"keywords":1293},"2025-03-28",[821,1280,1292],"RAG",[1280,1282,1283,1146],{"title":1295,"path":1296,"stem":1297,"children":1298,"meta":1306},"Document Indexing","/developers/user-guide/llm-xpack/docs-indexing","2.developers/4.user-guide/50.llm-xpack/30.docs-indexing",[1299],{"title":1295,"path":1296,"stem":1297,"meta":1300},{"date":1301,"thumbnail":131,"tags":1302,"keywords":1305},"2025-01-13",[821,1146,1303,1304],"document storage","retrieval",[1280,1282,1283,1284],{"date":1301,"thumbnail":131,"tags":1307,"keywords":1308},[821,1146,1303,1304],[1280,1282,1283,1284],{"title":1310,"path":1311,"stem":1312,"meta":1313},"Pathway MCP Server","/developers/user-guide/llm-xpack/pathway_mcp_server","2.developers/4.user-guide/50.llm-xpack/40.pathway_mcp_server",{"date":1314,"thumbnail":131,"tags":1315,"keywords":1316},"2025-08-01",[821,1085],[1317,1318,1319,1320],"MCP","MCP server","API","protocol",{"title":1322,"path":1323,"stem":1324,"meta":1325},"Claude Desktop","/developers/user-guide/llm-xpack/pathway-mcp-claude-desktop","2.developers/4.user-guide/50.llm-xpack/41.pathway-mcp-claude-desktop",{"date":1326,"thumbnail":131,"tags":1327,"keywords":1329},"2025-08-19",[821,1085,1328],"claude",[1317,1322,1330,1331,1332],"real-time data","document store","statistics",{"title":1334,"path":1335,"stem":1336,"meta":1337},"Parsers","/developers/user-guide/llm-xpack/parsers","2.developers/4.user-guide/50.llm-xpack/50.parsers",{"date":1338,"tags":1339,"keywords":1340},"2024-06-04",[821,1280],[1280,1341,1342,1343,1344],"unstructured","docling","parsers","ocr",{"title":1346,"path":1347,"stem":1348,"meta":1349},"Chunking text","/developers/user-guide/llm-xpack/splitters","2.developers/4.user-guide/50.llm-xpack/60.splitters",{"date":1350,"thumbnail":131,"tags":1351,"keywords":1354},"2025-02-04",[1352,1353],"splitters","chunking",[1343,1353],{"title":1356,"path":1357,"stem":1358,"meta":1359},"Embedders","/developers/user-guide/llm-xpack/embedders","2.developers/4.user-guide/50.llm-xpack/70.embedders",{"date":1350,"thumbnail":131,"tags":1360,"keywords":1362},[821,1361],"embedder",[1280,1282,1283,1284,1363,1364],"LiteLLM","Embedder",{"title":1366,"path":1367,"stem":1368,"meta":1369},"LLM Chats","/developers/user-guide/llm-xpack/llm-chats","2.developers/4.user-guide/50.llm-xpack/80.llm-chats",{"date":1370,"thumbnail":131,"tags":1371,"keywords":1373},"2025-01-30",[821,1280,1372,1366],"LLM Wrappers",[1280,1282,1283,1284,1363,1374],"Wrapper",{"title":1376,"path":1377,"stem":1378,"meta":1379},"Rerankers","/developers/user-guide/llm-xpack/rerankers","2.developers/4.user-guide/50.llm-xpack/90.rerankers",{"date":1350,"thumbnail":131,"tags":1380,"keywords":1382},[821,1381],"reranker",[1280,1383],"Reranker",{"title":1385,"meta":1386,"path":1387,"stem":1388,"children":1389,"page":766},"Deploy",{},"/developers/user-guide/deployment","2.developers/4.user-guide/60.deployment",[1390,1395,1400,1417,1433,1438,1443,1448,1455,1460,1465,1478,1490,1495,1505],{"title":1391,"path":1392,"stem":1393,"meta":1394},"Cloud Deployment of Pathway","/developers/user-guide/deployment/cloud-deployment","2.developers/4.user-guide/60.deployment/10.cloud-deployment",{},{"title":1396,"path":1397,"stem":1398,"meta":1399},"Deploy to GCP","/developers/user-guide/deployment/gcp-deploy","2.developers/4.user-guide/60.deployment/15.gcp-deploy",{},{"title":1401,"path":1402,"stem":1403,"meta":1404},"Deploy to AWS Cloud","/developers/user-guide/deployment/aws-fargate-deploy","2.developers/4.user-guide/60.deployment/20.aws-fargate-deploy",{"date":1405,"tags":1406,"thumbnail":1409,"keywords":1411,"docker_github_link":1416,"deployButtons":766},"2024-08-16",[1407,1408],"showcase","data-pipeline",{"src":1410},"/assets/content/documentation/aws/aws-fargate-overview-th.png",[1412,1413,1414,965,1415],"AWS","Fargate","cloud deployment","AWS Fargate","https://github.com/pathwaycom/pathway/tree/main/examples/projects/aws-fargate-deploy",{"title":1418,"path":1419,"stem":1420,"meta":1421},"Deploy to Azure","/developers/user-guide/deployment/azure-aci-deploy","2.developers/4.user-guide/60.deployment/25.azure-aci-deploy",{"date":1422,"tags":1423,"thumbnail":1424,"keywords":1426,"docker_github_link":1432,"deployButtons":766},"2024-11-20",[1407,1408],{"src":1425,"contain":573},"/assets/content/documentation/azure/azure-aci-overview-th.png",[1427,1428,1414,965,1429,1430,1431],"Azure","ACI","Azure ACI","Azure Marketplace","deployment","https://github.com/pathwaycom/pathway/tree/main/examples/projects/azure-aci-deploy",{"title":1434,"path":1435,"stem":1436,"meta":1437},"Deploy with Render","/developers/user-guide/deployment/render-deploy","2.developers/4.user-guide/60.deployment/30.render-deploy",{},{"title":1439,"path":1440,"stem":1441,"meta":1442},"Deploy to Nebius AI Cloud","/developers/user-guide/deployment/nebius-deploy","2.developers/4.user-guide/60.deployment/32.nebius-deploy",{},{"title":1444,"path":1445,"stem":1446,"meta":1447},"Notebook-to-Docker Conversion","/developers/user-guide/deployment/jupyter-docker","2.developers/4.user-guide/60.deployment/35.jupyter-docker",{},{"title":1449,"path":1450,"stem":1451,"meta":1452},"Tutorial: From Jupyter to Deploy","/developers/user-guide/deployment/from-jupyter-to-deploy","2.developers/4.user-guide/60.deployment/40.from-jupyter-to-deploy",{"date":1453,"project_github_link":1454},"2023-11-29","https://github.com/pathwaycom/pathway/tree/main/examples/projects/from_jupyter_to_deploy",{"title":1456,"path":1457,"stem":1458,"meta":1459},"CI/CD","/developers/user-guide/deployment/integration","2.developers/4.user-guide/60.deployment/45.integration",{},{"title":1461,"path":1462,"stem":1463,"meta":1464},"Docker Deployment of Pathway","/developers/user-guide/deployment/docker-deployment","2.developers/4.user-guide/60.deployment/5.docker-deployment",{},{"title":1466,"path":1467,"stem":1468,"meta":1469},"Monitoring Pathway Instance","/developers/user-guide/deployment/pathway-monitoring","2.developers/4.user-guide/60.deployment/50.pathway-monitoring",{"date":1470,"thumbnail":1471,"tags":1472,"keywords":1473},"2024-05-27","/assets/content/blog/th-prometheus.png",[821,1085],[1474,1475,1476,1477],"monitoring","OpenTelemetry","Grafana","metrics",{"title":1479,"path":1480,"stem":1481,"meta":1482},"Pathway Web Dashboard","/developers/user-guide/deployment/web-dashboard","2.developers/4.user-guide/60.deployment/52.web-dashboard",{"date":1483,"tags":1484,"keywords":1485},"2026-01-13",[821,1085],[1486,1487,1474,1488,1489,1477],"Web Dashboard","UI","graph","charts",{"title":1491,"path":1492,"stem":1493,"meta":1494},"Persistence in Pathway","/developers/user-guide/deployment/persistence","2.developers/4.user-guide/60.deployment/55.persistence",{},{"title":1496,"path":1497,"stem":1498,"meta":1499},"Persistence in Pathway: How to Resume the Interrupted Computation","/developers/user-guide/deployment/persistence_recovery","2.developers/4.user-guide/60.deployment/60.persistence_recovery",{"date":1500,"thumbnail":131,"tags":1501,"keywords":1503},"2023-11-02",[821,1085,1502],"dataflow management",[486,1504],"recovery",{"title":1506,"path":1507,"stem":1508,"meta":1509},"Persistence in Pathway: How to Add New Data without Full Computation Restart","/developers/user-guide/deployment/persistence_restart_with_new_data","2.developers/4.user-guide/60.deployment/65.persistence_restart_with_new_data",{"date":1510,"thumbnail":131,"tags":1511,"keywords":1512},"2023-11-14",[821,1085,1502],[486,1513,1514],"optimization","restart",{"title":1516,"path":1517,"stem":1518,"children":1519,"page":766},"Migrating","/developers/user-guide/migrating","2.developers/4.user-guide/70.migrating",[1520,1526],{"title":1521,"path":1522,"stem":1523,"meta":1524},"Coming from Pandas","/developers/user-guide/migrating/migrate-from-pandas","2.developers/4.user-guide/70.migrating/10.migrate-from-pandas",{"notebook_export_path":1525},"notebooks/tutorials/from_pandas.ipynb",{"title":1527,"path":1528,"stem":1529,"meta":1530},"Pandas Cheat Sheet","/developers/user-guide/migrating/pandas-cheat-sheet","2.developers/4.user-guide/70.migrating/20.pandas-cheat-sheet",{},{"title":1532,"path":1533,"stem":1534,"children":1535,"page":766},"Advanced","/developers/user-guide/advanced","2.developers/4.user-guide/80.advanced",[1536,1541,1551,1557,1570,1575,1580,1584],{"title":1537,"path":1538,"stem":1539,"meta":1540},"Architecture","/developers/user-guide/advanced/worker-architecture","2.developers/4.user-guide/80.advanced/10.worker-architecture",{},{"title":1542,"path":1543,"stem":1544,"meta":1545},"Setting up Cache in Asynchronous Transformations","/developers/user-guide/advanced/function_calls_caching","2.developers/4.user-guide/80.advanced/20.function_calls_caching",{"date":1546,"thumbnail":131,"tags":1547,"keywords":1548},"2023-11-30",[821,1085,1502],[486,1513,1549,1550],"async_transformer","caching",{"title":1552,"path":1553,"stem":1554,"meta":1555},"Data Model Consistency","/developers/user-guide/advanced/consistency","2.developers/4.user-guide/80.advanced/30.consistency",{"notebook_export_path":1556},"notebooks/tutorials/consistency.ipynb",{"title":1558,"path":1559,"stem":1560,"meta":1561},"Writing declarative over imperative pipelines","/developers/user-guide/advanced/declarative_vs_imperative","2.developers/4.user-guide/80.advanced/40.declarative_vs_imperative",{"date":1562,"thumbnail":131,"tags":1563,"keywords":1564,"notebook_export_path":1569},"2025-11-25",[821,1085],[1565,1566,1567,1568,1126],"declarative","imperative","ordered","splitting","notebooks/tutorials/declarative_vs_imperative.ipynb",{"title":1571,"path":1572,"stem":1573,"meta":1574},"Best Practices","/developers/user-guide/advanced/best-practices","2.developers/4.user-guide/80.advanced/5.best-practices",{},{"title":1576,"path":1577,"stem":1578,"meta":1579},"How Pathway Connectors Work","/developers/user-guide/advanced/how_pathway_connectors_work","2.developers/4.user-guide/80.advanced/50.how_pathway_connectors_work",{},{"title":629,"path":1581,"stem":1582,"meta":1583},"/developers/user-guide/advanced/worker_count_scaling","2.developers/4.user-guide/80.advanced/60.worker_count_scaling",{},{"title":5,"path":738,"stem":741,"meta":1585},{},{"title":1587,"meta":1588,"path":1589,"stem":1590,"children":1591,"page":766},"Help And Updates",{},"/developers/user-guide/development","2.developers/4.user-guide/90.development",[1592,1597,1602],{"title":1593,"path":1594,"stem":1595,"meta":1596},"Troubleshooting","/developers/user-guide/development/troubleshooting","2.developers/4.user-guide/90.development/10.troubleshooting",{},{"title":1598,"path":1599,"stem":1600,"meta":1601},"Changelog","/developers/user-guide/development/changelog","2.developers/4.user-guide/90.development/20.changelog",{"toc":766},{"title":1603,"path":1604,"stem":1605,"meta":1606},"Get help","/developers/user-guide/development/get-help","2.developers/4.user-guide/90.development/30.get-help",{},{"title":1608,"meta":1609,"path":1610,"stem":1611,"children":1612,"page":766},"API docs",{},"/developers/api-docs","2.developers/5.API-docs",[1613,1618,1623,1629,1634,1639,1644,1712,1717,1722,1727,1735,1908,1913],{"title":1614,"path":1615,"stem":1616,"meta":1617},"Pathway API","/developers/api-docs/pathway","2.developers/5.API-docs/1.pathway",{"sidebar":1319},{"title":1619,"path":1620,"stem":1621,"meta":1622},"pw.reducers","/developers/api-docs/reducers","2.developers/5.API-docs/10.reducers",{"sidebar":1319},{"title":1624,"path":1625,"stem":1626,"meta":1627},"pw.sql","/developers/api-docs/sql-api","2.developers/5.API-docs/11.SQL-API",{"notebook_export_path":1628},"notebooks/tutorials/sql_api.ipynb",{"title":1630,"path":1631,"stem":1632,"meta":1633},"pw.temporal","/developers/api-docs/temporal","2.developers/5.API-docs/12.temporal",{"sidebar":1319},{"title":1635,"path":1636,"stem":1637,"meta":1638},"pw.udfs","/developers/api-docs/udfs","2.developers/5.API-docs/13.udfs",{"sidebar":1319},{"title":1640,"path":1641,"stem":1642,"meta":1643},"pw.xpacks.connectors","/developers/api-docs/pathway-xpacks-sharepoint","2.developers/5.API-docs/14.pathway-xpacks-sharepoint",{"sidebar":1319},{"title":1645,"path":1646,"stem":1647,"children":1648,"meta":1711},"pw.xpacks.llm","/developers/api-docs/pathway-xpacks-llm","2.developers/5.API-docs/15.pathway-xpacks-llm/index",[1649,1651,1656,1661,1666,1671,1676,1681,1686,1691,1696,1701,1706],{"title":1645,"path":1646,"stem":1647,"meta":1650},{"sidebar":1319},{"title":1652,"path":1653,"stem":1654,"meta":1655},"pw.xpacks.llm.llms","/developers/api-docs/pathway-xpacks-llm/llms","2.developers/5.API-docs/15.pathway-xpacks-llm/1.llms",{"sidebar":1319},{"title":1657,"path":1658,"stem":1659,"meta":1660},"pw.xpacks.llm.servers","/developers/api-docs/pathway-xpacks-llm/servers","2.developers/5.API-docs/15.pathway-xpacks-llm/10.servers",{"sidebar":1319},{"title":1662,"path":1663,"stem":1664,"meta":1665},"pw.xpacks.llm.utils","/developers/api-docs/pathway-xpacks-llm/utils","2.developers/5.API-docs/15.pathway-xpacks-llm/11.utils",{"sidebar":1319},{"title":1667,"path":1668,"stem":1669,"meta":1670},"pw.xpacks.llm.mcp_server","/developers/api-docs/pathway-xpacks-llm/mcp_server","2.developers/5.API-docs/15.pathway-xpacks-llm/12.mcp_server",{"sidebar":1319},{"title":1672,"path":1673,"stem":1674,"meta":1675},"pw.xpacks.llm.embedders","/developers/api-docs/pathway-xpacks-llm/embedders","2.developers/5.API-docs/15.pathway-xpacks-llm/2.embedders",{"sidebar":1319},{"title":1677,"path":1678,"stem":1679,"meta":1680},"pw.xpacks.llm.parsers","/developers/api-docs/pathway-xpacks-llm/parsers","2.developers/5.API-docs/15.pathway-xpacks-llm/3.parsers",{"sidebar":1319},{"title":1682,"path":1683,"stem":1684,"meta":1685},"pw.xpacks.llm.splitters","/developers/api-docs/pathway-xpacks-llm/splitters","2.developers/5.API-docs/15.pathway-xpacks-llm/4.splitters",{"sidebar":1319},{"title":1687,"path":1688,"stem":1689,"meta":1690},"pw.xpacks.llm.vector_store","/developers/api-docs/pathway-xpacks-llm/vectorstore","2.developers/5.API-docs/15.pathway-xpacks-llm/5.vectorstore",{"sidebar":1319},{"title":1692,"path":1693,"stem":1694,"meta":1695},"pw.xpacks.llm.document_store","/developers/api-docs/pathway-xpacks-llm/document_store","2.developers/5.API-docs/15.pathway-xpacks-llm/6.document_store",{"sidebar":1319},{"title":1697,"path":1698,"stem":1699,"meta":1700},"pw.xpacks.llm.question_answering","/developers/api-docs/pathway-xpacks-llm/question_answering","2.developers/5.API-docs/15.pathway-xpacks-llm/7.question_answering",{"sidebar":1319},{"title":1702,"path":1703,"stem":1704,"meta":1705},"pw.xpacks.llm.prompts","/developers/api-docs/pathway-xpacks-llm/prompts","2.developers/5.API-docs/15.pathway-xpacks-llm/8.prompts",{"sidebar":1319},{"title":1707,"path":1708,"stem":1709,"meta":1710},"pw.xpacks.llm.rerankers","/developers/api-docs/pathway-xpacks-llm/rerankers","2.developers/5.API-docs/15.pathway-xpacks-llm/9.rerankers",{"sidebar":1319},{"sidebar":1319},{"title":1713,"path":1714,"stem":1715,"meta":1716},"pw.Table","/developers/api-docs/pathway-table","2.developers/5.API-docs/2.pathway-table",{"sidebar":1319},{"title":1718,"path":1719,"stem":1720,"meta":1721},"pw.debug","/developers/api-docs/debug","2.developers/5.API-docs/4.debug",{"sidebar":1319},{"title":1723,"path":1724,"stem":1725,"meta":1726},"pw.demo","/developers/api-docs/pathway-demo","2.developers/5.API-docs/5.pathway-demo",{"sidebar":1319},{"title":1728,"path":1729,"stem":1730,"children":1731,"meta":1734},"pw.indexing","/developers/api-docs/indexing","2.developers/5.API-docs/6.indexing",[1732],{"title":1728,"path":1729,"stem":1730,"meta":1733},{"sidebar":1319},{"sidebar":1319},{"title":1736,"path":1737,"stem":1738,"children":1739,"meta":1907},"pw.io","/developers/api-docs/pathway-io","2.developers/5.API-docs/7.pathway-io/index",[1740,1742,1747,1752,1757,1762,1767,1772,1777,1782,1787,1792,1797,1802,1807,1812,1817,1822,1827,1832,1837,1842,1847,1852,1857,1862,1867,1872,1877,1882,1887,1892,1897,1902],{"title":1736,"path":1737,"stem":1738,"meta":1741},{"sidebar":1319},{"title":1743,"path":1744,"stem":1745,"meta":1746},"pw.io.airbyte","/developers/api-docs/pathway-io/airbyte","2.developers/5.API-docs/7.pathway-io/110.airbyte",{"sidebar":1319},{"title":1748,"path":1749,"stem":1750,"meta":1751},"pw.io.bigquery","/developers/api-docs/pathway-io/bigquery","2.developers/5.API-docs/7.pathway-io/120.bigquery",{"sidebar":1319},{"title":1753,"path":1754,"stem":1755,"meta":1756},"pw.io.csv","/developers/api-docs/pathway-io/csv","2.developers/5.API-docs/7.pathway-io/130.csv",{"sidebar":1319},{"title":1758,"path":1759,"stem":1760,"meta":1761},"pw.io.debezium","/developers/api-docs/pathway-io/debezium","2.developers/5.API-docs/7.pathway-io/140.debezium",{"sidebar":1319},{"title":1763,"path":1764,"stem":1765,"meta":1766},"pw.io.deltalake","/developers/api-docs/pathway-io/deltalake","2.developers/5.API-docs/7.pathway-io/150.deltalake",{"sidebar":1319},{"title":1768,"path":1769,"stem":1770,"meta":1771},"pw.io.dynamodb","/developers/api-docs/pathway-io/dynamodb","2.developers/5.API-docs/7.pathway-io/155.dynamodb",{"sidebar":1319},{"title":1773,"path":1774,"stem":1775,"meta":1776},"pw.io.elasticsearch","/developers/api-docs/pathway-io/elasticsearch","2.developers/5.API-docs/7.pathway-io/160.elasticsearch",{"sidebar":1319},{"title":1778,"path":1779,"stem":1780,"meta":1781},"pw.io.fs","/developers/api-docs/pathway-io/fs","2.developers/5.API-docs/7.pathway-io/170.fs",{"sidebar":1319},{"title":1783,"path":1784,"stem":1785,"meta":1786},"pw.io.gdrive","/developers/api-docs/pathway-io/gdrive","2.developers/5.API-docs/7.pathway-io/180.gdrive",{"sidebar":1319},{"title":1788,"path":1789,"stem":1790,"meta":1791},"pw.io.http","/developers/api-docs/pathway-io/http","2.developers/5.API-docs/7.pathway-io/190.http",{"sidebar":1319},{"title":1793,"path":1794,"stem":1795,"meta":1796},"pw.io.iceberg","/developers/api-docs/pathway-io/iceberg","2.developers/5.API-docs/7.pathway-io/195.iceberg",{"sidebar":1319},{"title":1798,"path":1799,"stem":1800,"meta":1801},"pw.io.jsonlines","/developers/api-docs/pathway-io/jsonlines","2.developers/5.API-docs/7.pathway-io/200.jsonlines",{"sidebar":1319},{"title":1803,"path":1804,"stem":1805,"meta":1806},"pw.io.kafka","/developers/api-docs/pathway-io/kafka","2.developers/5.API-docs/7.pathway-io/210.kafka",{"sidebar":1319},{"title":1808,"path":1809,"stem":1810,"meta":1811},"pw.io.kinesis","/developers/api-docs/pathway-io/kinesis","2.developers/5.API-docs/7.pathway-io/215.kinesis",{"sidebar":1319},{"title":1813,"path":1814,"stem":1815,"meta":1816},"pw.io.logstash","/developers/api-docs/pathway-io/logstash","2.developers/5.API-docs/7.pathway-io/220.logstash",{"sidebar":1319},{"title":1818,"path":1819,"stem":1820,"meta":1821},"pw.io.milvus","/developers/api-docs/pathway-io/milvus","2.developers/5.API-docs/7.pathway-io/225.milvus",{"sidebar":1319},{"title":1823,"path":1824,"stem":1825,"meta":1826},"pw.io.minio","/developers/api-docs/pathway-io/minio","2.developers/5.API-docs/7.pathway-io/230.minio",{"sidebar":1319},{"title":1828,"path":1829,"stem":1830,"meta":1831},"pw.io.mongodb","/developers/api-docs/pathway-io/mongodb","2.developers/5.API-docs/7.pathway-io/235.mongodb",{"sidebar":1319},{"title":1833,"path":1834,"stem":1835,"meta":1836},"pw.io.mssql","/developers/api-docs/pathway-io/mssql","2.developers/5.API-docs/7.pathway-io/236.mssql",{"sidebar":1319},{"title":1838,"path":1839,"stem":1840,"meta":1841},"pw.io.mysql","/developers/api-docs/pathway-io/mysql","2.developers/5.API-docs/7.pathway-io/237.mysql",{"sidebar":1319},{"title":1843,"path":1844,"stem":1845,"meta":1846},"pw.io.nats","/developers/api-docs/pathway-io/nats","2.developers/5.API-docs/7.pathway-io/238.nats",{"sidebar":1319},{"title":1848,"path":1849,"stem":1850,"meta":1851},"pw.io.null","/developers/api-docs/pathway-io/null","2.developers/5.API-docs/7.pathway-io/240.null",{"sidebar":1319},{"title":1853,"path":1854,"stem":1855,"meta":1856},"pw.io.mqtt","/developers/api-docs/pathway-io/mqtt","2.developers/5.API-docs/7.pathway-io/245.mqtt",{"sidebar":1319},{"title":1858,"path":1859,"stem":1860,"meta":1861},"pw.io.plaintext","/developers/api-docs/pathway-io/plaintext","2.developers/5.API-docs/7.pathway-io/250.plaintext",{"sidebar":1319},{"title":1863,"path":1864,"stem":1865,"meta":1866},"pw.io.postgres","/developers/api-docs/pathway-io/postgres","2.developers/5.API-docs/7.pathway-io/260.postgres",{"sidebar":1319},{"title":1868,"path":1869,"stem":1870,"meta":1871},"pw.io.pubsub","/developers/api-docs/pathway-io/pubsub","2.developers/5.API-docs/7.pathway-io/270.pubsub",{"sidebar":1319},{"title":1873,"path":1874,"stem":1875,"meta":1876},"pw.io.pyfilesystem","/developers/api-docs/pathway-io/pyfilesystem","2.developers/5.API-docs/7.pathway-io/280.pyfilesystem",{"sidebar":1319},{"title":1878,"path":1879,"stem":1880,"meta":1881},"pw.io.python","/developers/api-docs/pathway-io/python","2.developers/5.API-docs/7.pathway-io/290.python",{"sidebar":1319},{"title":1883,"path":1884,"stem":1885,"meta":1886},"pw.io.questdb","/developers/api-docs/pathway-io/questdb","2.developers/5.API-docs/7.pathway-io/295.questdb",{"sidebar":1319},{"title":1888,"path":1889,"stem":1890,"meta":1891},"pw.io.redpanda","/developers/api-docs/pathway-io/redpanda","2.developers/5.API-docs/7.pathway-io/300.redpanda",{"sidebar":1319},{"title":1893,"path":1894,"stem":1895,"meta":1896},"pw.io.s3","/developers/api-docs/pathway-io/s3","2.developers/5.API-docs/7.pathway-io/310.s3",{"sidebar":1319},{"title":1898,"path":1899,"stem":1900,"meta":1901},"pw.io.slack","/developers/api-docs/pathway-io/slack","2.developers/5.API-docs/7.pathway-io/320.slack",{"sidebar":1319},{"title":1903,"path":1904,"stem":1905,"meta":1906},"pw.io.sqlite","/developers/api-docs/pathway-io/sqlite","2.developers/5.API-docs/7.pathway-io/330.sqlite",{"sidebar":1319},{"sidebar":1319},{"title":1909,"path":1910,"stem":1911,"meta":1912},"pw.ml","/developers/api-docs/ml","2.developers/5.API-docs/8.ML",{"sidebar":1319},{"title":1914,"path":1915,"stem":1916,"meta":1917},"pw.persistence","/developers/api-docs/persistence-api","2.developers/5.API-docs/9.persistence-api",{"sidebar":1319},{"title":1919,"path":1920,"stem":1921,"children":1922,"meta":2653},"Pathway Templates","/developers/templates","2.developers/7.templates/1.index",[1923,1925,1930,1935,1940,1944,1960,1999,2025,2451],{"title":1919,"path":1920,"stem":1921,"meta":1924},{"navTitle":762,"layout":836,"aside":573,"toc":766,"single":573},{"title":1926,"path":1927,"stem":1928,"meta":1929},"Run a template","/developers/templates/run-a-template","2.developers/7.templates/20.run-a-template",{"heading":766,"toc":766},{"title":1931,"path":1932,"stem":1933,"meta":1934},"Customizing a RAG Template with YAML","/developers/templates/configure-yaml","2.developers/7.templates/30.configure-yaml",{"heading":766},{"title":1936,"path":1937,"stem":1938,"meta":1939},"How to Use Your Own Components in YAML Configuration","/developers/templates/custom-components","2.developers/7.templates/35.custom-components",{"heading":766},{"title":793,"path":1941,"stem":1942,"meta":1943},"/developers/templates/licensing-guide","2.developers/7.templates/38.licensing-guide",{"heading":766,"toc":766},{"title":1945,"meta":1946,"path":1947,"stem":1948,"children":1949,"page":766},"YAML Snippets",{},"/developers/templates/yaml-snippets","2.developers/7.templates/39.yaml-snippets",[1950,1955],{"title":1951,"path":1952,"stem":1953,"meta":1954},"Data Sources Examples","/developers/templates/yaml-snippets/data-sources-examples","2.developers/7.templates/39.yaml-snippets/10.data-sources-examples",{"heading":766,"toc":573},{"title":1956,"path":1957,"stem":1958,"meta":1959},"RAG configuration Examples","/developers/templates/yaml-snippets/rag-configuration-examples","2.developers/7.templates/39.yaml-snippets/20.rag-configuration-examples",{"heading":766,"toc":573},{"title":1961,"path":1962,"stem":1963,"children":1964,"page":766},"Rag Customization","/developers/templates/rag-customization","2.developers/7.templates/40.rag-customization",[1965,1970,1975,1981,1987,1993],{"title":1966,"path":1967,"stem":1968,"meta":1969},"REST API","/developers/templates/rag-customization/rest-api","2.developers/7.templates/40.rag-customization/10.REST-API",{"heading":766,"toc":766},{"title":1971,"path":1972,"stem":1973,"meta":1974},"Customizing prompt","/developers/templates/rag-customization/custom-prompt","2.developers/7.templates/40.rag-customization/20.custom-prompt",{"heading":766},{"title":1334,"path":1976,"stem":1977,"meta":1978},"/developers/templates/rag-customization/parsers","2.developers/7.templates/40.rag-customization/30.parsers",{"date":1338,"tags":1979,"keywords":1980},[821,1280],[1280,1341,1342,1343,1344],{"title":1346,"path":1982,"stem":1983,"meta":1984},"/developers/templates/rag-customization/splitters","2.developers/7.templates/40.rag-customization/40.splitters",{"date":1350,"thumbnail":131,"tags":1985,"keywords":1986},[1352,1353],[1343,1353],{"title":1356,"path":1988,"stem":1989,"meta":1990},"/developers/templates/rag-customization/embedders","2.developers/7.templates/40.rag-customization/50.embedders",{"date":1350,"thumbnail":131,"tags":1991,"keywords":1992},[821,1361],[1280,1282,1283,1284,1363,1364],{"title":1366,"path":1994,"stem":1995,"meta":1996},"/developers/templates/rag-customization/llm-chats","2.developers/7.templates/40.rag-customization/60.llm-chats",{"date":1370,"thumbnail":131,"tags":1997,"keywords":1998},[821,1280,1372,1366],[1280,1282,1283,1284,1363,1374],{"title":1385,"path":2000,"stem":2001,"children":2002,"page":766},"/developers/templates/deploy","2.developers/7.templates/60.deploy",[2003,2007,2011,2018],{"title":1391,"path":2004,"stem":2005,"meta":2006},"/developers/templates/deploy/cloud-deployment","2.developers/7.templates/60.deploy/10.cloud-deployment",{},{"title":1396,"path":2008,"stem":2009,"meta":2010},"/developers/templates/deploy/gcp-deploy","2.developers/7.templates/60.deploy/15.gcp-deploy",{},{"title":1401,"path":2012,"stem":2013,"meta":2014},"/developers/templates/deploy/aws-fargate-deploy","2.developers/7.templates/60.deploy/20.aws-fargate-deploy",{"date":1405,"tags":2015,"thumbnail":2016,"keywords":2017,"docker_github_link":1416,"deployButtons":766},[1407,1408],{"src":1410},[1412,1413,1414,965,1415],{"title":1418,"path":2019,"stem":2020,"meta":2021},"/developers/templates/deploy/azure-aci-deploy","2.developers/7.templates/60.deploy/25.azure-aci-deploy",{"date":1422,"tags":2022,"thumbnail":2023,"keywords":2024,"docker_github_link":1432,"deployButtons":766},[1407,1408],{"src":1425,"contain":573},[1427,1428,1414,965,1429,1430,1431],{"title":2026,"meta":2027,"path":2028,"stem":2029,"children":2030,"page":766},"ETL Templates",{},"/developers/templates/etl","2.developers/7.templates/ETL",[2031,2045,2060,2079,2099,2110,2124,2135,2145,2160,2175,2189,2204,2222,2238,2252,2268,2284,2296,2309,2319,2331,2343,2357],{"title":2032,"path":2033,"stem":2034,"meta":2035},"EL Pipeline: Move your data around with Pathway","/developers/templates/etl/el-pipeline","2.developers/7.templates/ETL/10.el-pipeline",{"layout":2036,"date":2037,"tags":2038,"thumbnail":2039,"keywords":2041,"popular":573},"template","2025-05-22",[1407,1408],{"src":2040,"contain":573},"/assets/content/showcases/el-template/el-template-thumbnail.png",[2042,2043,2044,963,990,965],"ETL","EL","YAML",{"title":2046,"path":2047,"stem":2048,"meta":2049},"Real-Time Anomaly Detection: identifying brute-force logins using Tumbling Windows","/developers/templates/etl/suspicious_activity_tumbling_window","2.developers/7.templates/ETL/10.suspicious_activity_tumbling_window",{"notebook_export_path":2050,"aside":573,"date":2051,"thumbnail":2052,"tags":2054,"keywords":2056,"layout":2036},"notebooks/tutorials/suspicious_user_activity.ipynb","2023-05-30",{"src":2053,"provider":520},"/assets/blog/thumbnails/th-shield.png",[821,2055],"machine-learning",[1253,2057,2058,2059],"tumbling","alert","notebook",{"title":2061,"path":2062,"stem":2063,"meta":2064},"Gaussian Filtering in Real-time: Signal processing with out-of-order data streams","/developers/templates/etl/gaussian_filtering_python","2.developers/7.templates/ETL/100.gaussian_filtering_python",{"notebook_export_path":2065,"aside":573,"date":2066,"layout":2036,"thumbnail":2067,"tags":2069,"related":2071,"keywords":2074},"notebooks/tutorials/gaussian-filtering-python.ipynb","2023-10-17",{"src":2068},"/assets/content/tutorials/time_series/thumbnail-gaussian.png",[821,2070],"Time Series",[2072,2073],"/blog/signal-processing","/developers/templates/etl/upsampling",[2075,2076,1218,2077,2078,1253,2059],"signal processing","Gaussian filter","irregular sampling","intervals_over",{"title":2080,"path":2081,"stem":2082,"meta":2083},"Computing the Option Greeks using Pathway and Databento","/developers/templates/etl/option-greeks","2.developers/7.templates/ETL/105.option-greeks",{"thumbnail":2084,"date":2086,"tags":2087,"keywords":2088,"notebook_export_path":2097,"docker_github_link":2098,"aside":573,"layout":2036},{"src":2085,"contain":573},"/assets/content/showcases/option-greeks/option-greeks.png","2024-08-06",[821,1408],[2089,2090,2091,2092,2093,2094,2095,2096,2059],"Option Greeks","Databento","Delta","Gamma","Theta","Rho","quant","Black model","notebooks/tutorials/option-greeks.ipynb","https://github.com/pathwaycom/pathway/tree/main/examples/projects/option-greeks",{"title":2100,"path":2101,"stem":2102,"meta":2103},"Automating reconciliation of messy financial transaction logs using Pathway's real-time fuzzy join","/developers/templates/etl/fuzzy_join_chapter1","2.developers/7.templates/ETL/11.fuzzy_join_chapter1",{"notebook_export_path":2104,"aside":573,"date":2105,"tags":2106,"keywords":2107,"layout":2036},"notebooks/showcases/fuzzy_join_part1.ipynb","2022-10-18",[821,1408],[2108,2109,1341,2059],"Fuzzy join","reconciliation",{"title":2111,"path":2073,"stem":2112,"meta":2113},"Signal Processing with Real-time Upsampling: combining multiple time series data streams.","2.developers/7.templates/ETL/110.upsampling",{"notebook_export_path":2114,"aside":573,"date":2115,"layout":2036,"thumbnail":2116,"tags":2118,"related":2119,"popular":573,"keywords":2120},"notebooks/tutorials/upsampling.ipynb","2023-10-18",{"src":2117},"/assets/content/tutorials/time_series/thumbnail-time-series.png",[821,2070],[2072,2062],[2075,2121,1218,2122,2123,2078,1253,2059],"upsampling","resampling","interpolation",{"title":2125,"path":2126,"stem":2127,"meta":2128},"Interaction with a Feedback Loop.","/developers/templates/etl/fuzzy_join_chapter2","2.developers/7.templates/ETL/12.fuzzy_join_chapter2",{"notebook_export_path":2129,"aside":573,"date":2130,"thumbnail":2131,"tags":2133,"keywords":2134,"layout":2036},"notebooks/showcases/fuzzy_join_part2.ipynb","2022-10-19",{"src":2132,"contain":573},"/assets/content/showcases/fuzzy_join/reconciliation_chapter3_trim.png",[821,1408],[2108,2109,1341,2059],{"title":2136,"path":2137,"stem":2138,"meta":2139},"Smart real-time monitoring application with alert deduplication","/developers/templates/etl/alerting-significant-changes","2.developers/7.templates/ETL/130.alerting-significant-changes",{"notebook_export_path":2140,"aside":573,"date":2141,"tags":2142,"keywords":2143,"layout":2036},"notebooks/tutorials/alert-deduplication.ipynb","2023-11-16",[821,1408],[2058,2144,1474,2059],"deduplication",{"title":2146,"path":2147,"stem":2148,"meta":2149},"Kafka ETL: Processing event streams in Python","/developers/templates/etl/kafka-etl","2.developers/7.templates/ETL/140.kafka-etl",{"layout":2036,"date":2150,"tags":2151,"thumbnail":2152,"keywords":2154,"docker_github_link":2159,"popular":573},"2024-02-15",[1407,1408],{"src":2153,"contain":573},"/assets/content/showcases/ETL-Kafka/ETL-Kafka.png",[2042,963,2155,2156,2157,2158,965],"datetime","time zone","timezone","concat_reindex","https://github.com/pathwaycom/pathway/tree/main/examples/projects/kafka-ETL",{"title":2161,"path":2162,"stem":2163,"meta":2164},"Streaming ETL pipelines in Python with Airbyte and Pathway","/developers/templates/etl/etl-python-airbyte","2.developers/7.templates/ETL/150.etl-python-airbyte",{"layout":2036,"date":2165,"tags":2166,"thumbnail":2167,"keywords":2169},"2024-02-28",[1407,1408],{"src":2168},"/assets/content/showcases/airbyte/airbyte-diagram-th.png",[2170,2171,2172,2173,2174],"airbyte","processing","airbyte python","python etl","airbyte etl",{"title":2176,"path":2177,"stem":2178,"meta":2179},"Delta Lake ETL with Pathway for Spark Analytics","/developers/templates/etl/delta_lake_etl","2.developers/7.templates/ETL/175.delta_lake_etl",{"layout":2036,"date":2180,"tags":2181,"thumbnail":2182,"keywords":2184,"docker_github_link":2188},"2024-07-23",[1407,1408],{"src":2183,"contain":573},"/assets/content/showcases/deltalake/delta_lake_diagram_th.png",[2185,2186,2187,2173,2174,965],"delta lake etl","spark delta lake","spark etl","https://github.com/pathwaycom/pathway/tree/main/examples/projects/spark-data-preparation",{"title":2190,"path":2191,"stem":2192,"meta":2193},"Python Kafka Alternative: Achieve Sub-Second Latency with your S3 Storage without Kafka using Pathway","/developers/templates/etl/kafka-alternative","2.developers/7.templates/ETL/180.kafka-alternative",{"layout":2036,"thumbnail":2194,"date":2196,"tags":2197,"keywords":2198},{"src":2195,"contain":573},"/assets/content/showcases/kafka-alternatives/kafka-alternatives-thumbnail.png","2024-08-27",[1407,1408],[2042,963,2199,2200,2201,2157,2202,2203],"Pathway","MinIO","S3","Kafka-alternatives","Delta tables",{"title":2205,"path":2206,"stem":2207,"meta":2208},"Jupyter / Colab: visualizing and transforming live data streams in Python notebooks with Pathway","/developers/templates/etl/live_data_jupyter","2.developers/7.templates/ETL/2.live_data_jupyter",{"aside":573,"date":1453,"tags":2209,"keywords":2210,"notebook_export_path":2220,"docker_github_link":2221,"popular":573,"layout":2036},[821,1408,1407],[2211,2212,2213,2214,2215,2216,2217,2218,2219,2059,965],"Jupyter notebook","interactivity","bokeh","panel","Bollinger bands","vizualization","Weighted Average","rolling statistics","dashboard","notebooks/showcases/live-data-jupyter.ipynb","https://github.com/pathwaycom/pathway/tree/main/examples/projects/from_jupyter_to_deploy/part4_deployment",{"title":2223,"path":2224,"stem":2225,"meta":2226},"Real-Time Twitter Sentiment Analysis and Prediction App with Pathway","/developers/templates/etl/twitter","2.developers/7.templates/ETL/2.twitter",{"aside":573,"layout":2036,"date":2227,"thumbnail":2228,"tags":2230,"keywords":2231,"docker_github_link":2237},"2022-10-31",{"src":2229},"/assets/content/blog/th-twitter.png",[821,2055,1407],[2232,2233,2234,2235,2236,1341,965],"Twitter","tweets","sentiment analysis","geolocation","influence","https://github.com/pathwaycom/pathway/tree/main/examples/projects/twitter",{"title":2239,"path":2240,"stem":2241,"meta":2242},"Out-of-Order Event Streams: Calculating Time Deltas with grouping by topic","/developers/templates/etl/event_stream_processing_time_between_occurrences","2.developers/7.templates/ETL/20.event_stream_processing_time_between_occurrences",{"aside":573,"date":2243,"layout":2036,"thumbnail":2244,"tags":2246,"keywords":2247},"2022-11-01",{"src":2245},"/assets/content/blog/th-time-between-events-in-a-multi-topic-event-stream.png",[821,1408],[2248,2249,962,2250,2251],"event stream","multi-topic","ordering","sort",{"title":2253,"path":2254,"stem":2255,"meta":2256},"Adaptive Classifiers: Evolving Predictions with Real-Time Data","/developers/templates/etl/lsh_chapter1","2.developers/7.templates/ETL/3.lsh_chapter1",{"notebook_export_path":2257,"aside":573,"date":2258,"thumbnail":2259,"tags":2261,"keywords":2262,"layout":2036},"notebooks/showcases/lsh.ipynb","2022-10-25",{"src":2260},"/assets/content/blog/th-realtime-classification.png",[821,2055],[2263,1150,2264,1145,2265,2266,2267,1341,2059],"Classification","LSH","Locality Sensitive Hashing","MNIST","euclidean distance",{"title":2269,"path":2270,"stem":2271,"meta":2272},"Uncovering hidden user relationships in crypto exchanges with Fuzzy Join on streaming data","/developers/templates/etl/user_pairs_fuzzy_join","2.developers/7.templates/ETL/30.user_pairs_fuzzy_join",{"aside":573,"date":2273,"thumbnail":2274,"tags":2276,"keywords":2277,"layout":2036},"2023-01-09",{"src":2275,"provider":520},"/assets/blog/thumbnails/th-mining-hidden-user-pair-activity-with-fuzzy-join.png",[821,1408],[2278,2058,2279,2280,2281,2282,2283],"fuzzy join","cryptocurrency","bitcoin","BTC","ETH","Ethereum",{"title":2285,"path":2286,"stem":2287,"meta":2288},"Pathway Logistics Application: Streamlined Insights for Real-Time Asset Management","/developers/templates/etl/logistics","2.developers/7.templates/ETL/4.logistics",{"aside":573,"layout":2036,"date":2227,"thumbnail":2289,"tags":2291,"enterprise":573,"keywords":2292},{"src":2290},"/assets/content/blog/th-logictics-app.png",[821,2055],[2293,2294,2295],"Logistics","IoT","Dashboard",{"title":2297,"path":2298,"stem":2299,"meta":2300},"Real-Time Shortest Paths on Dynamic Networks with Bellman-Ford in Pathway","/developers/templates/etl/bellman_ford","2.developers/7.templates/ETL/40.bellman_ford",{"aside":573,"date":2301,"layout":2036,"thumbnail":2302,"tags":2304,"notebook_export_path":2305,"keywords":2306},"2022-11-03",{"src":2303,"provider":520},"/assets/blog/thumbnails/th-bellman-ford.png",[821,2055],"notebooks/tutorials/bellman_ford.ipynb",[1126,2307,2308,1488,2059],"fixed-point","shortest-path",{"title":2310,"path":2311,"stem":2312,"meta":2313},"Linear regression on a Kafka stream","/developers/templates/etl/linear_regression_with_kafka","2.developers/7.templates/ETL/5.linear_regression_with_kafka",{"aside":573,"layout":2036,"date":2314,"tags":2315,"keywords":2316,"docker_github_link":2318},"2022-12-23",[821,1408],[2317,963,894],"linear regression","https://github.com/pathwaycom/pathway/tree/main/examples/projects/kafka-linear-regression",{"title":2320,"path":2321,"stem":2322,"meta":2323},"Real-Time PageRank on Dynamic Graphs with Pathway","/developers/templates/etl/pagerank","2.developers/7.templates/ETL/50.pagerank",{"notebook_export_path":2324,"aside":573,"date":2325,"thumbnail":2326,"tags":2328,"keywords":2329,"layout":2036},"notebooks/tutorials/pagerank.ipynb","2022-11-07",{"src":2327,"provider":520},"/assets/blog/thumbnails/th-computing-pagerank.png",[821,2055],[2330,1488,2059],"pagerank",{"title":2332,"path":2333,"stem":2334,"meta":2335},"Sensor Fusion in real-time: combining time series data with Pathway","/developers/templates/etl/combining_time_series","2.developers/7.templates/ETL/65.combining_time_series",{"aside":573,"date":2336,"thumbnail":2337,"tags":2338,"keywords":2339,"notebook_export_path":2342,"layout":2036},"2023-04-28",{"src":2117},[2070],[2340,2341,2123,858,2059],"time series","multiple data sources","notebooks/tutorials/combining-time-series.ipynb",{"title":2344,"path":2345,"stem":2346,"meta":2347},"Realtime Server Log Monitoring: nginx + Filebeat + Pathway","/developers/templates/etl/realtime-log-monitoring","2.developers/7.templates/ETL/7.realtime-log-monitoring",{"aside":573,"layout":2036,"date":2348,"thumbnail":2349,"tags":2351,"keywords":2352,"docker_github_link":2356},"2023-02-27",{"src":2350,"contain":573},"/assets/content/tutorials/realtime_log_monitoring/meme.jpg",[821,1408],[2353,2058,963,2354,938,2355,965],"log monitoring","Filebeat","ElasticSearch","https://github.com/pathwaycom/pathway/tree/main/examples/projects/realtime-log-monitoring/filebeat-pathway-slack",{"title":2358,"path":2359,"stem":2360,"children":2361,"page":766},"Readmes","/developers/templates/etl/_readmes","2.developers/7.templates/ETL/_readmes",[2362,2367,2372,2377,2382,2387,2392,2397,2402,2407,2411,2416,2421,2426,2431,2436,2441,2446],{"title":2363,"path":2364,"stem":2365,"meta":2366},"Azure ACI Deployment Example","/developers/templates/etl/_readmes/azure-aci-deploy","2.developers/7.templates/ETL/_readmes/azure-aci-deploy",{},{"title":2368,"path":2369,"stem":2370,"meta":2371},"Benchmark for Delta Lake S3 messaging as a Kafka replacement","/developers/templates/etl/_readmes/benchmarks","2.developers/7.templates/ETL/_readmes/benchmarks",{},{"title":2373,"path":2374,"stem":2375,"meta":2376},"Best-rated movies examples","/developers/templates/etl/_readmes/best-movies-example","2.developers/7.templates/ETL/_readmes/best-movies-example",{},{"title":2378,"path":2379,"stem":2380,"meta":2381},"Make your LLM app sane again: Forgetting incorrect data in real time","/developers/templates/etl/_readmes/conf42","2.developers/7.templates/ETL/_readmes/conf42",{},{"title":2383,"path":2384,"stem":2385,"meta":2386},"Custom python connector example","/developers/templates/etl/_readmes/custom-python-connector-twitter","2.developers/7.templates/ETL/_readmes/custom-python-connector-twitter",{},{"title":2388,"path":2389,"stem":2390,"meta":2391},"Realtime monitoring of logs","/developers/templates/etl/_readmes/filebeat-pathway-slack","2.developers/7.templates/ETL/_readmes/filebeat-pathway-slack",{},{"title":2393,"path":2394,"stem":2395,"meta":2396},"Tutorial: From interactive data exploration to deployment","/developers/templates/etl/_readmes/from_jupyter_to_deploy","2.developers/7.templates/ETL/_readmes/from_jupyter_to_deploy",{},{"title":2398,"path":2399,"stem":2400,"meta":2401},"ETL with Kafka in/Kafka out","/developers/templates/etl/_readmes/kafka-etl","2.developers/7.templates/ETL/_readmes/kafka-ETL",{},{"title":2403,"path":2404,"stem":2405,"meta":2406},"Best-rated movies example - Kafka version","/developers/templates/etl/_readmes/kafka-version","2.developers/7.templates/ETL/_readmes/kafka-version",{},{"title":2388,"path":2408,"stem":2409,"meta":2410},"/developers/templates/etl/_readmes/logstash-pathway-elastic","2.developers/7.templates/ETL/_readmes/logstash-pathway-elastic",{},{"title":2412,"path":2413,"stem":2414,"meta":2415},"Pathway Monitoring using OpenTelemetry Collector and Grafana Cloud","/developers/templates/etl/_readmes/monitoring","2.developers/7.templates/ETL/_readmes/monitoring",{},{"title":2417,"path":2418,"stem":2419,"meta":2420},"Computing Option Greeks with Pathway and Databento.","/developers/templates/etl/_readmes/option-greeks","2.developers/7.templates/ETL/_readmes/option-greeks",{},{"title":2422,"path":2423,"stem":2424,"meta":2425},"Retrieval-Augmented Generation (RAG) Pipeline with Pathway","/developers/templates/etl/_readmes/question-answering-rag","2.developers/7.templates/ETL/_readmes/question-answering-rag",{},{"title":2427,"path":2428,"stem":2429,"meta":2430},"Best-rated movies example - Redpanda version","/developers/templates/etl/_readmes/redpanda-version","2.developers/7.templates/ETL/_readmes/redpanda-version",{},{"title":2432,"path":2433,"stem":2434,"meta":2435},"Sample Pathway program for SharePoint connection testing","/developers/templates/etl/_readmes/sharepoint-test","2.developers/7.templates/ETL/_readmes/sharepoint-test",{},{"title":2437,"path":2438,"stem":2439,"meta":2440},"Data Preparation for Spark Analytics","/developers/templates/etl/_readmes/spark-data-preparation","2.developers/7.templates/ETL/_readmes/spark-data-preparation",{},{"title":2442,"path":2443,"stem":2444,"meta":2445},"Realtime Twitter Analysis App with Pathway","/developers/templates/etl/_readmes/twitter","2.developers/7.templates/ETL/_readmes/twitter",{},{"title":2447,"path":2448,"stem":2449,"meta":2450},"Web Scraping with Pathway","/developers/templates/etl/_readmes/web-scraping","2.developers/7.templates/ETL/_readmes/web-scraping",{},{"title":2452,"meta":2453,"path":2454,"stem":2455,"children":2456,"page":766},"LLM-RAG Templates",{},"/developers/templates/rag","2.developers/7.templates/rag",[2457,2470,2485,2501,2514,2532,2542,2557,2567,2577,2588,2601],{"title":2458,"path":2459,"stem":2460,"meta":2461},"Question-Answering RAG App","/developers/templates/rag/demo-question-answering","2.developers/7.templates/rag/1000.demo-question-answering",{"redirection":2462,"thumbnail":2463,"layout":2036,"tags":2465,"date":1338,"keywords":2467,"docker_github_link":2462,"popular":573},"https://github.com/pathwaycom/llm-app/tree/main/templates/question_answering_rag",{"src":2464,"provider":520},"/assets/blog/thumbnails/qna-th.png",[1407,2466],"ai-pipelines",[1280,1292,1282,1283,2468,1146,894,2469],"vector store","yaml",{"title":2471,"path":2472,"stem":2473,"meta":2474},"Adaptive RAG App","/developers/templates/rag/template-adaptive-rag","2.developers/7.templates/rag/1001.template-adaptive-rag",{"thumbnail":2475,"tags":2477,"date":2478,"layout":2036,"keywords":2479,"docker_github_link":2484},{"src":2476,"contain":573},"/assets/content/blog/adaptive-rag-plots/visual-abstract.png",[1407,2466],"2024-03-29",[1280,1292,2480,2481,2482,2483,894,2469],"Adaptive RAG","prompt engineering","prompt","explainability","https://github.com/pathwaycom/llm-app/tree/main/templates/adaptive_rag",{"title":2486,"path":2487,"stem":2488,"meta":2489},"Private RAG App with Mistral and Ollama","/developers/templates/rag/template-private-rag","2.developers/7.templates/rag/1002.template-private-rag",{"tags":2490,"date":2491,"thumbnail":2492,"layout":2036,"keywords":2494,"docker_github_link":2500},[1407,2466],"2024-04-22",{"src":2493,"contain":573},"/assets/content/blog/local-adaptive-rag/local_adaptive.png",[1280,1292,2480,2481,2483,2495,2496,2497,2498,2499,894,2469],"mistral","ollama","private rag","local rag","ollama rag","https://github.com/pathwaycom/llm-app/tree/main/templates/private_rag",{"title":2502,"path":2503,"stem":2504,"meta":2505},"Multimodal RAG pipeline with GPT4o","/developers/templates/rag/template-multimodal-rag","2.developers/7.templates/rag/1003.template-multimodal-rag",{"tags":2506,"date":2507,"thumbnail":2508,"layout":2036,"keywords":2510,"docker_github_link":2513,"popular":573},[1407,2466],"2024-01-01",{"src":2509,"contain":573},"/assets/content/showcases/multimodal-RAG/multimodalRAG-blog-banner.png",[1280,1292,1282,1283,2511,2512,1341,894,2469],"GPT-4o","multimodal RAG","https://github.com/pathwaycom/llm-app/tree/main/templates/multimodal_rag",{"title":2515,"path":2516,"stem":2517,"children":2518,"meta":2528},"Live Document Indexing (Vector Store / Retriever)","/developers/templates/rag/template-demo-document-indexing","2.developers/7.templates/rag/1008.template-demo-document-indexing",[2519],{"title":2515,"path":2516,"stem":2517,"meta":2520},{"thumbnail":2521,"tags":2523,"date":2507,"layout":2036,"keywords":2524,"docker_github_link":2527},{"src":2522,"provider":520},"/assets/blog/thumbnails/live-document-indexing-th.png",[1407,2466],[1280,1292,1282,1283,2468,1146,2525,1042,2526,894,2469],"SharePoint","Gdrive","https://github.com/pathwaycom/llm-app/tree/main/templates/document_indexing",{"thumbnail":2529,"tags":2530,"date":2507,"layout":2036,"keywords":2531,"docker_github_link":2527},{"src":2522,"provider":520},[1407,2466],[1280,1292,1282,1283,2468,1146,2525,1042,2526,894,2469],{"title":2533,"path":2534,"stem":2535,"meta":2536},"Alerting when answers change on Google Drive","/developers/templates/rag/drive-alert","2.developers/7.templates/rag/1009.drive-alert",{"tags":2537,"date":2538,"layout":2036,"keywords":2539,"docker_github_link":2541,"hide":573},[1407,2466],"2024-11-07",[1280,1292,1282,1283,2540,1146,1042,2526,894],"slack","https://github.com/pathwaycom/llm-app/tree/main/templates/drive_alert",{"title":2543,"path":2544,"stem":2545,"meta":2546},"Slides AI Search App","/developers/templates/rag/template-slides-search","2.developers/7.templates/rag/1010.template-slides-search",{"thumbnail":2547,"tags":2549,"date":2550,"layout":2036,"keywords":2551,"docker_github_link":2556},{"src":2548,"provider":520},"/assets/blog/thumbnails/slides-search-th.png",[1407,2466],"2024-11-14",[1280,1292,1282,1283,1042,2552,894,2469,2553,2554,2555],"slides","multimodal","VLM","image-to-text","https://github.com/pathwaycom/llm-app/tree/main/templates/slides_ai_search",{"title":2558,"path":2559,"stem":2560,"meta":2561},"Adaptive RAG: cut your LLM costs without sacrificing accuracy","/developers/templates/rag/adaptive-rag","2.developers/7.templates/rag/1015.adaptive-rag",{"aside":573,"thumbnail":2562,"tags":2563,"date":2564,"notebook_export_path":2565,"keywords":2566,"run_template":2472,"hide":573},{"src":2476,"contain":573},[1407,2466],"2024-03-28","notebooks/showcases/adaptive_rag_question_answering.ipynb",[1280,1292,2480,2481,2482,2483,2059,965],{"title":2568,"path":2569,"stem":2570,"meta":2571},"Multimodal RAG for PDFs with Text, Images, and Charts","/developers/templates/rag/multimodal-rag","2.developers/7.templates/rag/120.multimodal-rag",{"aside":573,"thumbnail":2572,"date":2573,"tags":2574,"keywords":2575,"notebook_export_path":2576,"run_template":2503,"popular":573,"hide":573},{"src":2509,"contain":573},"2024-06-20",[1407,2466],[1280,1292,1282,1283,2511,2512,1341,2059,894],"notebooks/showcases/multimodal-rag.ipynb",{"title":2578,"path":2579,"stem":2580,"meta":2581},"Private RAG with Connected Data Sources using Mistral, Ollama, and Pathway","/developers/templates/rag/private-rag-ollama-mistral","2.developers/7.templates/rag/161.private-rag-ollama-mistral",{"aside":573,"thumbnail":2582,"tags":2583,"date":2584,"related":2585,"notebook_export_path":2586,"keywords":2587,"run_template":2487,"hide":573},{"src":2493,"contain":573},[1407,2466],"2024-04-23",[2559,2459],"notebooks/showcases/mistral_adaptive_rag_question_answering.ipynb",[1280,1292,2480,2481,2483,2495,2496,2497,2498,2499,2059,894],{"title":2589,"path":2590,"stem":2591,"meta":2592},"Pathway + PostgreSQL + LLM: app for querying financial reports with live document structuring pipeline.","/developers/templates/rag/unstructured-to-structured","2.developers/7.templates/rag/5.unstructured-to-structured",{"aside":573,"layout":2036,"date":1263,"thumbnail":2593,"tags":2595,"keywords":2596,"docker_github_link":2600},{"src":2594,"contain":573},"/assets/content/showcases/llm-app/architecture_unst_to_st.png",[1407,2466],[1280,2597,1341,990,1282,2598,2599,857,1341,965],"SQL","Entity extraction","Document parsing","https://github.com/pathwaycom/llm-app/tree/main/templates/unstructured_to_sql_on_the_fly",{"title":2358,"path":2602,"stem":2603,"children":2604,"page":766},"/developers/templates/rag/_readmes","2.developers/7.templates/rag/_readmes",[2605,2610,2618,2623,2628,2633,2638,2643,2648],{"title":2606,"path":2607,"stem":2608,"meta":2609},"AdaptiveRag","/developers/templates/rag/_readmes/adaptive_rag","2.developers/7.templates/rag/_readmes/adaptive_rag",{},{"title":2611,"path":2612,"stem":2613,"children":2614,"meta":2617},"DocumentIndexing","/developers/templates/rag/_readmes/document_indexing","2.developers/7.templates/rag/_readmes/document_indexing",[2615],{"title":2611,"path":2612,"stem":2613,"meta":2616},{},{},{"title":2619,"path":2620,"stem":2621,"meta":2622},"DocumentStoreMcpServer","/developers/templates/rag/_readmes/document_store_mcp_server","2.developers/7.templates/rag/_readmes/document_store_mcp_server",{},{"title":2624,"path":2625,"stem":2626,"meta":2627},"Pathway + LLM + Slack notification: RAG App with real-time alerting when answers change in documents","/developers/templates/rag/_readmes/drive_alert","2.developers/7.templates/rag/_readmes/drive_alert",{},{"title":2629,"path":2630,"stem":2631,"meta":2632},"MultimodalRag","/developers/templates/rag/_readmes/multimodal_rag","2.developers/7.templates/rag/_readmes/multimodal_rag",{},{"title":2634,"path":2635,"stem":2636,"meta":2637},"PrivateRag","/developers/templates/rag/_readmes/private_rag","2.developers/7.templates/rag/_readmes/private_rag",{},{"title":2639,"path":2640,"stem":2641,"meta":2642},"QuestionAnsweringRag","/developers/templates/rag/_readmes/question_answering_rag","2.developers/7.templates/rag/_readmes/question_answering_rag",{},{"title":2644,"path":2645,"stem":2646,"meta":2647},"SlidesAiSearch","/developers/templates/rag/_readmes/slides_ai_search","2.developers/7.templates/rag/_readmes/slides_ai_search",{},{"title":2649,"path":2650,"stem":2651,"meta":2652},"UnstructuredToSqlOnTheFly","/developers/templates/rag/_readmes/unstructured_to_sql_on_the_fly","2.developers/7.templates/rag/_readmes/unstructured_to_sql_on_the_fly",{},{"navTitle":762,"layout":836,"aside":573,"toc":766,"single":573},{"id":4,"title":5,"author":6,"body":2655,"description":735,"extension":736,"meta":3183,"navigation":573,"path":738,"seo":3184,"sitemap":3185,"stem":741,"__hash__":742},{"type":8,"value":2656,"toc":3171},[2657,2659,2661,2663,2671,2673,2677,2683,2685,2687,2691,2719,2721,2725,2759,2763,2797,2807,2809,2811,2845,2879,2913,2923,2937,2939,2947,2989,2991,2993,3095,3097,3099,3103,3105,3115,3119,3123,3127,3131,3133,3135,3161,3169],[11,2658,5],{"id":13},[15,2660,17],{},[15,2662,20],{},[22,2664,2665,2667,2669],{},[25,2666,27],{},[25,2668,30],{},[25,2670,33],{},[35,2672,38],{"id":37},[15,2674,41,2675,46],{},[43,2676,45],{},[15,2678,49,2679,53,2681,57],{},[43,2680,52],{},[43,2682,56],{},[35,2684,61],{"id":60},[63,2686,66],{"id":65},[15,2688,69,2689,72],{},[43,2690,45],{},[74,2692,2693,2701],{},[77,2694,2695],{},[80,2696,2697,2699],{},[83,2698,85],{},[83,2700,88],{},[90,2702,2703,2711],{},[80,2704,2705,2707],{},[95,2706,97],{},[95,2708,2709],{},[43,2710,102],{},[80,2712,2713,2715],{},[95,2714,107],{},[95,2716,2717],{},[43,2718,112],{},[63,2720,116],{"id":115},[15,2722,119,2723,124],{},[121,2724,123],{},[126,2726,2727],{"className":128,"code":129,"language":130,"meta":131,"style":131},[43,2728,2729,2737,2745,2753],{"__ignoreMap":131},[135,2730,2731,2733,2735],{"class":137,"line":138},[135,2732,142],{"class":141},[135,2734,146],{"class":145},[135,2736,150],{"class":149},[135,2738,2739,2741,2743],{"class":137,"line":153},[135,2740,156],{"class":145},[135,2742,159],{"class":145},[135,2744,150],{"class":149},[135,2746,2747,2749,2751],{"class":137,"line":164},[135,2748,167],{"class":145},[135,2750,171],{"class":170},[135,2752,150],{"class":149},[135,2754,2755,2757],{"class":137,"line":176},[135,2756,179],{"class":145},[135,2758,182],{"class":145},[15,2760,119,2761,124],{},[121,2762,187],{},[126,2764,2765],{"className":128,"code":190,"language":130,"meta":131,"style":131},[43,2766,2767,2775,2783,2791],{"__ignoreMap":131},[135,2768,2769,2771,2773],{"class":137,"line":138},[135,2770,142],{"class":141},[135,2772,146],{"class":145},[135,2774,150],{"class":149},[135,2776,2777,2779,2781],{"class":137,"line":153},[135,2778,156],{"class":145},[135,2780,159],{"class":145},[135,2782,150],{"class":149},[135,2784,2785,2787,2789],{"class":137,"line":164},[135,2786,167],{"class":145},[135,2788,215],{"class":170},[135,2790,150],{"class":149},[135,2792,2793,2795],{"class":137,"line":176},[135,2794,179],{"class":145},[135,2796,182],{"class":145},[15,2798,226,2799,230,2801,234,2803,237,2805,240],{},[43,2800,229],{},[43,2802,233],{},[43,2804,102],{},[43,2806,112],{},[15,2808,243],{},[15,2810,246],{},[126,2812,2813],{"className":128,"code":249,"language":130,"meta":131,"style":131},[43,2814,2815,2823,2831,2839],{"__ignoreMap":131},[135,2816,2817,2819,2821],{"class":137,"line":138},[135,2818,142],{"class":141},[135,2820,146],{"class":145},[135,2822,150],{"class":149},[135,2824,2825,2827,2829],{"class":137,"line":153},[135,2826,156],{"class":145},[135,2828,266],{"class":145},[135,2830,150],{"class":149},[135,2832,2833,2835,2837],{"class":137,"line":164},[135,2834,167],{"class":145},[135,2836,171],{"class":170},[135,2838,150],{"class":149},[135,2840,2841,2843],{"class":137,"line":176},[135,2842,179],{"class":145},[135,2844,182],{"class":145},[126,2846,2847],{"className":128,"code":285,"language":130,"meta":131,"style":131},[43,2848,2849,2857,2865,2873],{"__ignoreMap":131},[135,2850,2851,2853,2855],{"class":137,"line":138},[135,2852,142],{"class":141},[135,2854,146],{"class":145},[135,2856,150],{"class":149},[135,2858,2859,2861,2863],{"class":137,"line":153},[135,2860,156],{"class":145},[135,2862,266],{"class":145},[135,2864,150],{"class":149},[135,2866,2867,2869,2871],{"class":137,"line":164},[135,2868,167],{"class":145},[135,2870,215],{"class":170},[135,2872,150],{"class":149},[135,2874,2875,2877],{"class":137,"line":176},[135,2876,179],{"class":145},[135,2878,182],{"class":145},[126,2880,2881],{"className":128,"code":320,"language":130,"meta":131,"style":131},[43,2882,2883,2891,2899,2907],{"__ignoreMap":131},[135,2884,2885,2887,2889],{"class":137,"line":138},[135,2886,142],{"class":141},[135,2888,146],{"class":145},[135,2890,150],{"class":149},[135,2892,2893,2895,2897],{"class":137,"line":153},[135,2894,156],{"class":145},[135,2896,266],{"class":145},[135,2898,150],{"class":149},[135,2900,2901,2903,2905],{"class":137,"line":164},[135,2902,167],{"class":145},[135,2904,345],{"class":170},[135,2906,150],{"class":149},[135,2908,2909,2911],{"class":137,"line":176},[135,2910,179],{"class":145},[135,2912,182],{"class":145},[15,2914,356,2915,360,2917,364,2919,368,2921,240],{},[43,2916,359],{},[43,2918,363],{},[43,2920,367],{},[43,2922,371],{},[15,2924,374,2925,378,2927,383,2931,388,2935,240],{},[121,2926,377],{},[121,2928,2929],{},[43,2930,233],{},[121,2932,2933],{},[43,2934,97],{},[121,2936,391],{},[63,2938,395],{"id":394},[15,2940,398,2941,402,2943,405,2945,409],{},[43,2942,401],{},[43,2944,229],{},[43,2946,408],{},[126,2948,2949],{"className":128,"code":412,"language":130,"meta":131,"style":131},[43,2950,2951,2959,2967,2975,2983],{"__ignoreMap":131},[135,2952,2953,2955,2957],{"class":137,"line":138},[135,2954,142],{"class":141},[135,2956,146],{"class":145},[135,2958,150],{"class":149},[135,2960,2961,2963,2965],{"class":137,"line":153},[135,2962,156],{"class":145},[135,2964,159],{"class":145},[135,2966,150],{"class":149},[135,2968,2969,2971,2973],{"class":137,"line":164},[135,2970,167],{"class":145},[135,2972,171],{"class":170},[135,2974,150],{"class":149},[135,2976,2977,2979,2981],{"class":137,"line":176},[135,2978,443],{"class":145},[135,2980,345],{"class":170},[135,2982,150],{"class":149},[135,2984,2985,2987],{"class":137,"line":450},[135,2986,179],{"class":145},[135,2988,182],{"class":145},[63,2990,458],{"id":457},[15,2992,461],{},[126,2994,2995],{"className":464,"code":465,"language":466,"meta":131,"style":131},[43,2996,2997,3015,3037,3051,3065,3069,3073,3077],{"__ignoreMap":131},[135,2998,2999,3001,3003,3005,3007,3009,3011,3013],{"class":137,"line":138},[135,3000,473],{"class":149},[135,3002,477],{"class":476},[135,3004,480],{"class":149},[135,3006,240],{"class":476},[135,3008,486],{"class":485},[135,3010,240],{"class":476},[135,3012,492],{"class":491},[135,3014,495],{"class":476},[135,3016,3017,3019,3021,3023,3025,3027,3029,3031,3033,3035],{"class":137,"line":153},[135,3018,501],{"class":500},[135,3020,477],{"class":476},[135,3022,506],{"class":491},[135,3024,240],{"class":476},[135,3026,486],{"class":485},[135,3028,240],{"class":476},[135,3030,515],{"class":485},[135,3032,240],{"class":476},[135,3034,520],{"class":491},[135,3036,495],{"class":476},[135,3038,3039,3041,3043,3045,3047,3049],{"class":137,"line":164},[135,3040,527],{"class":500},[135,3042,477],{"class":476},[135,3044,532],{"class":476},[135,3046,535],{"class":145},[135,3048,532],{"class":476},[135,3050,540],{"class":476},[135,3052,3053,3055,3057,3059,3061,3063],{"class":137,"line":176},[135,3054,545],{"class":500},[135,3056,477],{"class":476},[135,3058,532],{"class":476},[135,3060,552],{"class":145},[135,3062,532],{"class":476},[135,3064,540],{"class":476},[135,3066,3067],{"class":137,"line":450},[135,3068,561],{"class":476},[135,3070,3071],{"class":137,"line":564},[135,3072,567],{"class":476},[135,3074,3075],{"class":137,"line":570},[135,3076,574],{"emptyLinePlaceholder":573},[135,3078,3079,3081,3083,3085,3087,3089,3091,3093],{"class":137,"line":577},[135,3080,506],{"class":149},[135,3082,240],{"class":476},[135,3084,584],{"class":491},[135,3086,587],{"class":476},[135,3088,590],{"class":500},[135,3090,477],{"class":476},[135,3092,590],{"class":491},[135,3094,567],{"class":476},[15,3096,599],{},[35,3098,603],{"id":602},[15,3100,606,3101,612],{},[608,3102,611],{"href":610},[35,3104,616],{"id":615},[15,3106,3107,622,3109,625,3111,630,3113,633],{},[121,3108,621],{},[43,3110,229],{},[608,3112,629],{"href":628},[43,3114,229],{},[15,3116,3117,639],{},[121,3118,638],{},[15,3120,3121,645],{},[121,3122,644],{},[15,3124,3125,651],{},[121,3126,650],{},[15,3128,3129,657],{},[121,3130,656],{},[35,3132,661],{"id":660},[15,3134,664],{},[666,3136,3137,3143,3149,3153],{},[25,3138,3139,676],{},[121,3140,672,3141,675],{},[43,3142,45],{},[25,3144,3145,682,3147,240],{},[121,3146,681],{},[43,3148,685],{},[25,3150,3151,691],{},[121,3152,690],{},[25,3154,3155,703],{},[121,3156,696,3157,699,3159],{},[43,3158,229],{},[43,3160,702],{},[15,3162,706,3163,713,3166,240],{},[608,3164,712],{"href":709,"rel":3165},[711],[608,3167,718],{"href":716,"rel":3168},[711],[720,3170,722],{},{"title":131,"searchDepth":153,"depth":153,"links":3172},[3173,3174,3180,3181,3182],{"id":37,"depth":153,"text":38},{"id":60,"depth":153,"text":61,"children":3175},[3176,3177,3178,3179],{"id":65,"depth":164,"text":66},{"id":115,"depth":164,"text":116},{"id":394,"depth":164,"text":395},{"id":457,"depth":164,"text":458},{"id":602,"depth":153,"text":603},{"id":615,"depth":153,"text":616},{"id":660,"depth":153,"text":661},{},{"title":5,"description":735},{"loc":738},[3187,3188],{"title":629,"path":1581,"stem":1582,"children":-1},{"title":1593,"path":1594,"stem":1595,"children":-1},1775364448044]