How nandinisingh005/aichatbot works
This Quarkus chatbot ingests documents from MinIO into Elasticsearch vector storage, then answers browser questions using retrieval-augmented chat. The main flows are browser → WebSocket → chat service → retrieval and model, and startup ingestion → document loading/parsing → embeddings → vector storage. The README documents Granite or OpenAI as model options and OpenShift deployment; sampled source confirms the application flow but not all provider wiring.
Main entry points: DocumentsIngestor.java Startup ingestor · SessionScopedChatBot.java Chat service · ElasticAugmentor.java Retrieval augmentor · MinioDocumentLoader.java MinIO document loader
Components 14
Chat interface
- Chat interface
gpt-java-chatbot-main/src/main/resources/META-INF/resources/websocket-chat.js - WebSocket endpoint
gpt-java-chatbot-main/src/main/java/org/acme/chat/ChatSocket.java
Chat and retrieval
- Chat service
gpt-java-chatbot-main/src/main/java/org/acme/chat/SessionScopedChatBot.java - Retrieval augmentor
gpt-java-chatbot-main/src/main/java/org/acme/chat/ElasticAugmentor.java - Embedding model
gpt-java-chatbot-main/src/main/java/org/acme/chat/EmbeddingModelProducer.java
Document ingestion
- Startup ingestor
gpt-java-chatbot-main/src/main/java/org/acme/chat/DocumentsIngestor.java - MinIO document loader
gpt-java-chatbot-main/src/main/java/org/acme/chat/minio/MinioDocumentLoader.java - Object source
gpt-java-chatbot-main/src/main/java/org/acme/chat/minio/MinioS3Source.java - MinIO client producer
gpt-java-chatbot-main/src/main/java/org/acme/chat/minio/MinioClientProducer.java
External services
- Embedding store
gpt-java-chatbot-main/src/main/java/org/acme/chat/ElasticEmbeddingStoreProducer.java - LLM provider
- MinIO storage
- Elasticsearch
Other components
- Chat user
Connections 16
- Chat user → Chat interface: asks question
- Chat interface → WebSocket endpoint: sends message
- WebSocket endpoint → Chat service: calls chat
- Chat service → Retrieval augmentor: retrieves context
- Chat service → LLM provider: generates answer
- Retrieval augmentor → Embedding model: embeds query
- Retrieval augmentor → Embedding store: searches vectors
- Embedding store → Elasticsearch: reads vectors
- Startup ingestor → MinIO storage: checks bucket
- Startup ingestor → MinIO document loader: loads documents
- MinIO document loader → Object source: loads objects
- Object source → MinIO storage: fetches object
- MinIO document loader → Startup ingestor: returns documents
- Startup ingestor → Embedding model: creates embeddings
- Startup ingestor → Embedding store: ingests vectors
- MinIO client producer → MinIO storage: creates client for