--- name: chatbot-implementation description: Details of the RAG Chatbot, including UI and backend logic. --- # Chatbot Logic ## Overview A specialized RAG (Retrieval Augmented Generation) chatbot that helps users learn from the textbook content. ## Backend - **Route**: `app/api/chat/route.ts` - **Logic**: 1. Receives `query` and `history`. 2. Embeds query using Gemini or OpenAI embedding model. 3. Searches Qdrant (vector DB) for relevant textbook chunks. 4. Constructs context from matches. 5. Generates response using Gemini Flash/Pro. ## Vector Search (Qdrant) We use Qdrant for storing embeddings of the textbook. - Collection: `textbook_chunks` (or similar). - Fields: `text`, `source`, `chunk_id`. ## UI Component - **Location**: `textbook/src/components/Chatbot/index.tsx`. - **Features**: - Floating chat window. - Size controls (Small, Medium, Large). - Markdown rendering of responses. - Context selection (highlight text to ask about it). - Mobile responsive design. - Auth awareness (personalizes answer based on user profile). ## Styling - **CSS**: `styles.module.css` (Premium animations, shadow effects). - **Themes**: Dark/Light mode compatible (using `--ifm` variables).