OnboardEase: A dynamic learning assistant designed to simplify the onboarding and training process for new hires. Users can upload documents or enter URLs for training materials, and the application provides a platform for asking training-related queries. Built with Spring Boot, Langchain4j and Spring AI.
💡 This application is not business oriented and my focus is mostly on technical part, I just want to play with LLM/RAG chatbot assistant by building a sample app from scratch with two main libraries in java ecosystem : Spring AI 🍃 and Langchain4j 🦜️.
🌀 This Application is in-progress
and I will add new features over time. 🌀
- ✅ Choose between two libraries for chatbot assistant :
Langchain4j
orSpring AI
- ✅️ Upload documents or enter URLs for training materials
- ✅️ Ingest documents and give context to the chatbot
- ✅️ Ask training-related queries
🍃️ Spring Boot
🦜️ Langchain4j
🤖️ Spring AI
📦️ Maven
🐳️ Docker
🐘️ PostgreDB
🔍 PgVector (Postgres extension for similarity search)
🧠 Openai
🌐️ Thymeleaf
- 1️⃣ Clone the project on your local machine
git clone https://github.com/miliariadnane/onboardease-rag-training-assistant.git
- 2️⃣ Install dependencies
mvn clean install
- 3️⃣ Run docker-compose file :
docker-compose up -d
- 4️⃣ Open PgAdmin UI and create two databases :
vector_store
andlangchain_vector_store
- 4️⃣- 1️⃣ For
vector_store
database, create an extension (do this once in each database where you want to use it) :CREATE EXTENSION vector;
- 4️⃣- 1️⃣ For
- 5️⃣ Configure your openai API key in
application.properties
file or in your environment variables - 6️⃣ Run the application
mvn spring-boot:run
- 🚀️ Open your browser and navigate to
http://localhost:8080
(Enjoy the app 🎉️)
- 1️⃣ Ingest domain data and give context to the chatbot.
- 2️⃣ Reader to retrieve text from the documents.
- 3️⃣ Splitter to split the text into chunks.
- 4️⃣ Embedding to convert the text into vectors.
- 5️⃣ Store the vectors in the vector store database.
- 6️⃣ User ask the question to the chatbot.
- 7️⃣ Splitter to split the question into chunks.
- 8️⃣ Embedding to convert the question into vectors.
- 9️⃣ Similarity search to find the most relevant chunks between the question and the documents ingested.
- 🔁️ Loop through the chunks and return the most relevant answer to the user.
- 🎉️ Return the answer to the user.
- 🚧 Fix AI text embedding issue (Spring AI)
- 🚧 Implement similarity search to find the most relevant answer to the user (Spring AI)
- 🚧 Add system message prompt (Spring AI)
- ⭐️️ Star this repository if you find it useful.
- 🐛️ If you find a bug, raise an issue or fix it and send a pull request.
- 📢️ If you have any feature requests, raise an issue or send a pull request.
- 🤲 If you have a moment, don't forget to make a duaa for me and my parents.