An open-source Retrieval Augmented Generation (RAG) chatbot built on Weaviate, providing an end-to-end, seamless, and user-friendly RAG solution.
Verba Project: A Detailed Overview
Project Overview
Verba is an open-source Retrieval Augmented Generation (RAG) application developed by Weaviate, affectionately known as "The Golden RAGtriever." It offers an end-to-end, seamless, and user-friendly RAG solution, enabling users to explore datasets and extract insights through simple steps, whether utilizing local models like Ollama and Huggingface or connecting to LLM providers such as Anthropic, Cohere, and OpenAI.
Core Features
🤖 Model Support
- Local Models: Supports Ollama (e.g., Llama3) and HuggingFace models
- Cloud Models: Integrates with major AI service providers like OpenAI, Anthropic, Cohere, Groq, Novita AI, and Upstage
- Embedding Models: Supports various embedding models, including Weaviate, SentenceTransformers, VoyageAI, and others
📁 Data Support
- File Types: Supports multiple formats such as .txt, .md, .pdf, .csv, .docx, .pptx
- Data Sources: Data can be imported from local file systems, GitHub repositories, URLs, and more
- Special Features:
- Web scraping via Firecrawl
- Document parsing via UpstageDocumentParse
- Audio file processing via AssemblyAI
✨ RAG Functionality Features
- Hybrid Search: Combines semantic search with keyword search
- Autocompletion Suggestions: Provides query suggestion functionality
- Smart Filtering: Supports filtering by document, document type, etc.
- Customizable Metadata: Full control over metadata settings
- Asynchronous Ingestion: Asynchronous data ingestion for improved processing speed
🗡️ Document Chunking Techniques
- Token Chunking: Document chunking based on tokens
- Sentence Chunking: Sentence-level chunking using spaCy
- Paragraph Chunking: Supports paragraph-level document chunking
Technical Architecture
Verba adopts a modular architectural design, breaking down the RAG process into several independent, modular steps, including:
- ReaderManager: Receives a list of strings (paths, URLs, or text) and outputs a list of Verba documents
- ChunkerManager: Receives a list of documents and chunks each document's text into smaller fragments
- EmbeddingManager: Receives a list of documents and embeds them into Weaviate
Deployment Methods
💻 Local Deployment
Run locally using Weaviate Embedded:
pip install goldenverba
verba start
🐳 Docker Deployment
git clone https://github.com/weaviate/Verba
docker compose up -d --build
🌩️ Cloud Deployment
Connect to a Weaviate Cloud Services (WCS) instance
⚙️ Custom Deployment
Supports connecting to a self-hosted Weaviate instance
Usage Workflow
1. Environment Configuration
Create a .env
file to configure API keys:
# OpenAI Configuration
OPENAI_API_KEY=your_openai_key
# Anthropic Configuration
ANTHROPIC_API_KEY=your_anthropic_key
# Weaviate Cloud Configuration
WEAVIATE_URL_VERBA=your_weaviate_url
WEAVIATE_API_KEY_VERBA=your_weaviate_key
# Ollama Local Configuration
OLLAMA_URL=http://localhost:11434
2. Data Import
- Select "Import Data" via the web interface
- Supports adding files, directories, or URLs
- Individual configuration options available for each file
3. Configure RAG Pipeline
Configure on the "Config" page:
- Select embedding model
- Select generation model
- Set chunking strategy
- Configure retrieval parameters
4. Start Conversation
On the "Chat" page:
- Enter questions to get relevant answers
- View semantically relevant document snippets
- Receive AI-generated comprehensive answers
Special Features
📊 3D Vector Visualization
Provides a 3D visualization interface for vector data, helping users understand data distribution
🎨 Customizable Frontend
Fully customizable frontend interface, supporting brand customization
🔄 Semantic Caching
Leverages Weaviate's semantic caching feature to embed generated responses and queries, ensuring that repeated queries are processed quickly by checking the cache for previously handled semantically identical queries.
🤝 RAG Library Integration
- LangChain: LangChain RAG pipeline already supported
- Haystack: Planned support
- LlamaIndex: Planned support
Application Scenarios
- Personal Knowledge Management: Building an intelligent query system for personal document libraries
- Enterprise Document Retrieval: Helping employees quickly find relevant corporate documents and information
- Research Assistance: Assisting researchers in analyzing and querying research materials
- Customer Service: Building an intelligent customer service system based on an enterprise knowledge base
- Education and Training: Creating interactive learning material query systems
Project Status
This project is community-driven, with open-source support provided by Weaviate. While the team strives to address issues quickly, maintenance urgency may not be as high as for production software. Community contributions are welcome to help stabilize the project.
Technical Requirements
- Python Version: >=3.10.0, <3.13.0
- Operating System: Linux, macOS (Weaviate Embedded is not currently supported on Windows)
- Hardware: Depends on the chosen model and data volume
Open Source Contributions
The project welcomes contributions in various forms:
- Feature enhancements and bug fixes
- Documentation improvements
- New feature suggestions
- Testing and feedback
For more details, please refer to the project's Contribution Guide and Technical Documentation.
Future Development
According to the project roadmap, planned features include:
- Advanced query capabilities (LLM-evaluated task delegation)
- Reranking functionality (context-based result reranking)
- RAG evaluation interface
- More RAG library integrations
Verba represents a best-practice implementation of RAG technology, offering users a powerful and easy-to-use intelligent document querying solution.