|
--- |
|
license: mit |
|
title: Iver |
|
sdk: gradio |
|
emoji: π |
|
colorFrom: blue |
|
colorTo: red |
|
short_description: Verifiseringsspesialisten Iver |
|
sdk_version: 5.23.3 |
|
--- |
|
# Iver |
|
|
|
A Retrieval-Augmented Generation (RAG) based chatbot with excellent Norwegian language support, built using Hugging Face's Inference API. |
|
|
|
## Features |
|
|
|
- **Norwegian Language Support**: Leverages state-of-the-art Norwegian language models like NorMistral, Viking, and NorskGPT |
|
- **Document Processing**: Upload and process documents in various formats (PDF, TXT, HTML) |
|
- **RAG Implementation**: Retrieves relevant context from documents to generate accurate responses |
|
- **Embeddable Interface**: Easily embed the chatbot in any website using iframe or JavaScript widget |
|
- **Lightweight Architecture**: Uses Hugging Face's Inference API instead of running models locally |
|
|
|
## Architecture |
|
|
|
This chatbot uses a lightweight architecture that leverages Hugging Face's hosted models: |
|
|
|
1. **Document Processing**: Documents are processed locally, extracting text and splitting into chunks |
|
2. **Embedding Generation**: Document chunks are embedded using Hugging Face's Inference API |
|
3. **Retrieval**: When a query is received, the most relevant document chunks are retrieved |
|
4. **Response Generation**: The LLM generates a response based on the retrieved context |
|
|
|
## Getting Started |
|
|
|
### Prerequisites |
|
|
|
- Python 3.10+ |
|
- A Hugging Face account (for API access) |
|
|
|
### Installation |
|
|
|
1. Clone the repository: |
|
```bash |
|
git clone https://huggingface.co/spaces/username/norwegian-rag-chatbot |
|
cd norwegian-rag-chatbot |
|
``` |
|
|
|
2. Install dependencies: |
|
```bash |
|
pip install -r requirements-ultra-light.txt |
|
``` |
|
|
|
3. Set up your Hugging Face API key: |
|
```bash |
|
export HF_API_KEY="your_api_key_here" |
|
``` |
|
|
|
### Running the Chatbot |
|
|
|
```bash |
|
python app.py |
|
``` |
|
|
|
The chatbot will be available at http://localhost:7860 |
|
|
|
## Usage |
|
|
|
### Chat Interface |
|
|
|
The main chat interface allows you to: |
|
- Ask questions in Norwegian |
|
- Receive responses based on your uploaded documents |
|
- Adjust temperature and other settings |
|
|
|
### Document Upload |
|
|
|
You can upload documents to provide context for the chatbot: |
|
- Supported formats: PDF, TXT, HTML |
|
- Documents are automatically processed and indexed |
|
- The chatbot will use these documents to provide more accurate responses |
|
|
|
### Embedding |
|
|
|
You can embed the chatbot in your website using: |
|
- iFrame embedding |
|
- JavaScript widget |
|
- Direct link |
|
|
|
## Deployment |
|
|
|
The chatbot is designed to be deployed to Hugging Face Spaces: |
|
|
|
1. Create a new Space on Hugging Face |
|
2. Upload the code to the Space |
|
3. Set the HF_API_KEY secret in the Space settings |
|
4. The Space will automatically build and deploy the chatbot |
|
|
|
## Models |
|
|
|
The chatbot can use various Norwegian language models: |
|
|
|
- **NorMistral-7b-scratch**: A large Norwegian language model pretrained from scratch |
|
- **Viking 7B**: A multilingual model for Nordic languages |
|
- **NorskGPT**: A Norwegian language model based on Mistral or LLAMA2 |
|
|
|
For embeddings, it uses: |
|
- **NbAiLab/nb-sbert-base**: A Norwegian sentence embedding model |
|
|
|
## License |
|
|
|
This project is licensed under the MIT License - see the LICENSE file for details. |
|
|
|
## Acknowledgements |
|
|
|
- [Hugging Face](https://huggingface.co/) for hosting the models and providing the Inference API |
|
- [Gradio](https://gradio.app/) for the web interface framework |
|
- The creators of the Norwegian language models used in this project |