My First Impression of Google's NotebookLM

My First Impression of Google's NotebookLM

I came across NotebookLM from my social media feed, and it looks interesting. With NotebookLM, you can upload documents, videos, web urls and let the AI agents talk about the uploaded material. That sounds intriguing. Recently I wrote an article about software complexity and shared my view point. Many people appreciated it and some people didn’t. That is fine to have different opinions. I thought, lets see how NotebookLM interprets what I said.

Continue reading »
Running your own Spring Initializr and using it from IntelliJ IDEA

Running your own Spring Initializr and using it from IntelliJ IDEA

If you ever worked with Spring Boot, then you are probably aware of Spring Initializr. The Spring Initializr is a web application that you can use to create a Spring Boot application. Do you know Spring Initializr itself is an open-source Spring Boot application? You can fork it, customize it, deploy on your infrastructure and use it to generate Spring Boot applications. The next question would be what kind of customizations I can do?

Continue reading »
Master the Art of Requesting Technical Help: A Handy Email Template

Master the Art of Requesting Technical Help: A Handy Email Template

As a software developer, at the beginning of my career, I thought it was more important to learn one more programming language or framework or library. But as years passed by, I realized it is also equally important to learn how to interact with people. Now remote work is becoming new normal and social media platforms like Twitter, LinkedIn, etc. are a common place to interact with people across the globe.

Continue reading »
Mastering Spring Boot in 5 Stages

Mastering Spring Boot in 5 Stages

Spring Boot is the most popular framework in the Java world to build enterprise applications. Also, Spring Boot is the most sought-after skill to get hired as a Java developer. Here is my recommended approach to learn Spring Boot. 1. Prerequisites: What you should already know If you are completely new to Java, then directly jumping on to Spring Boot is NOT recommended. First, learning Core Java and get familiar with Java ecosystem.

Continue reading »
A path to become a Polyglot Programmer

A path to become a Polyglot Programmer

Nowadays, we are using a wide range of technologies and tools for building modern software systems. As software developers, we need to keep upskilling ourselves to be able to build the software efficiently. One question that often pops up is, should I become a Generalist or a Specialist? Personally, I highly recommend to be a generalist at the beginning of your career so that you can get some experience in building software end-to-end.

Continue reading »
Thymeleaf Layouts using Fragment Expressions in Spring Boot GraalVM Native Image

Thymeleaf Layouts using Fragment Expressions in Spring Boot GraalVM Native Image

Typically, in Spring Boot + Thyemleaf applications, we use thymeleaf-layout-dialect to define the common layout of the web pages and it works fine. But when we compile the Spring Boot application to GraalVM native image, it is failing due to this error. I tried many suggestions mentioned in the above issue, but none of them worked for me. Then Oliver Drotbohm suggested me Flexible layouts approach to create layouts support natively provided by Thymeleaf itself.

Continue reading »
Spring AI RAG using Embedding Models and Vector Databases

Spring AI RAG using Embedding Models and Vector Databases

In this article, we will explore the following: Introduction to Embedding Models. Loading data using DocumentReaders. Storing embeddings in VectorStores. Implementing RAG (Retrieval-Augmented Generation), a.k.a. Prompt Stuffing. Sample Code Repository You can find the sample code for this article in the GitHub repository Large Language Models(LLMs) like OpenAI, Azure Open AI, Google Vertex, etc are trained on large datasets. But those models are not trained on your private data, so they may not be able to answer questions specific to your domain.

Continue reading »
Getting Started with Spring AI and Open AI

Getting Started with Spring AI and Open AI

In this article, we will explore the following: Introduction to Spring AI. Interacting with Open AI using Spring AI. Using PromptTemplates. Using OutputConverters. Sample Code Repository You can find the sample code for this article in the GitHub repository Introduction to Open AI and Spring AI ChatGPT took the world by storm when it was released by OpenAI. It was the first time that a language model was able to generate human-like responses to prompts.

Continue reading »
LangChain4j Retrieval-Augmented Generation (RAG) Tutorial

LangChain4j Retrieval-Augmented Generation (RAG) Tutorial

In this article, we will explore the following: Understand the need for Retrieval-Augmented Generation (RAG). Understand EmbeddingModel, EmbeddingStore, DocumentLoaders, EmbeddingStoreIngestor. Working with different EmbeddingModels and EmbeddingStores. Ingesting data into EmbeddingStore. Querying LLMs with data from EmbeddingStore. Sample Code Repository You can find the sample code for this article in the GitHub repository LangChain4j Tutorial Series You can check out the other articles in this series: Part 1: Getting Started with Generative AI using Java, LangChain4j, OpenAI and Ollama Part 2: Generative AI Conversations using LangChain4j ChatMemory Part 3: LangChain4j AiServices Tutorial Part 4: LangChain4j Retrieval-Augmented Generation (RAG) Tutorial Understand the need for Retrieval-Augmented Generation (RAG) In the previous articles, we have seen how to ask questions and get responses from the AI models.

Continue reading »
LangChain4j AiServices Tutorial

LangChain4j AiServices Tutorial

In this article, we will explore the following: Using LangChain4j AiServices to interact with LLMs. How to ask questions and map responses to different formats? Summarizing the given text in different formats. Analyzing the sentiment of the given text. Sample Code Repository You can find the sample code for this article in the GitHub repository In the previous article, we have seen how to have a conversation using LangChain4j ChatMemory and ConversationalChain.

Continue reading »