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:
- Documents are collected and preprocessed.
- The documents are split into smaller text chunks.
- Each chunk is converted into vector embeddings.
- The embeddings are stored in a vector database.
- 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