| ## Project Overview |
| This respository was created as part for an internship report, containing the source codes and respurces in developing the Retrieval-Augmented Generation(RAG) banking chatbot. |
|
|
| RAG allows the chatbot to answer questions based on the knowledge base instead of only using the Large Language Model (LLM). |
|
|
| ## Objectives |
| - Develop a chatbot capable of answering questions based on public dataset(s) |
| - Implement a Retrieval-Augmented Generation (RAG) pipeline |
| - Generate embeddings for efficient document retrieval |
| - Build a vector database |
| - Improve response accuracy by providing relevant context to the language model |
| - Implement advanced requirements |
| - Evaluate the chatbot's performance |
|
|
| ## Installation |
| Virtual environment: |
| python -m venv venv |
| venv\Scripts\activate |
|
|
| Libraries: |
| pip install -r requirements.txt |
|
|
| Run the chatbot: |
| streamlit run app.py |
|
|
| ## How it works |
| The chatbot follows a Retrieval-Augmented Generation (RAG) workflow: |
|
|
| 1. Documents are collected and preprocessed. |
| 2. The documents are split into smaller text chunks. |
| 3. Each chunk is converted into vector embeddings. |
| 4. The embeddings are stored in a vector database. |
| 5. When a user submits a query: |
| - The query is embedded into a vector. |
| - The vector database retrieves the most relevant document chunks. |
| - The retrieved context is combined with the user's query. |
| - The LLM generates an appropriate response using the retrieved information. |
|
|
| ## Requirements |
| - Python 3.10 or above |
| - LangChain |
| - Ollama |
| - Vector database (ChromaDB) |
| - Sentence Transformer / Embedding model |
| - python-dotenv |
| - Other dependencies listed in `requirements.txt` |
|
|
| --- |
| license: mit |
| Datasets: [Bank Faqs](https://www.kaggle.com/datasets/somanathkshirasagar/bankfaqs), [customer support conversations](https://www.kaggle.com/datasets/syncoraai/customer-support-conversations) |
| --- |
|
|