Browser-first text exploration, clustering, and semantic search
A fully browser-native semantic search, exploration, and RAG system that runs 100% client-side.
π Built on Open-source | π Privacy-preserving | π Interactive Visualization & Exploration | π€ AI-powered RAG
Vectoria is a tool for browser-first text exploration, clustering, and semantic search that combines:
- Document embedding and semantic search
- Interactive 2D visualization & exploration via UMAP clustering
- RAG (Retrieval-Augmented Generation) for intelligent Q&A
- Hybrid search (vector + keyword)
All running entirely in your browser using your device's hardware with zero backend infrastructure.
- Personal knowledge bases - Organize notes, papers, documents.
- Research data exploration - Explore corpora and qualitative data.
- Corporate document analysis - Privacy-preserving semantic search.
- Educational tools - Learn about embeddings, RAG, and clustering.
- Multilingual content - Analyze text in multiple languages.
- Multi-format support - CSV, Excel, JSON, TXT
- Multilingual embeddings - Multilingual-e5-small (100+ languages)
- Browser-based LLM - Multiple models (Gemma 2, Llama 3.2, Qwen 3, etc.) for RAG via WebGPU
- UMAP visualization - Interactive 2D semantic maps
- Hybrid search - Vector similarity + BM25 keyword matching
- Persistent storage - IndexedDB caching for instant reload
- Privacy-first - All data processing happens on your device
Warning
System requirements & first load
- Storage: The first load will download AI models and requires at least 5GB of free disk space.
- Hardware: A device with a dedicated GPU or modern integrated graphics (Apple Silicon M1/M2/M3) is strongly recommended.
Browser requirements:
- Chrome/Edge 120+ (WebGPU support required)
- 8GB+ RAM (16GB recommended for large datasets)
- Stable internet (first load only - cached thereafter)
Select and load:
- CSV files (with header row)
- Excel spreadsheets (.xlsx, .xls)
- JSON files (array of objects)
- Plain text files (.txt)
- Select the text column to analyze.
- Click "Process Data".
- Watch progress: Parsing β Embedding β UMAP dimensionality reduction β HDBSCAN clustering β Done.
- The interactive 2D visualization will appear automatically - ready for exploration and search.
Fast search
- Type a query:
"machine learning applications" - Get instant results with text highlighting. Supports keywords and Boolean logic.
Semantic search
- Type a conceptual query.
- Get results that are semantically similar to your query, even if they don't share keywords.
RAG query (AI-powered)
- Switch to "Semantic Search (RAG)".
- Ask:
"What are the main topics discussed?" - The local AI generates an answer with source citations.
vectoria/
βββ web_interface/ # Main application
β βββ index.html # Entry point
β βββ static/
β β βββ css/ # Styling
β β βββ js/
β β βββ browser-ml/ # Core ML modules
β β β βββ chunking/ # Document chunking (Chonkie.js)
β β β βββ embedding/ # Embedding utilities
β β β βββ umap-wasm/ # UMAP WebAssembly
β β β βββ embeddings.js
β β β βββ embedding-worker.js
β β β βββ vector-search.js
β β β βββ llm-rag.js
β β β βββ llm-worker.js
β β β βββ file-processor.js
β β β βββ clustering.js
β β β βββ hdbscan-pyodide.js
β β β βββ pyodide-hdbscan-worker.js
β β β βββ umap-wasm-adapter.js
β β β βββ storage.js
β β β βββ export.js
β β β βββ index.js
β β βββ browser-integration.js
β β βββ browser-capabilities.js
β β βββ config-manager.js
β β βββ export-import.js
β β βββ fast-search.js
β β βββ hyde-handler.js
β β βββ main.js
β β βββ model-constraints.js
β β βββ search-enhancement.js
β β βββ vectoria.js
β β βββ viz.js
β β βββ webgl-renderer.js
β βββ sw.js # Service worker
βββ package.json
βββ vercel.json
| Module | Purpose | Technology |
|---|---|---|
embeddings.js |
Text β vectors | @huggingface/transformers (ONNX) |
vector-search.js |
Similarity + keyword search | JS HNSW + BM25 |
llm-rag.js |
RAG Q&A | WebLLM (multi-model) |
file-processor.js |
Parse CSV/Excel/JSON/TXT | PapaParse, SheetJS |
clustering.js |
UMAP + HDBSCAN clustering | UMAP-WASM, Pyodide |
storage.js |
Persistent caching | localforage (IndexedDB) |
chunking/ |
Document chunking for RAG | Chonkie.js |
index.js |
Pipeline orchestration | Coordinates all modules |
- Embeddings: @huggingface/transformers +
multilingual-e5-small(384D, 100+ languages) - LLM: WebLLM with multi-model support (Gemma 2, Llama 3.2, Qwen 3, DeepSeek R1, SmolLM2, Phi 3.5)
- Vector search: Pure JavaScript HNSW implementation
- Keyword search: BM25 (TF-IDF ranking)
- Dimensionality reduction: UMAP-WASM (WebAssembly accelerated)
- Clustering: HDBSCAN via Pyodide (scikit-learn in browser)
- Document chunking: Chonkie.js
- Storage: IndexedDB via localforage
- UI: Vanilla JavaScript
- Visualization: WebGL (hardware-accelerated)
- Styling: Custom CSS with glassmorphism
- Icons: Font Awesome
- Hosting: Vercel (edge network)
- Models: Loaded from HuggingFace CDN
All processing happens in your browser and on your device.
- No data uploaded to servers.
- No tracking or analytics.
- No cookies (except localStorage/IndexedDB for caching).
Clear data anytime
- Use the "Delete Data & Cache" button in the app to remove indexed data and cached AI models.
- Or clear via your browser's "Clear Browsing Data" settings.
Note: Processing speed and analysis capabilities are entirely dependent on your device's power.
Enable WebGPU in your browser:
- Go to
chrome://flags - Search "WebGPU"
- Set to Enabled
- Use a smaller dataset (<10K docs).
- Close other resource-heavy tabs.
- Use a desktop browser (mobile browsers allocate less memory).
- Ensure Hardware Acceleration is enabled in browser settings.
- Reduce the number of UMAP neighbors in settings.
Technologies:
- @huggingface/transformers by Hugging Face
- WebLLM by MLC AI
- UMAP WebAssembly implementation by Apple
- localforage by Mozilla
- Chonkie for document chunking
- Pyodide for Python distribution in the browser
Thank you for making this possible.
- Zero Infrastructure & Zero Cost - No servers, no databases, no backend.
- Privacy-First - Data never leaves the user's device.
- Offline-Capable - Works without an internet connection after initial load.
- Production-Ready - Complete, tested, and documented.
This proves that sophisticated AI applications can run entirely in the browser.
Contributions are incredibly welcome! Whether you're fixing a bug, improving the docs, or adding a new feature, every bit helps.
Feel free to:
- Fork the repository and experiment.
- Submit Pull Requests for bug fixes or new features.
- Report Issues if you find bugs or have ideas.
Support the project: If you find Vectoria interesting or useful, please give it a star β! It helps more people discover the project.
Vectoria - Semantic exploration without limits.
MIT License - Free for personal and commercial use.
