Pathway llm-app: Live-Data RAG Templates That Sync Instead of Batch
Ready-to-run cloud templates for RAG, AI pipelines, and enterprise search with live data. Docker-friendly.Always in sync with Sharepoint, Google Drive, S3, Kafka, PostgreSQL, real-time data APIs, and more.
At a glance
- What is it?
- Pathway's llm-app repository ships ready-to-run RAG and indexing templates that keep vector indexes in sync with live sources like SharePoint, S3, and Kafka. The trade-off is a single-framework commitment and a learning curve for customizing the pipeline.
- Who is it for?
- Adopt llm-app if you need production RAG over frequently changing documents and want to avoid assembling a separate vector database, cache, and API layer. Skip it if you prefer to mix best-of-breed components or if you need to modify the pipeline deeply beyond one-line swaps.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 72 days ago.
- What is it written in?
- Mainly Jupyter Notebook, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 14, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What llm-app actually solves
Most RAG stacks are batch pipelines. You index a snapshot, store vectors in a database, and re-run the pipeline on a schedule. The repository pathwaycom/llm-app targets the case where that snapshot becomes stale within minutes. Its templates connect directly to live sources such as Google Drive, SharePoint, S3, Kafka, and PostgreSQL, and the documentation says they sync all new data additions, deletions, and updates. That is the core value: a vector index that reflects the source of truth without a manual re-index step. The intended user is a developer who wants a working RAG or enterprise search service today, not someone who wants to assemble a custom stack from scratch.
The architecture: one framework instead of three
The templates are built on the Pathway Live Data Framework, which is a Python library with a Rust engine. The README is explicit about what this replaces: a vector database like Pinecone or Weaviate, a cache like Redis, and an API framework like FastAPI. Pathway provides the data source connectors, the indexing, the retrieval, and the HTTP serving layer. That is a deliberate bet on a single, unified runtime. The built-in vector index uses the usearch library, and hybrid full-text indexes use Tantivy. Both are embedded, so there are no external services to provision. The data flow is: connectors watch the sources, changes flow into an in-memory index, and an HTTP API serves queries against that index. For a team that wants to avoid operating multiple services, this consolidation is the main appeal.
The templates and what each one demonstrates
The repository contains eight templates, each showing a different retrieval pattern. The question_answering_rag template is the basic end-to-end RAG app: it answers questions over PDFs and DOCX files from a connected source. The document_indexing template is a vector store service that can back a LangChain or LlamaIndex retriever. The multimodal_rag template uses GPT-4o in the parsing stage to handle charts and tables in financial documents. The unstructured_to_sql_on_the_fly template turns financial report PDFs into SQL rows in PostgreSQL and answers natural language questions by generating SQL. The adaptive_rag template claims to reduce token cost up to 4x while keeping accuracy. There is also a private_rag template that runs fully locally with Mistral and Ollama, a slides_ai_search template for PowerPoint, and a video_rag template using TwelveLabs. That range shows the framework is not limited to text chunks; it can ingest structured data and video descriptions.
Getting it running: what the README actually says
Each template has its own README with instructions, but the top-level README gives only two concrete details: the apps run as Docker containers and expose an HTTP API, and some templates include an optional Streamlit UI for testing. There are no docker run commands or environment variable lists in the README. That is a gap. The README says you can change a vector index into a hybrid index with a one-line change, and you can add a new data source by modifying the pipeline, but it does not show the exact code. To get started, you must open the template folder and read its specific README. The absence of a quick-start command in the main README makes the 'ready-to-run' claim less immediate than it sounds. The practical path is to clone the repo, pick a template, and follow that template's instructions.
Where it is the wrong tool: limitations and failure modes
The most obvious constraint is the in-memory indexing. The README says indexing is done in-memory, with cache. That means the entire index must fit in RAM, which is fine for millions of pages on a large machine but a hard ceiling for datasets that exceed memory. The documentation does not state a memory limit or a scaling strategy beyond 'millions of pages.' Another limitation is the lock-in to Pathway's way of doing things. If you already run a vector database and an API layer, adopting these templates means replacing them, not integrating with them. The document_indexing template can act as a retriever backend for LangChain or LlamaIndex, so that reduces lock-in, but the core pipeline still runs on Pathway. The adaptive_rag template's 4x token cost reduction is a claim from the README, and it does not explain the technique or the conditions under which it holds. Treat that number as a marketing figure until you test it on your own data.
A real alternative: a component-based RAG stack
The alternative is the traditional stack that llm-app explicitly replaces: a vector database like Pinecone or Qdrant, a cache like Redis, and an API framework like FastAPI, glued together with your own ingestion code. The difference in approach is fundamental. In that stack, you control each piece independently. You can swap the embedding model without touching the database, or scale the index separately from the API. With llm-app, you get a single runtime that handles all three, but you lose the ability to tune each layer independently. The trade-off is operational simplicity versus architectural flexibility. If your team already operates a vector database, staying with that stack is likely cheaper than migrating. If you are starting fresh and want one service to run, llm-app is the more direct path.
Maintenance and license considerations
The repository is under the MIT license, which means you can use and modify the templates freely, including in commercial products. That is a low barrier for adoption. The maintenance cost comes from the dependency on Pathway's framework. Since the templates are Jupyter Notebooks, the primary language, you are looking at notebook-based examples that you would port to Python scripts for production. The README does not mention a versioning policy or an upgrade path for the framework. You will need to track Pathway releases on its own repository. The templates themselves are thin wrappers, so the real maintenance burden is keeping up with Pathway's API changes and with the LLM providers' APIs, which change frequently. There are no recent releases listed for this repo, which suggests the templates are updated irregularly.
What to verify before you commit
The README makes strong claims about scale and sync, but it gives no benchmarks or architecture diagrams. Before adopting, verify three things. First, confirm that your data sources are among the supported connectors: file system, Google Drive, SharePoint, S3, Kafka, PostgreSQL, and real-time APIs. Second, test the sync behavior with deletions and updates, not just additions, because the documentation says the apps sync all changes, but the templates may handle them differently. Third, measure memory usage on a representative dataset to see if the in-memory index fits your budget. The one-line change for swapping index types is appealing, but you need to know which index type your queries require. Run the document_indexing template with a small live folder and query it with a deletion to see if the index reflects it immediately.
Editorial conclusion
Adopt llm-app if you need production RAG over frequently changing documents and want to avoid assembling a separate vector database, cache, and API layer. Skip it if you prefer to mix best-of-breed components or if you need to modify the pipeline deeply beyond one-line swaps. Before adopting, verify that your data sources are covered by the built-in connectors and that the in-memory index fits your dataset size, since the documentation does not specify memory limits. Then run the question_answering_rag template on a small live folder to confirm sync behavior matches your expectations.
Community notes