https://github.com/europanite/client_side_rag
Client-Side Browser-Based RAG.
https://github.com/europanite/client_side_rag
browser client-side docker docker-compose embeding expo gpu ingestion llm natural-language-processing nlp rag react react-native retrieval-augmented-generation typescript web-gpu web-llm webgpu webllm
Last synced: 2 months ago
JSON representation
Client-Side Browser-Based RAG.
- Host: GitHub
- URL: https://github.com/europanite/client_side_rag
- Owner: europanite
- License: apache-2.0
- Created: 2025-11-11T13:23:00.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2025-12-15T07:15:21.000Z (6 months ago)
- Last Synced: 2025-12-17T01:20:29.477Z (6 months ago)
- Topics: browser, client-side, docker, docker-compose, embeding, expo, gpu, ingestion, llm, natural-language-processing, nlp, rag, react, react-native, retrieval-augmented-generation, typescript, web-gpu, web-llm, webgpu, webllm
- Language: TypeScript
- Homepage: https://europanite.github.io/client_side_rag/
- Size: 724 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# [Client Side RAG](https://github.com/europanite/client_side_rag "Client Side RAG")
[](https://opensource.org/licenses/Apache-2.0)

[](https://github.com/europanite/client_side_rag/actions/workflows/ci.yml)
[](https://github.com/europanite/client_side_rag/actions/workflows/docker.yml)
[](https://github.com/europanite/client_side_rag/actions/workflows/deploy-pages.yml)





[PlayGround](https://europanite.github.io/client_side_rag/)
Client-side, browser-based Retrieval-Augmented Generation (RAG) playground.
Everything runs in the browser using Expo / React Native for Web with an optional local LLM powered by WebLLM (WebGPU). No custom backend service is required; the RAG index is served as static JSON.
---
## Features
- ⚡ **Pure client-side RAG**
- Retrieval runs entirely in the browser against a static JSON index (`corpus_chunks.json` and optional `corpus_embeddings.json`).
- 🤖 **Optional local LLM via WebLLM**
- If WebGPU is available, the app initializes WebLLM in the browser and uses it to generate answers conditioned on retrieved context.
- If initialization fails or WebGPU is missing, the UI switches to a fallback mode and shows only retrieved chunks.
- There is no application server: only static hosting. Any API base env vars are for compatibility with other setups.
---
## RAG Data
The RAG corpus lives under:
frontend/app/public/rag/corpus_chunks.json
optionally, frontend/app/public/rag/corpus_embeddings.json
corpus_chunks.json
This is a JSON array of chunks:
```json
[
{
"id": "doc1",
"text": "This project is a client-side RAG playground. It runs on React Native for Web and GitHub Pages without any backend.",
"source": "README"
},
{
"id": "doc2",
"text": "RAG stands for Retrieval Augmented Generation. The app retrieves relevant chunks from local JSON files and optionally uses a local LLM.",
"source": "docs"
}
]
```
---
## 🚀 Getting Started
### 1. Prerequisites
- [Docker Compose](https://docs.docker.com/compose/)
### 2. Build and start all services:
```bash
# set environment variables:
export REACT_NATIVE_PACKAGER_HOSTNAME=${YOUR_HOST}
# Build the image
docker compose build
# Run the container
docker compose up
```
### 3. Test:
```bash
docker compose \
-f docker-compose.test.yml up \
--build --exit-code-from \
frontend_test
```
---
# License
- Apache License 2.0