{"full_name":"pathwaycom/serviette","owner":"pathwaycom","name":"serviette","url":"https://github.com/pathwaycom/serviette","description":"A no-code RAG server that keeps answers in sync with your documents. Works with 8 vector databases. Built on Pathway.","homepage":"https://github.com/pathwaycom/serviette/blob/main/docs/README.md","topics":[],"language":"Python","license":"MIT","avatar":"https://avatars.githubusercontent.com/u/25750857?v=4","created_at":"2023-07-19T08:43:37Z","pushed_at":"2026-11-02T15:57:46Z","metrics":{"stars":58722,"forks":1549,"watchers":89,"issues":21,"prs":75,"releases":1,"issues_open":null,"issues_closed":null,"prs_open":null,"prs_closed":null,"prs_merged":null,"discussions":13},"growth":{"day":{"stars":-1,"forks":0,"base_day":"2026-11-09"}},"history":{"dates":["2026-11-09","2026-11-10"],"stars":[58723,58722],"forks":[1549,1549],"watchers":[89,89],"issues_open":[null,null],"prs_open":[null,null]},"boards":{},"same_owner":[{"full_name":"pathwaycom/pathway","name":"pathway","boards":{}}],"issues":[{"number":124,"title":"Getting Started instructions are fragmented across templates, making initial setup unclear","comments":2,"created_at":"2025-12-15T07:45:35Z"},{"number":81,"title":"[Question]: Could it be An APP in cellphone ？","comments":2,"created_at":"2024-09-05T09:22:31Z"},{"number":53,"title":"Pathway's connector issue in Jsonlines","comments":2,"created_at":"2023-08-15T08:12:44Z"},{"number":46,"title":"[FEATURE] OpenAI Chat Completion response streaming support","comments":1,"created_at":"2023-08-08T09:06:43Z"},{"number":15,"title":"Question: LLM app for production","comments":1,"created_at":"2023-07-23T10:56:27Z"}],"discussions":[{"number":128,"title":"Real-time investment analysis with LLM-App — options flow scanner + price alerts (open source)","comments":0,"category":"General","created_at":"2026-05-13T13:32:05Z"},{"number":122,"title":"Best practices for deploying and scaling Pathway LLM app templates on Kubernetes clusters","comments":4,"category":"Q&A","created_at":"2025-11-17T10:31:59Z"},{"number":117,"title":"Streaming responses","comments":2,"category":"Ideas","created_at":"2025-03-19T15:31:15Z"},{"number":116,"title":"How to show document fragments/snippets in Q&A RAG app?","comments":1,"category":"Q&A","created_at":"2025-03-18T15:03:14Z"},{"number":115,"title":"How to implement AzureOpenAI instead of OpenAI?","comments":2,"category":"Q&A","created_at":"2025-02-17T07:07:41Z"},{"number":78,"title":"CPU usage is max even when no ingestion is taking place and with small amount of data","comments":2,"category":"General","created_at":"2024-06-28T06:18:57Z"},{"number":73,"title":"Build and run the app using Docker","comments":1,"category":"Q&A","created_at":"2023-11-28T12:11:35Z"},{"number":66,"title":"Is there a way to use llm-app with SentenceTransformers + OpenAI gpt-3.5-turbo / Anthropic Claude to chat with private documents??","comments":1,"category":"General","created_at":"2023-10-03T07:55:36Z"}],"latest_release":{"name":"serviette 0.1.8 — llm-app is now serviette","tag":"v0.1.8","published_at":"2026-11-02T13:15:54Z","body":"> **llm-app is now serviette.** This repository used to host Pathway's LLM app templates. They are all still available, unchanged, in [`pathway/examples/llm-app`](https://github.com/pathwaycom/pathway/tree/main/examples/llm-app). The repository itself now hosts **serviette**, a no-code RAG server built from what we learned from those templates.\r\n\r\n**serviette is a no-code RAG server that keeps its answers in sync with your documents.** Point it at a folder, pick a vector database and an embedder in one YAML file, and you get a chat UI and a REST API that answer from those documents and cite their sources. Edits, new files and deletions show up in the answers within seconds, with no re-indexing step.\r\n\r\n<p align=\"center\"><img src=\"https://raw.githubusercontent.com/pathwaycom/serviette/main/docs/assets/demo.gif\" alt=\"serviette demo\"></p>\r\n\r\n## Try it\r\n\r\n```bash\r\npip install serviette\r\nexport PATHWAY_LICENSE_KEY=...        # free: https://pathway.com/framework/get-license\r\nexport OPENAI_API_KEY=sk-...\r\nserviette demo --embedder openai      # → chat at http://localhost:8989\r\n```\r\n\r\nTo run it on your own documents, use `serviette wizard` and then `serviette up`. See the [README](https://github.com/pathwaycom/serviette#readme).\r\n\r\n## What's inside\r\n\r\n- **No code:** one YAML file, or have `serviette wizard` generate it.\r\n- **8 vector databases:** DuckDB (embedded, the default), pgvector, Qdrant, Milvus, ChromaDB, Weaviate, Pinecone, MongoDB Atlas. Each one has integration tests against a real instance.\r\n- **Live sources:** local folders, Google Drive, S3/MinIO, SharePoint, FTP/SFTP/WebDAV.\r\n- **Multimodal:** PDFs with tables, Office documents and scans by default. Audio and video are added automatically when the corresponding API keys are set.\r\n- **Retrieval options, each enabled in config:** hybrid BM25 + vector search, reranking, adaptive RAG, query decomposition and MMR.\r\n- **Fully local option:** local embeddings with DuckDB, with no API keys for indexing.\r\n- **Separate indexer and server:** the server is stateless and scales horizontally, and the indexer splits work across worker processes.\r\n\r\n## Benchmarks\r\n\r\n- **Indexing:** 50 GB of text (26M pages, 17M files) in 6 hours on a 96-core machine with local embeddings, with peak indexer memory of 14.65 GiB. See the [benchmark details](https://github.com/pathwaycom/serviette/tree/main/benchmarks/realtime-data-indexing).\r\n- **Accuracy:** 0.50 gold-article recall on [FRAMES](https://arxiv.org/abs/2409.12941), versus 0.15 for the paper's BM25 baseline. Adding serviette to gpt-5 improves gpt-5's accuracy by +5.2 pp. See the [full report](https://github.com/pathwaycom/serviette/blob/main/benchmarks/frames/REPORT.md).\r\n\r\n## Coming from llm-app?\r\n\r\n| llm-app template | Where it is now | Closest serviette feature |\r\n|---|---|---|\r\n| `question_answering_rag` | [templates/question_answering_rag](https://github.com/pathwaycom/pathway/tree/main/examples/llm-app/templates/question_answering_rag) | `serviette up`: chat + `/api/v1` |\r\n| `document_indexing` | [templates/document_indexing](https://github.com/pathwaycom/pathway/tree/main/examples/llm-app/templates/document_indexing) | `serviette indexer` + `/api/v1/retrieve` |\r\n| `adaptive_rag` | [templates/adaptive_rag](https://github.com/pathwaycom/pathway/tree/main/examples/llm-app/templates/adaptive_rag) | `rag.adaptive` |\r\n| `multimodal_rag` | [templates/multimodal_rag](https://github.com/pathwaycom/pathway/tree/main/examples/llm-app/templates/multimodal_rag) | multimodal parsing, on by default |\r\n| `video_rag_twelvelabs` | [templates/video_rag_twelvelabs](https://github.com/pathwaycom/pathway/tree/main/examples/llm-app/templates/video_rag_twelvelabs) | video parsing via `TWELVELABS_API_KEY` |\r\n| `private_rag`, `slides_ai_search`, `drive_alert`, `unstructured_to_sql_on_the_fly`, `document_store_mcp_server` | [templates/](https://github.com/pathwaycom/pathway/tree/main/examples/llm-app/templates) | — |\r\n\r\nThe cookbooks are in [`examples/llm-app/c"},"readme":true,"readme_zh":false,"news":[],"stale":false,"snapshot_at":"2026-11-10T09:35:25Z","history_start":"2026-09-06"}