AI & Machine Learning Projects

Leveraging artificial intelligence to build intelligent systems with conversational interfaces and context-aware capabilities.

01

AI Chatbot with Conversational Memory

Intelligent conversational AI system built with Spring Boot and Spring AI framework, featuring persistent memory for context retention across multiple interactions. Implements prompt engineering with custom templates and OpenAI GPT-4 integration for natural language understanding and generation.

The chatbot uses InMemoryChatMemory for maintaining conversation history and PromptChatMemoryAdvisor for context-aware responses. Features include template-based prompt engineering with StringTemplate format, ChatClient API for OpenAI interactions, and RESTful endpoints for seamless integration with frontend applications.

Developed with Spring Boot 3.3, Java 21, and Spring AI milestone releases. Implements advisor pattern for logging and memory management, record-based DTOs for immutability, and resource loading for prompt templates from classpath resources.

Key Features

  • Conversational memory using InMemoryChatMemory for multi-turn dialogue continuity
  • Prompt engineering with StringTemplate (.st) files for dynamic prompt generation
  • OpenAI GPT-4 integration via Spring AI ChatClient with configurable model parameters
  • PromptChatMemoryAdvisor for automatic context injection into AI requests
  • SimpleLoggerAdvisor for request/response debugging and conversation tracking
  • RESTful API with JSON request/response using Spring Web and Jackson
  • Resource loading from classpath for externalized prompt template management
  • Error handling with try-catch blocks and fallback responses for robustness
  • Lombok integration for reduced boilerplate code with @RequiredArgsConstructor and @Slf4j
Spring Boot Spring AI Java 21 OpenAI API GPT-4 REST API Maven Lombok Prompt Engineering
Live Demo: AI Chatbot Conversation
02

AI Flight Reservation Agent with SQL Generation

Autonomous AI agent system for flight reservations combining natural language processing with automated SQL query generation. Uses Spring AI and OpenAI GPT-4 to understand user intent, generate database queries dynamically, and manage complete booking workflows through conversational interfaces.

The agent implements a two-step reasoning process: first generating SQL operations from natural language, then executing queries against an H2 database and formatting results for conversational responses. Features include custom ChatMemory implementation for persistent conversation storage, enum-based SQL operation classification, and intelligent query execution with error handling and result formatting.

Built with Spring Boot, Spring JDBC for database operations, and Spring AI for LLM orchestration. Implements schema-aware prompt engineering where the AI receives DDL definitions to generate syntactically correct SQL. Uses record-based response models for structured AI output parsing and JdbcTemplate for safe query execution.

Key Features

  • Automated SQL generation from natural language using GPT-4 with DDL context injection
  • Two-phase AI workflow: query generation followed by result interpretation
  • Custom ChatMemory implementation with ConcurrentHashMap for multi-user conversation management
  • H2 in-memory database with flights, customers, and reservations schema
  • SQL operation classification with enum-based routing (SELECT/INSERT/UPDATE/DELETE)
  • JdbcTemplate integration for parameterized query execution and injection prevention
  • Dynamic result formatting with column metadata extraction and row serialization
  • Conversation continuity with 20-message history retrieval per request
  • Error handling with exception catching and user-friendly error messages
  • RESTful API with user ID-based session management for multi-user support
Spring Boot Spring AI Java 21 OpenAI API GPT-4 H2 Database Spring JDBC SQL Generation REST API Maven
Live Demo: Flight Booking with AI Agent
03

RAG Technical Documentation Assistant with Vector Search

Retrieval-Augmented Generation (RAG) system for technical documentation queries using Spring AI and pgvector. Processes Java 21 Language Specification PDF, creates vector embeddings with OpenAI, stores in PostgreSQL with vector extension, and performs semantic similarity search for accurate context-aware responses.

The system implements document chunking with PagePdfDocumentReader, vector embedding generation with OpenAI's text-embedding-ada-002 model, and HNSW indexing for efficient similarity search. Features automated document loading on startup, top-K retrieval with configurable result count, and prompt engineering with retrieved context injection for grounded AI responses.

Built with Spring Boot Docker Compose integration for automatic PostgreSQL pgvector provisioning, Spring AI VectorStore abstraction for database operations, and custom prompt templates for question-answering with source attribution. Implements bilingual support (English/Spanish queries) with English-only responses and confidence filtering for unknown queries.

Key Features

  • RAG architecture with document retrieval before AI generation for factual accuracy
  • PDF processing with PagePdfDocumentReader and configurable page-per-document chunking
  • Vector embeddings using OpenAI text-embedding-ada-002 (1536 dimensions)
  • PostgreSQL with pgvector extension for efficient vector similarity search
  • HNSW indexing with cosine distance for approximate nearest neighbor search
  • Automated document loading with @PostConstruct and existence checking via JdbcClient
  • Top-K retrieval with configurable result count (default: 3 most similar documents)
  • Prompt engineering with PromptTemplate and dynamic parameter injection
  • Docker Compose integration for automatic database provisioning and configuration
  • Bilingual query support with language detection and response formatting
  • Source attribution with document content returned alongside AI responses
Spring Boot Spring AI Java 21 OpenAI API pgvector PostgreSQL RAG Docker Compose Vector Search PDF Processing
Live Demo: RAG Documentation Query