Is this you? As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.
Claim your profile
Articles by Rijul Rajesh
Free, Risk-Aware Code Review: Auto Approve Low-Risk Changes
In February, you helped git-lrc reach #3 Product of the Day. Thank you. git-lrc fixed one problem: developers committing AI-written code they hadn't read. As teams adopted it, a bigger problem showed up at the pull request. AI made code cheap to write. Reviews stayed expensive. Every PR waited in the same queue for the same few senior engineers. A renamed variable and a rewritten payment flow got the same attention. Seniors became the bottleneck. They skimmed. RISKY changes slipped into production.
What If a Small AI Model Could Speed Up a Big One Without Changing Its Answers?
Hello, I'm Rijul, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. Language models generate text one token at a time. Each new token depends on the tokens generated before it, so the model usually needs another forward pass before it can produce the next token. For a small model, this may be fast enough.
What If You Could Boost or Ban Specific Tokens in an LLM?
Hello, I'm Rijul, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. Sometimes, you may want a specific word to appear more often in an LLM's output. In other cases, you may want to prevent the model from generating certain words altogether. Prompting is one way to influence the model's choices.
Jev Can Make Decisions. But How Do You Work With It?
Hello, I'm Rijul, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. In the previous article, we explored the basic concepts behind Jev and its three decision types: Choice, Score, and Noul. Now, let's look at how to work with Jev more effectively.
What Makes a 3D Model Move? Understanding Animation Basics in Blender
Hello, I'm Rijul, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. In this article, we will explore how you can animate anything in Blender. Before that, we need to understand an important concept called keyframes. What Is a Keyframe? Suppose you want to animate a cube by moving it from point A, to point B, and then to point C.
How Do You Bring a 3D Character to Life? 6 Steps to Rigging in Blender
Hello, I'm Rijul, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. In this article, I'll show you how to rig a character model in Blender. You can imagine rigging like adding a skeleton inside a character. The bones give you something to control so you can move different parts of the model and eventually animate it.
I Gave AI Access to Blender. Here's What It Built
Hello, I'm Rijul, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. We see MCPs being used for a wide variety of tasks. But have you imagined how they can help with software like Blender? Let's take a look.
Can AI Get Better Without Getting Bigger? Meet Test-Time Compute
Hello, I'm Rijul, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. Usually, when we intend to upgrade our AI, we think about improving the model size. This is called training-time compute. But there is another scaling factor that can be used to scale AI. This is called test-time compute.
Your RAG Searches by Meaning. But What About Exact Words? Meet BM25
Hello, I'm Rijul, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. When you work with RAG systems and come across scenarios where keyword matching is relevant, you might come across a term called BM25. It sounds like some technical code word, but it is actually quite straightforward.
Embeddings Turn Text Into Numbers. But There’s More Than One Way to Do It
Hello, I'm Rijul, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. If you have read about RAG, you will probably be familiar with the concept of embeddings. We take a bunch of text and turn it into numbers. That's it. But there is one more layer here. There are different ways to represent text for retrieval.
Your RAG Finds the Documents. But Which Ones Should Reach the LLM?
Hello, I'm Rijul, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. You know that RAG fetches relevant chunks and gives them to the LLM. So there is a retrieval step involved. But there may be many chunks that are retrieved. Which ones should actually be sent to the LLM? And more importantly, which chunks should get priority?
Why Does RAG Miss Information That's Clearly in the Document?
Hello, I'm Rijul, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. You have the information in your document. You know it's there. But when you ask your RAG system about it, the model gives an answer that misses it completely. Why? In RAG, the model can only answer using the pieces of text that are retrieved.
Your AI Knows How to Answer. But Who Teaches It What a Good Answer Is?
Hello, I'm Rijul, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. You use ChatGPT, Gemini, and all these AI bots. Whatever you ask, they usually give you a good answer, often something we like to hear. Ever wondered how they are tuned to our tastes? We humans have a hand in that too.
Vector Search Isn't Enough for Everything. Meet Hybrid Retrieval
Hello, I'm Rijul, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. When building a RAG system, one of the most common ways to retrieve information is through embeddings. The documents are converted into vectors, and when a user asks a question, the question is also converted into a vector.
Knowledge Poisoning in RAG: Attacking AI Through Its Knowledge Base
Hello, I'm Rijul, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. If you are familiar with RAG (Retrieval-Augmented Generation), you know that it allows an LLM to answer questions using information from your documents. If you are new to RAG, you can check out this article first.
Autoregressive vs Diffusion: A Different Way AI Could Generate Text
Hello, I'm Rijul, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. When you are using AI tools, it is useful to know that there are different ways an AI model can generate text. Today, most deployed language models use one main approach, but other approaches are emerging as well.
Learning to Build with LLMs the Framework-Free Way
Hello, I'm Rijul, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. Usually, when learning to build with LLMs, we start with a framework, follow a quickstart guide, and build a demo. The problem is that once everything is set up, you may end up not fully understanding what is actually happening under the hood.
The 3 Scaling Laws of AI: From Training More to Thinking More
Hello, I'm Rijul, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. We see the pace of AI development speeding up. One way to view this is through the 3 scaling laws of AI. It originally started with one scaling law, but as AI has advanced, it has grown into 3 different ways of scaling AI capabilities.
RAG Without Vectors? Meet Vectorless RAG
Hello, I'm Rijul, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. If you are familiar with RAGs, you know its usual flow. Split the document into chunks, convert each chunk into a vector embedding, store them in a vector database, and retrieve the chunk most similar to the query. But this approach has some blind spots.
You Thought Training an AI Model Was Enough. Then There's Post-Training
Hello, I'm Rijul, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. When you think of AI models being trained, it's not merely about having a large set of data and training the model on it.
What Does It Take to Build an AI Model? Let's Look at OLMo
Hello, I'm Rijul, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. When we talk about training AI models, it can sound like you just put some training data in, and some chatbot comes out. Or for open models, we just download one, run it via Ollama, and boom, magic happens.
Open Models Are Everywhere. But What Is an Open Stack?
Hello, I'm Rijul, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. You may have downloaded open models, or at least heard of them. These are models whose weights are made available for others to download and run on their own machine or infrastructure.
Your AI Agent Has a Memory. But It's Not Chat History
Hello, I'm Rijul, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. When we think about memory as humans, the first things that come to mind are usually past conversations, past events, experiences, and things we have learned.
How Does AI Know What's Inside an Image? Meet Vision Language Models
Hello, I'm Rijul, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. Do you interact with AI models where you put in an image and then it processes it? Do you wonder what these models are and what is happening behind the scenes? This is called a VLM, or Vision-Language Model.
How AI Stores Millions of Vectors Without Using Tons of Memory
Hello, I'm Rijul, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. In any sort of AI application, we have the concept of vectors. Vectors come in different shapes and sizes. Especially when they are large, we need a good way to manage them. One way to solve this is by compressing these large vectors.
Turn Your Obsidian Vault Into an AI-Powered Second Brain
Hello, I'm Rijul. I'm building git-lrc, a micro AI code reviewer that runs on every commit. It's free and source-available on GitHub. Star git-lrc to help more developers discover the project. Do give it a try and share your feedback Are you someone who uses Obsidian day-to-day? Suppose someone asks you about some work you did a few months ago. Or maybe you want to refer back to how you solved a particular problem. But obviously, you won't remember all the details.
AI Agents Are Not Magic. They Are Just Good Feedback Loops
Hello, I'm Rijul. I'm building git-lrc, a micro AI code reviewer that runs on every commit. It's free and source-available on GitHub. Star git-lrc to help more developers discover the project. Do give it a try and share your feedback Past few years, when things like GPT came out, we were mainly learning how to use them. Which basically meant using better prompts. So we were continuously refining prompts and trying to get better outputs. And that is fine.
Your AI Agent Has a Backpack. It's Called Retrieval Memory.
Hello, I'm Rijul. I'm building git-lrc, a micro AI code reviewer that runs on every commit. It's free and source-available on GitHub. Star git-lrc to help more developers discover the project. Do give it a try and share your feedback Imagine your AI agent has a backpack. It stores your preferences, project details, past experiences, and procedures. But it doesn't carry everything in that backpack into every conversation. When something becomes relevant, it reaches in and retrieves what it needs.
Context Compression: Making AI Agents Forget Without Losing the Plot
Hello, I'm Rijul. I'm building git-lrc, a micro AI code reviewer that runs on every commit. It's free and source-available on GitHub. Star git-lrc to help more developers discover the project. Do give it a try and share your feedback Suppose you are working with an AI agent to fix an API. You give it a simple instruction: Fix the API 500 error.
Are You Missing Out on Agent Skills? Here's How They Work
Hello, I'm Rijul. I'm building git-lrc, a micro AI code reviewer that runs on every commit. It's free and source-available on GitHub. Star git-lrc to help more developers discover the project. Do give it a try and share your feedback Do you keep hearing terms like “agent skills” being thrown around without really understanding what they mean? And is the FOMO starting to get to you? Let’s understand what agent skills are in this article. A skill is a way to give an AI agent procedural knowledge.
Finding the Right Local LLM Doesn't Have to Take Hours
Hello, I'm Rijul. I'm building git-lrc, a micro AI code reviewer that runs on every commit. It's free and source-available on GitHub. Star git-lrc to help more developers discover the project. Do give it a try and share your feedback Choosing a local LLM often comes down to trial and error. If you're not sure which models your hardware can comfortably run, here's a tool worth checking out.
Building LSTMs with PyTorch and Lightning AI Part 8: Setting Up a Simpler LSTM
In the previous article, we saw how easily we could continue training by adding more epochs. We also observed the improvements in the model's predictions using TensorBoard. Let's train the model one more time to bring the predictions even closer to the desired values. As before, we first retrieve the latest checkpoint. path_to_best_checkpoint = trainer.checkpoint_callback.best_model_path Next, we increase the maximum number of epochs to 5000.
Building LSTMs with PyTorch and Lightning AI Part 4: Training Step and Initial Predictions
In the previous article, we finished the LSTM cell, explored the forward method and the Adam optimizer for the model. In this article, we will explore the training_step() function, and try to run the model without training. The training_step() function takes a batch of training data from one of the two companies, along with the index of that batch. It then uses the forward() function to make a prediction for that training example.
Building LSTMs with PyTorch and Lightning AI Part 3: Finishing the LSTM Cell
In the previous article, we started with the creation of LSTM cell. In this article we will continue building the LSTM Unit as well as create the forward pass and the optimizer. Creating the Short-Term Memory In this stage, we create the updated short-term memory and determine what percentage of it should be sent to the output.
Building LSTMs with PyTorch and Lightning AI Part 1: First Steps with LSTMs
In this article, we will explore how to implement an LSTM using PyTorch and Lightning. For more details about LSTMs, there is a separate series of articles available here. Imports To begin, we first import the required modules. import torch import torch.nn as nn import torch.nn.functional as F We also introduce a new optimizer: from torch.optim import Adam Adam is used to fit the neural network to the data.
Neural Networks with PyTorch and Lightning AI Part 5: Final Results and GPU Acceleration
In the previous article, we saw how we automated several manual pieces when training a neural network. In this article, we will check the final results and also see how we can do hardware acceleration. For verifying that the final_bias is correctly optimized, we can print out the new value: trainer.fit(model, train_dataloaders=dataloader) print(model.final_bias.data) This gives us -16.0098.
Neural Networks with PyTorch and Lightning AI Part 3: Moving Training Logic into Lightning
In the previous series, when we optimized our neural network, we had to write quite a bit of training code ourselves. First, we created an optimizer object that used Stochastic Gradient Descent (SGD) to optimize final_bias. Then we wrote loops to calculate the derivatives required for gradient descent. We trained the model for up to 100 epochs. For each training example, we: Ran the input through the neural network to get a prediction. Calculated the loss.
Pytorch for Neural Networks Part 9: Taking Steps Toward Better Predictions
In the previous article, we went through the optimization loop and passed all three training inputs through the model. In this article, we will explore the additional steps we need to take when the total loss is not yet small enough. Taking a Step Toward a Better Bias If total_loss is still too large, we need to take a small step toward a better value for final_bias.
Pytorch for Neural Networks Part 6: Understanding Epochs and Loss
In the previous article, we prepared everything needed to optimize our neural network and find the ideal value for the final bias. In this article, we will begin implementing the optimization process. Creating the Optimizer First, we create an optimizer object. We will use Stochastic Gradient Descent (SGD) to optimize final_bias. optimizer = SGD(model.parameters(), lr=0.1) To optimize final_bias, we pass: model.parameters() to SGD.
Pytorch for Neural Networks Part 5: Preparing the Model for Training
In the previous article, we created input values for our neural network and tested it out. In this article, we will start preparing for backpropagation so that we can handle cases where the final bias is unknown. Creating a Trainable Version of the Neural Network To begin, we will create a copy of our neural network. Let us call it MyBasicNN_train. We name it this way because this version of the neural network will be trained.
Pytorch for Neural Networks Part 4: Testing the Neural Network
In the previous article, we defined the forward pass for our neural network. Now, we will provide inputs to the network so that we can test whether it works correctly. Creating Input Values To create a sequence of input values, we can define them like this: input_doses = torch.linspace(start=0, end=1, steps=11) Here, we use the PyTorch function linspace() to create a tensor containing 11 evenly spaced values between 0 and 1, including both endpoints.
Pytorch for Neural Networks Part 3: Forward Passes
In the previous article, we defined an example neural network and started creating variables for the weights and biases using PyTorch. In this article, we will continue further by exploring how to perform forward passes through the neural network. For reference: This is the neural network which we are going to recreate. So, lets begin! Creating the First Calculation We will start by creating input_to_top_relu.
Pytorch for Neural Networks Part 2: Initializing Weights and Biases
In the previous article, we got started with expressing a neural network in the form of Python code. In this article, we will continue building on that. This is the neural network that we will recreate using code. You can see the weights and biases shown in the diagram above. Let us now add them to our code. We start with the basic neural network class: class MyBasicNN(nn.Module): def __init__(self): super().__init__() Our first weight has the value 1.70.
Pytorch for Neural Networks Part 1: Writing Your First Neural Network in Pytorch
In my previous series of articles, we mainly explored the theory behind various neural network concepts. In this new series, we will focus on putting that knowledge into practice using code. This will be a fun way to turn what we have learned into something more practical. We will start with the basics and build things step by step. For this article, we will be using the following modules.
Tensors Explained Part 2: Why Tensors Are Useful
In the previous article, we started with a brief introduction to tensors. In this article, we will explore why tensors are useful. Why Tensors Matter Unlike normal scalars, arrays, matrices, and multi-dimensional matrices, tensors are designed to take advantage of hardware acceleration. Tensors do not just store data in different shapes. They are also designed to perform mathematical operations on that data efficiently and quickly.
Tensors Explained Part 1: How AI Systems Represent Data
In this article, we will explore the concept of tensors in the context of machine learning. From the perspective of someone building a neural network, tensors provide a way to store input data. Tensors are also used to store the weights and biases that make up neural networks. Types of Tensors When inputs contain only a single value, we call it a scalar. In tensor terminology, this is a 0-dimensional tensor.
Understanding Reinforcement Learning with Human Feedback Part 6: How the Reward Model Trains the Original Model
In the previous article, we used loss functions and trained our reward model. In this article, we will explore how to train the original model using the reward model we just trained. Using New Prompts To train the original model with the reward model, we start with new prompts that were not part of the supervised fine-tuning dataset. We give the model a prompt, and it generates a response. However, the response may not always be helpful or aligned with what people want.
Understanding Reinforcement Learning with Human Feedback Part 5: Training the Reward Model with Loss Functions
In the previous article, we created a reward model. In this article, we will continue exploring how this model is trained. One important thing to note is that we do not need to define the ideal reward values in advance. Instead, the model learns to determine appropriate rewards on its own.
Understanding Reinforcement Learning with Human Feedback Part 4: Teaching Models Human Preferences
In the previous article, we explored the part where we collect human preferences. In this article, we will see how to use this data to train the models. To train a model that gives higher scores to preferred responses, we first make a copy of the model that has already gone through supervised fine-tuning. Modifying the Model Next, we modify this copied model. We remove the unembedding layer, which normally predicts the next token, and replace it with a single output value.
Understanding Reinforcement Learning with Human Feedback Part 3: Collecting Human Preferences
In the previous article we explored the concept of aligning the pretrained model. Now, we will look at the next component: human preference collection. The first step in understanding RLHF is to understand that, given a specific prompt, a model can generate different responses. One way to generate a response is to configure the model to always select the token with the highest output value at every step. In this case, the model will generate the same response every single time for a given prompt.
Show More
loading
Actions
Is this you?
As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.Get in touch with Rijul
Contact Rijul, search articles and posts on X, monitor coverage, and track replies from one place.
Learn more about Muck Rack