<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: technonotes-hacker</title>
    <description>The latest articles on DEV Community by technonotes-hacker (@technonotes).</description>
    <link>https://dev.to/technonotes</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1120828%2Fa332bbb8-2a73-410a-8f25-400dfcef7aa6.png</url>
      <title>DEV Community: technonotes-hacker</title>
      <link>https://dev.to/technonotes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/technonotes"/>
    <language>en</language>
    <item>
      <title>Core Python - Beginner &amp; List Intro</title>
      <dc:creator>technonotes-hacker</dc:creator>
      <pubDate>Thu, 22 Oct 2026 03:47:00 +0000</pubDate>
      <link>https://dev.to/technonotes/core-python-beginner-list-intro-3lh3</link>
      <guid>https://dev.to/technonotes/core-python-beginner-list-intro-3lh3</guid>
      <description>&lt;h1&gt;
  
  
  Python
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;English to Code&lt;/li&gt;
&lt;li&gt;Interpreter Language --&amp;gt; Line by line execution&lt;/li&gt;
&lt;li&gt;In Java --&amp;gt; First it will create Binary file which is nothing but .CLASS File and this CLASS file will execute.&lt;/li&gt;
&lt;li&gt;In python hello.py --&amp;gt; python hello.py ( Execution )&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Data Structure
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;How do you store the data ? &lt;/li&gt;
&lt;li&gt;List , Tuple , Dictionary and Set&lt;/li&gt;
&lt;li&gt;The value will be stored in the RAM.&lt;/li&gt;
&lt;li&gt;Identifier is like a LABEL.&lt;/li&gt;
&lt;li&gt;The Value is stored in the RAM , but to REFER the place in the RAM is called the name. i.e the LABEL --&amp;gt; in the below example.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj6qevhfr2irf5ebmmj81.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj6qevhfr2irf5ebmmj81.png" alt=" " width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbueukgzyi8v9fanuvly3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbueukgzyi8v9fanuvly3.png" alt=" " width="462" height="235"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Boolean
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Let it be like a Question related.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  None
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;print(None)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff76eyx0gticjmu38rn0d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff76eyx0gticjmu38rn0d.png" alt=" " width="356" height="147"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Continue ...
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;In Python all are Object.&lt;/li&gt;
&lt;li&gt;What is an Object ? --&amp;gt; Eg., Pen is an Object.&lt;/li&gt;
&lt;li&gt;Object will have 2 things:&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Attribute --&amp;gt; Ink or ball point or brand&lt;/li&gt;
&lt;li&gt;Functionality --&amp;gt; what you are going to do with this Pen ? or Action.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpajg2hxexu8gtegeiyre.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpajg2hxexu8gtegeiyre.png" alt=" " width="798" height="135"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to know about the Object ?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fts8r2in5ev11vjest4e5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fts8r2in5ev11vjest4e5.png" alt=" " width="800" height="157"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8s66qzvzu5t3r9jsrun1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8s66qzvzu5t3r9jsrun1.png" alt=" " width="727" height="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For the string , these many objects are there.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Data Structures
&lt;/h1&gt;

&lt;h2&gt;
  
  
  List
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Its a Array&lt;/li&gt;
&lt;li&gt;Its a Dynamic Array&lt;/li&gt;
&lt;li&gt;Consecutive storage.&lt;/li&gt;
&lt;li&gt;In Array , it will be fixed . That means the size , also same datatypes. But in Python we have Dynamic Array.&lt;/li&gt;
&lt;li&gt;No Fixed Size and any data type.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo0j0dxwrviwgs9ypc176.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo0j0dxwrviwgs9ypc176.png" alt=" " width="800" height="287"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Negative index is also available.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsgj633s9paa7c6mvdklm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsgj633s9paa7c6mvdklm.png" alt=" " width="799" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuj0ms5tb3q9gohrjadk7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuj0ms5tb3q9gohrjadk7.png" alt=" " width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Square bracket and position is important.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fipptui5dcanx1rvput2u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fipptui5dcanx1rvput2u.png" alt=" " width="635" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftxjeqgfg3hi08ro1njm3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftxjeqgfg3hi08ro1njm3.png" alt=" " width="567" height="197"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Going to upend a Alphabet.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7vjki3bvazkul4j1ohrh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7vjki3bvazkul4j1ohrh.png" alt=" " width="687" height="255"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In first position , upend "G". ( Its like moving and inserting the alphabet ) . It won't delete anything .&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd83z9vgdviyv2zsrdyhe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd83z9vgdviyv2zsrdyhe.png" alt=" " width="517" height="100"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faonaj15t6zyu3ht24oqo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faonaj15t6zyu3ht24oqo.png" alt=" " width="800" height="167"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxmfgbusc7f0kwyw97qzy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxmfgbusc7f0kwyw97qzy.png" alt=" " width="800" height="199"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn9lml6iq0rxkss1c2cy8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn9lml6iq0rxkss1c2cy8.png" alt=" " width="407" height="216"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiae8wbsplxxggvxw1eqt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiae8wbsplxxggvxw1eqt.png" alt=" " width="790" height="641"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fus9ljribldlz0yopbk1k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fus9ljribldlz0yopbk1k.png" alt=" " width="797" height="98"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Even you can replace --&amp;gt; vowels[2] = "H"&lt;/li&gt;
&lt;li&gt;Store all datatypes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcpaf49891c7o6axfbg5p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcpaf49891c7o6axfbg5p.png" alt=" " width="800" height="39"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>computerscience</category>
      <category>python</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>LLM - RAG - Implementation</title>
      <dc:creator>technonotes-hacker</dc:creator>
      <pubDate>Tue, 20 Oct 2026 15:54:35 +0000</pubDate>
      <link>https://dev.to/technonotes/llm-rag-implementation-59n8</link>
      <guid>https://dev.to/technonotes/llm-rag-implementation-59n8</guid>
      <description>&lt;h1&gt;
  
  
  What you need first ?
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Load PDF&lt;/li&gt;
&lt;li&gt;Split PDF --&amp;gt; The output is Chunks.&lt;/li&gt;
&lt;li&gt;Build Vector DB ( Input will be CHUNKS ) --&amp;gt; Also need instance or object to Query.&lt;/li&gt;
&lt;li&gt;Retriever&lt;/li&gt;
&lt;li&gt;Augment or Build Prompt&lt;/li&gt;
&lt;li&gt;Generate_answer --&amp;gt; ask the LLM --&amp;gt; Groq&lt;/li&gt;
&lt;li&gt;RAQ Query&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F711qtespxs37kau4u8qq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F711qtespxs37kau4u8qq.png" alt=" " width="800" height="526"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Things Needed
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Embedding --&amp;gt; nomic-embed-text ( Model )&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6795b8gngg2hrxs6rs1v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6795b8gngg2hrxs6rs1v.png" alt=" " width="800" height="563"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Install Ollama
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fljiho1efvrnbi5zlvya2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fljiho1efvrnbi5zlvya2.png" alt=" " width="771" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgcb6yykkmq808nhk3coy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgcb6yykkmq808nhk3coy.png" alt=" " width="800" height="131"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fymv6p6yyyby9ggwlxual.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fymv6p6yyyby9ggwlxual.png" alt=" " width="800" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1e2ifi9rbgv8385keou4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1e2ifi9rbgv8385keou4.png" alt=" " width="800" height="277"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;&amp;gt;&lt;/span&gt;llama &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;span class="go"&gt;ollama version is 0.40.6

&lt;/span&gt;&lt;span class="gp"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;ollama list
&lt;span class="gp"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;ollama pull nomic-embed-text
&lt;span class="go"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy2i9frzzeiz6jiyuhdec.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy2i9frzzeiz6jiyuhdec.png" alt=" " width="800" height="198"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fydnliv51car7ktl1r1cr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fydnliv51car7ktl1r1cr.png" alt=" " width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Test with the below curl URL if you are getting the response.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F22ml2hse8oagr92jgjqa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F22ml2hse8oagr92jgjqa.png" alt=" " width="800" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzam97uzswufbb5rotx99.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzam97uzswufbb5rotx99.png" alt=" " width="797" height="136"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;what is this nomic-embed-text Model&lt;/em&gt;&lt;/strong&gt; --&amp;gt; Its just a Weight , to execute this we have some tools like Ollama , lama.cpp , etc&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Another part of LLM
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;LLM for retrieval via Groq ( Chatgpt )&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  2 LLM
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;1 local embedding model&lt;/li&gt;
&lt;li&gt;Another 1 , LLM model via Groq&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Lets Begin
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Load the Env details
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Env variable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1ie27vsvvi3g8o79is5z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1ie27vsvvi3g8o79is5z.png" alt=" " width="500" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4g0adrulorrr242djsi2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4g0adrulorrr242djsi2.png" alt=" " width="763" height="247"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Load the PDF
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;PyPDFLoader&lt;/li&gt;
&lt;li&gt;This loader will take care all the things.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Set the env and run requirement txt
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw3uc2iixjbrs3deqyily.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw3uc2iixjbrs3deqyily.png" alt=" " width="800" height="159"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 &lt;span class="nt"&gt;-m&lt;/span&gt; venv .venv
&lt;span class="nb"&gt;source&lt;/span&gt; .venv/bin/activate
&lt;span class="o"&gt;(&lt;/span&gt;.venv&lt;span class="o"&gt;)&lt;/span&gt; pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
pip freeze &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; requirements.txt
python3 &lt;span class="nt"&gt;-m&lt;/span&gt; pip &lt;span class="nb"&gt;install &lt;/span&gt;pypdf

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fisovo5px93je11fpmbd3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fisovo5px93je11fpmbd3.png" alt=" " width="800" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Run and check the PDF Part
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkrw0drir6qp2qf7voec6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkrw0drir6qp2qf7voec6.png" alt=" " width="771" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh6kn1kr8adac1xevjfz9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh6kn1kr8adac1xevjfz9.png" alt=" " width="584" height="307"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This code will read the PDF and give the details.&lt;/li&gt;
&lt;li&gt;It converts the entire PDF into text.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnt5k3rkgzaldev7fzd73.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnt5k3rkgzaldev7fzd73.png" alt=" " width="799" height="319"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can see many Chinese characters , this needs to be cleaned and sent for Chunking.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Clean the docs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Write one more function to clean the documents.&lt;/li&gt;
&lt;li&gt;The complete document is in list. It will be like each page.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;clean_docs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;documents&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Normalizes whitespace, removes null bytes, and sanitizes text encoding for each document.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;cleaned_docs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;doc&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;documents&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="c1"&gt;# Handle objects with page_content attributes vs raw text strings
&lt;/span&gt;        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;hasattr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;page_content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;page_content&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="c1"&gt;# Replace multiple whitespace characters with a single space
&lt;/span&gt;        &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;\s+&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="c1"&gt;# Remove null control characters
&lt;/span&gt;        &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;\x00&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="c1"&gt;# Drop invalid UTF-8 sequences and decode back to a clean string
&lt;/span&gt;        &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;utf-8&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ignore&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;utf-8&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

        &lt;span class="c1"&gt;# Update the document object or append the cleaned text
&lt;/span&gt;        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;hasattr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;page_content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="n"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;page_content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;
            &lt;span class="n"&gt;cleaned_docs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;cleaned_docs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;cleaned_docs&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgqb3jgrgke3vnyb8ubvv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgqb3jgrgke3vnyb8ubvv.png" alt=" " width="500" height="177"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check for the 100th page&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1anspp8s37csfu8c2b9t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1anspp8s37csfu8c2b9t.png" alt=" " width="531" height="206"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Comment the line and check if getting after the cleaning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz8or46plv1hznku6m8e1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz8or46plv1hznku6m8e1.png" alt=" " width="450" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Change the function like below&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3y2atoo1dn6l3h5je3w4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3y2atoo1dn6l3h5je3w4.png" alt=" " width="611" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now we can read the PDF. i.e load the PDF got completed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Chunking Part
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;function split , its a text splitter.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flqtkhm9wc7vchedur4rl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flqtkhm9wc7vchedur4rl.png" alt=" " width="799" height="218"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The above one is a CHUNK &lt;/li&gt;
&lt;li&gt;Now another CHUNK - Its in yellow color. ( with a overlap )&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;" Such as ... " is a overlap.&lt;/em&gt;&lt;/strong&gt; , it will be both the CHUNK.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;&lt;u&gt;Overlap&lt;/u&gt;&lt;/em&gt;&lt;/strong&gt; means each chunk repeats the last 150 characters of the one before it. If a sentence is cut in half at the edge, it still appears whole in one of the chunks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuzrykht9i9um0mxnfxeh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuzrykht9i9um0mxnfxeh.png" alt=" " width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh6wa8ixw7r3px4f2si6f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh6wa8ixw7r3px4f2si6f.png" alt=" " width="800" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This is called - &lt;strong&gt;Recursive character text splitter&lt;/strong&gt;, langchain already implemented this.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langchain_text_splitters&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;RecursiveCharacterTextSplitter&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Need to provide the CHUNK size and also the overlap.&lt;/li&gt;
&lt;li&gt;If the PDF as diagram this code won't work.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;split_pdf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;documents&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Splits documents into smaller overlapping chunks to optimize for embedding and retrieval.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;splitter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;RecursiveCharacterTextSplitter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chunk_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;chunk_overlap&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;splitter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split_documents&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;documents&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Now vector DB
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The input to this is " CHUNKS ".&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9ilnwl9wvi8e8wu3gdpj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9ilnwl9wvi8e8wu3gdpj.png" alt=" " width="800" height="141"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Embeddings&lt;/li&gt;
&lt;li&gt;For embedding , we are going to use Ollama Model which is in the local. For this Ollama model , langchain is supporting.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langchain_ollama&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OllamaEmbeddings&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Persist directory is used.&lt;/li&gt;
&lt;li&gt;Return the Vector Store.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  DB's
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Sqlite3 --&amp;gt; Its a Document DB --&amp;gt; No need to install like Postrgres , its just a python package . ( DB browser for SQLITE )&lt;/li&gt;
&lt;li&gt;In-memory DB's. [ TBD ]&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Initial Setup
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;initial_setup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pdf_path&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Executes the end-to-end ingestion pipeline: loads, cleans, chunks, and vectorizes the PDF.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;chunks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;load_and_clean_pdf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pdf_path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;vectorstore&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;build_vectorstore&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chunks&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;vectorstore&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Groq LLM
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;gpt-oss-120b&lt;/li&gt;
&lt;li&gt;User query given to this LLM.&lt;/li&gt;
&lt;li&gt;Get the response from the LLM for the user query.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Retriever
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Sending the Query to the embedding.&lt;/li&gt;
&lt;li&gt;[ TBD ]&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Build the Prompt
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ TBD ]&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Notes
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;We need some tool to learn the Model , those tools are called Ollama , lama.cpp , etc&lt;/li&gt;
&lt;li&gt;If you want to run Python script , what you need ? Python right ? Like wise we need Ollama tool to run the Model.&lt;/li&gt;
&lt;li&gt;Model is just like a file.&lt;/li&gt;
&lt;li&gt;Zed( Editor ) is like Windows VS Code Editor &lt;/li&gt;
&lt;li&gt;Langchain is used to create the Agent , its like a single Framework.&lt;/li&gt;
&lt;li&gt;If its scanned PDF then reorganization model needs to be used then also need to use OCR.&lt;/li&gt;
&lt;li&gt;White space regular expression.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Import re --&amp;gt; regular expression&lt;/em&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Unicode - utf8 --&amp;gt; Its a text format or Unicode format.&lt;/li&gt;
&lt;li&gt;Langchain is like Broker , so it supports OpenAI , Claude , etc .&lt;/li&gt;
&lt;li&gt;Langchain as many contacts so its a broker.&lt;/li&gt;
&lt;li&gt;Even Chroma is included in the Langchain ECO-SYSTEM. Otherwise we need to install and write program for integration of Chroma.&lt;/li&gt;
&lt;li&gt;Langchain is a wrapper.&lt;/li&gt;
&lt;li&gt;Langchain satisfies the end user , you can buy everything here. That the idea of Langchain.&lt;/li&gt;
&lt;li&gt;Langchain &amp;amp; Chroma DB is a open source.&lt;/li&gt;
&lt;li&gt;Chroma DB in cloud is Paiza.&lt;/li&gt;
&lt;li&gt;PineCone / PG Vector ---&amp;gt; [ TBD ]&lt;/li&gt;
&lt;li&gt;SQL Query will not work in Vector DB.&lt;/li&gt;
&lt;li&gt;What the retriever.invoke is doing ? [TBD]&lt;/li&gt;
&lt;li&gt;The input of the PDF is SOFTWARE ENGINEERING.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;&lt;u&gt;Recursive&lt;/u&gt;&lt;/em&gt;&lt;/strong&gt; means it tries to cut at nice places first: paragraphs, then lines, then sentences, and only cuts in the middle of a word as a last resort.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Error
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Surrogates not allowed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foivawocr8nsv9utdd2vw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foivawocr8nsv9utdd2vw.png" alt=" " width="800" height="21"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Questions
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs5mysvd5urelnrdo36z7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs5mysvd5urelnrdo36z7.png" alt=" " width="799" height="588"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9ivq2aw4z7s4qsiy9270.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9ivq2aw4z7s4qsiy9270.png" alt=" " width="800" height="647"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9h6yjs8mf60c6b36k0a8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9h6yjs8mf60c6b36k0a8.png" alt=" " width="800" height="572"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fclrmj2ncfy87c634yxht.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fclrmj2ncfy87c634yxht.png" alt=" " width="706" height="662"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F19ulu5nnny0f691m59my.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F19ulu5nnny0f691m59my.png" alt=" " width="729" height="673"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fakbcacwf743r9apsm5li.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fakbcacwf743r9apsm5li.png" alt=" " width="800" height="288"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;RAG&lt;/em&gt;&lt;/strong&gt;   ----&amp;gt; Retrieval-Augmented Generation: find the relevant paragraphs first, then answer using only those.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Why RAG?&lt;/em&gt;&lt;/strong&gt;  ----&amp;gt; The model hasn't read your documents. RAG is cheaper and fresher than pasting everything or retraining.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Indexing vs querying&lt;/em&gt;&lt;/strong&gt;  ----&amp;gt; Indexing: prepare the document once. Querying: for each question, find chunks and answer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Document loader&lt;/em&gt;&lt;/strong&gt;  ----&amp;gt; Reads a file into Documents, e.g. PyPDFLoader gives one Document per page with page_content and metadata.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Chunk&lt;/em&gt;&lt;/strong&gt;  ----&amp;gt; A piece of text (about 1,000 characters) small enough to search and send to the model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;chunk_overlap&lt;/em&gt;&lt;/strong&gt;  ----&amp;gt; Repeated characters between neighbouring chunks, so sentences cut at an edge are still whole in one chunk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;RecursiveCharacterTextSplitter&lt;/em&gt;&lt;/strong&gt;  ----&amp;gt; Cuts at nice places first (paragraphs, lines, sentences) and mid-word only as a last resort.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Embedding&lt;/em&gt;&lt;/strong&gt;  ----&amp;gt; A list of numbers for a text's meaning. Similar meaning = close together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Vector database&lt;/em&gt;&lt;/strong&gt;  ----&amp;gt; Stores chunks with their embeddings and finds the closest ones to a question (Chroma, here).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Retriever and k&lt;/em&gt;&lt;/strong&gt;  ---&amp;gt; Finds the best chunks for a question. k = how many chunks to return.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;RAG prompt&lt;/em&gt;&lt;/strong&gt;  ----&amp;gt; "Answer using ONLY the context. If it's not there, say you don't know." plus context and question.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Show sources&lt;/em&gt;&lt;/strong&gt;  ---&amp;gt; Each chunk has its page in metadata. Show it so readers can check the answer.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>rag</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Terms - AI ( PhD )</title>
      <dc:creator>technonotes-hacker</dc:creator>
      <pubDate>Tue, 20 Oct 2026 11:01:48 +0000</pubDate>
      <link>https://dev.to/technonotes/terms-ai-phd--5e6p</link>
      <guid>https://dev.to/technonotes/terms-ai-phd--5e6p</guid>
      <description>&lt;h1&gt;
  
  
  LangChain
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;&lt;u&gt;Programming Framework&lt;/u&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LangChain&lt;/strong&gt; is an &lt;strong&gt;&lt;em&gt;open-source orchestration framework&lt;/em&gt;&lt;/strong&gt; designed to help developers build applications using large language models (LLMs)&lt;/li&gt;
&lt;li&gt;Its used by developers to connect LLMs to external databases, APIs, and tools so they can become "Agents."&lt;/li&gt;
&lt;li&gt;Who is the Agent here ? --&amp;gt; No, LangChain itself is not the agent..&lt;/li&gt;
&lt;li&gt;LangChain is the Operating System / Framework .&lt;/li&gt;
&lt;li&gt;The Agent is the running system --&amp;gt; "&lt;strong&gt;Agent&lt;/strong&gt;" is the final, fully functional AI system.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F27qjzf1rej3ws71jy1kv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F27qjzf1rej3ws71jy1kv.png" alt=" " width="800" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcf1roimbd6eod0rkgh5b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcf1roimbd6eod0rkgh5b.png" alt=" " width="799" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LangChain is an LLM framework.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdsbtl03hte26fky2svra.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdsbtl03hte26fky2svra.png" alt=" " width="799" height="254"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2ut46rsdfkhxbzvy1hnk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2ut46rsdfkhxbzvy1hnk.png" alt=" " width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmr204megkj2pc0q5sk5h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmr204megkj2pc0q5sk5h.png" alt=" " width="800" height="226"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Generative AI (GenAI)
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Generative AI is a tool that creates text, code, or answers based only on what you ask it to type. It cannot take action, it cannot browse live websites on its own, and it cannot click buttons. It just talks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi2emnq7tqeem0olak8cc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi2emnq7tqeem0olak8cc.png" alt=" " width="799" height="252"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generative AI is about Thinking &amp;amp; Writing.&lt;/li&gt;
&lt;li&gt;Input Prompt → Output Text.&lt;/li&gt;
&lt;li&gt;RAG is a system design used within Generative AI.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fugmyupvdfb09swxpx0ti.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fugmyupvdfb09swxpx0ti.png" alt=" " width="800" height="590"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  AI Agent / Agentic AI
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;The Autonomous Assistant.&lt;/li&gt;
&lt;li&gt;An AI Agent is given a final goal.&lt;/li&gt;
&lt;li&gt;Instead of just typing an answer, it has access to tools (like the internet, a calculator, or software applications). &lt;/li&gt;
&lt;li&gt;It can think in a loop: it takes a step, looks at the result, decides what to do next, fixes its own mistakes, and doesn't stop until the goal is fully achieved.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp5mj5o9cqu2g0urtft0u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp5mj5o9cqu2g0urtft0u.png" alt=" " width="799" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agentic AI (Agents) is about Thinking, Deciding, &amp;amp; Taking Action.&lt;/li&gt;
&lt;li&gt;Input Goal → Loops through Tools → Achieves final result.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Ollama
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;The software that manages and runs the LLaMA and Qwen AI models on your computer or server.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh0vqhtkp9pzlbw9p2h10.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh0vqhtkp9pzlbw9p2h10.png" alt=" " width="800" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fou62mtc8wl9k8c9dwx71.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fou62mtc8wl9k8c9dwx71.png" alt=" " width="799" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhucrkn4s7f7sjrthhmam.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhucrkn4s7f7sjrthhmam.png" alt=" " width="800" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmceyh9h47sjy6kyv3d2w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmceyh9h47sjy6kyv3d2w.png" alt=" " width="800" height="339"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Overall Structure
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft3fwcrec15aiwcrm3sjp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft3fwcrec15aiwcrm3sjp.png" alt=" " width="799" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fra7fgw7jla4hxl31dsty.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fra7fgw7jla4hxl31dsty.png" alt=" " width="800" height="252"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ollama and LangChain are completely different layers of the software stack.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff9hlxmqqzpwrycv9qpjr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff9hlxmqqzpwrycv9qpjr.png" alt=" " width="800" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmo2lhcp13icsmsiijcok.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmo2lhcp13icsmsiijcok.png" alt=" " width="800" height="501"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fym5et5smrxs82m2fj4gp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fym5et5smrxs82m2fj4gp.png" alt=" " width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg7ysli7d1eq2mn7p5amz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg7ysli7d1eq2mn7p5amz.png" alt=" " width="799" height="487"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Project Statement
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;The project aims to build a generative Artificial Intelligence (AI) powered Large Language Model (LLM) using Retrieval Augment Generation (RAG) technique to provide responses to user queries in ABC portal related to Master Circulars, e-Circulars and Role Based Certification (RBC) manuals as the knowledge base for the GenAI model.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Lets Dig one by one
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpw0tk9qzj3r20j319r98.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpw0tk9qzj3r20j319r98.png" alt=" " width="800" height="306"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fktwx28gilv82lh1jq19w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fktwx28gilv82lh1jq19w.png" alt=" " width="799" height="452"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsebufxeq4g6lnae68lq7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsebufxeq4g6lnae68lq7.png" alt=" " width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F79atq5id9i14nnmemhs2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F79atq5id9i14nnmemhs2.png" alt=" " width="800" height="493"&gt;&lt;/a&gt;&lt;/p&gt;




</description>
      <category>agents</category>
      <category>ai</category>
      <category>llm</category>
      <category>opensource</category>
    </item>
    <item>
      <title>LLM - Data Validation with Pydantic</title>
      <dc:creator>technonotes-hacker</dc:creator>
      <pubDate>Tue, 20 Oct 2026 09:40:12 +0000</pubDate>
      <link>https://dev.to/technonotes/llm-data-validation-with-pydantic-4pj1</link>
      <guid>https://dev.to/technonotes/llm-data-validation-with-pydantic-4pj1</guid>
      <description>&lt;ul&gt;
&lt;li&gt;While typing a prompt to LLM and asking the LLM to &lt;strong&gt;Impersonating a USER&lt;/strong&gt; --&amp;gt; what is the prompt called ? &lt;strong&gt;ROLE PROMPTING&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;ROLE PROMPTING&lt;/em&gt;&lt;/strong&gt; is &lt;strong&gt;&lt;em&gt;similar&lt;/em&gt;&lt;/strong&gt; to which Prompting --&amp;gt; &lt;strong&gt;&lt;em&gt;SYSTEM Prompting&lt;/em&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Main difference --&amp;gt; Boundaries are defined , System Prompting --&amp;gt; As a AI agent , ROLE Prompting --&amp;gt; As a Bank Manager.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Is the output is Structured ?
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;structured or Text Manner ? &lt;/li&gt;
&lt;li&gt;By default it won't come , we need to define. How the output should be.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  RAG System
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;What is Augment ? What will happen ? --&amp;gt; It happens between Retrieval and generation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  DATA VALIDATION
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Python is Dynamic Typing.&lt;/li&gt;
&lt;li&gt;Output of LLM , think like text. &lt;/li&gt;
&lt;li&gt;Get the output in the desired format.&lt;/li&gt;
&lt;li&gt;There is package called "&lt;strong&gt;&lt;em&gt;Pydantic&lt;/em&gt;&lt;/strong&gt;" , data validation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Pydantic&lt;/em&gt;&lt;/strong&gt; is a library in Python .&lt;/li&gt;
&lt;li&gt;We need to learn --&amp;gt; Live with it --&amp;gt; Data Validation &amp;amp; Data Modelling.&lt;/li&gt;
&lt;li&gt;Data that comes into your program, from a form, a website or an AI model, can be wrong: a missing field, text where a number should be, an age of -9. Validation means checking data before you use it. &lt;/li&gt;
&lt;li&gt;Pydantic lets you describe the shape you expect once, as a class, and then checks everything for you.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff0x7oln8d8ulknximewn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff0x7oln8d8ulknximewn.png" alt=" " width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  List
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkfxakuyl29dfh0fi8ju4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkfxakuyl29dfh0fi8ju4.png" alt=" " width="582" height="317"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj8y3kuoqls5rt74y9y10.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj8y3kuoqls5rt74y9y10.png" alt=" " width="545" height="687"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0uaslqn9uu7uxnawqlds.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0uaslqn9uu7uxnawqlds.png" alt=" " width="352" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;List is a immutable element.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Agent
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Predefined flow is not available in Agent.&lt;/li&gt;
&lt;li&gt;How to pass the data ? &lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Questions
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Validation&lt;/em&gt;&lt;/strong&gt; --&amp;gt; Checking data before using it, at the gate rather than on the plane.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Pydantic BaseModel&lt;/em&gt;&lt;/strong&gt; --&amp;gt; Describe the shape you expect as a class; Pydantic checks every value against it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;ValidationError&lt;/em&gt;&lt;/strong&gt; --&amp;gt; Lists every problem at once: which field, which rule and which value.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;gt / ge / lt / le&lt;/em&gt;&lt;/strong&gt; --&amp;gt; Greater than / greater or equal / less than / less or equal rules for numbers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;min_length / max_length&lt;/em&gt;&lt;/strong&gt; --&amp;gt; How long text (or a list) may be.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Optional field&lt;/em&gt;&lt;/strong&gt; --&amp;gt; bio: str | None = None. May be missing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;default_factory=list&lt;/em&gt;&lt;/strong&gt; --&amp;gt; Makes a fresh empty list every time instead of sharing one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;model_dump() / model_dump_json()&lt;/em&gt;&lt;/strong&gt; --&amp;gt; Turn a model into a dict / into JSON text.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;@field_validator&lt;/em&gt;&lt;/strong&gt; --&amp;gt; Your own rule for a field. Raise ValueError to reject; always return the value.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Nested models&lt;/em&gt;&lt;/strong&gt; --&amp;gt; A model inside a model (Order &amp;gt; Customer &amp;gt; Address), all checked with one call.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;FastAPI + Pydantic&lt;/em&gt;&lt;/strong&gt; --&amp;gt; Bad request = automatic 422. response_model filters what you send back (no password leaks).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;with_structured_output(Model)&lt;/em&gt;&lt;/strong&gt; --&amp;gt; Gets a validated Python object from an LLM instead of text you have to parse.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Febdtwd78lkdzc0a2cfbk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Febdtwd78lkdzc0a2cfbk.png" alt=" " width="800" height="651"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhcgob088sudqb03063ay.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhcgob088sudqb03063ay.png" alt=" " width="800" height="650"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr52qzzc9ibkdfqhij3wf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr52qzzc9ibkdfqhij3wf.png" alt=" " width="800" height="763"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsidxcwok8zh87mneuk7n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsidxcwok8zh87mneuk7n.png" alt=" " width="800" height="601"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvga4xlmma4ks5c660fam.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvga4xlmma4ks5c660fam.png" alt=" " width="800" height="685"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc4spjqkv2teg77orfj0n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc4spjqkv2teg77orfj0n.png" alt=" " width="799" height="711"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Notes
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pydantic.dev/docs/" rel="noopener noreferrer"&gt;https://pydantic.dev/docs/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;JSON Validator&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5c0v6gfazj1op7dkbr5o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5c0v6gfazj1op7dkbr5o.png" alt=" " width="800" height="596"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>python</category>
      <category>rag</category>
    </item>
    <item>
      <title>LLM - Tool Calling &amp; MCP</title>
      <dc:creator>technonotes-hacker</dc:creator>
      <pubDate>Tue, 20 Oct 2026 06:54:38 +0000</pubDate>
      <link>https://dev.to/technonotes/llm-tool-calling-mcp-clm</link>
      <guid>https://dev.to/technonotes/llm-tool-calling-mcp-clm</guid>
      <description>&lt;h1&gt;
  
  
  Function Calling - The Manual Tool LOOP
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;LLM ( ChatGroq ) Will say which tool needs to be called.&lt;/li&gt;
&lt;li&gt;List or the Object will have some value.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxfimtbhwaivannu7m6eb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxfimtbhwaivannu7m6eb.png" alt=" " width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This is with Langchain and one type of Tool Calling.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Custom Tool
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft78kq4mb1yfdjcu2cb7y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft78kq4mb1yfdjcu2cb7y.png" alt=" " width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Its a structured way.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  External API Tools
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff00a14eq8g9m6cdm8wq1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff00a14eq8g9m6cdm8wq1.png" alt=" " width="591" height="82"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;These are the APIs which we are going to call.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbfeabt5zp5hw5gbwitvn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbfeabt5zp5hw5gbwitvn.png" alt=" " width="799" height="612"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Database Tools
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Create a custom table.&lt;/li&gt;
&lt;li&gt;We are allowing only SELECT in PROD.&lt;/li&gt;
&lt;li&gt;But if we use HUMAN in the loop , then update can be also used - But make sure its also RISK to use in PROD to update a query.&lt;/li&gt;
&lt;li&gt;Qwen Models --&amp;gt; Mostly you can use this for local testing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F271xglaktdxscs2ll7db.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F271xglaktdxscs2ll7db.png" alt=" " width="800" height="526"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F69nfbnbbjtmkg5z1agiu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F69nfbnbbjtmkg5z1agiu.png" alt=" " width="425" height="87"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  MCP - Model Context Protocol
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxc8m54yxinhphv1ymydc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxc8m54yxinhphv1ymydc.png" alt=" " width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Its a protocol.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9j6pvzar8asm0d8r2ufo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9j6pvzar8asm0d8r2ufo.png" alt=" " width="800" height="261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MCP is a common standard (like USB for AI tools).&lt;/li&gt;
&lt;li&gt;MCP client will decide which method to call.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsi3s06prwzhqyb95hrgz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsi3s06prwzhqyb95hrgz.png" alt=" " width="800" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;இப்ப ஒரு API expose பண்ணும்போது அதுல PUT GET எல்லாமே இருக்கும்,  but இந்த MCPல , APIல எல்லாத்தையும் club பண்ணி , எல்லாத்தையும் expose  பண்ணுவாங்க . MCP cleint will take care which one to call like a Agent.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Questions &amp;amp; Things to know
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxvzybo2gnuclxymzhwpf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxvzybo2gnuclxymzhwpf.png" alt=" " width="799" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frs7h5kovjln3omd523bw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frs7h5kovjln3omd523bw.png" alt=" " width="800" height="621"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fauy28odqf2kexkwnk3ve.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fauy28odqf2kexkwnk3ve.png" alt=" " width="800" height="581"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg1ctxtbtcpxh3yi844xn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg1ctxtbtcpxh3yi844xn.png" alt=" " width="775" height="811"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhcsmbp2tysxo5c47e1sp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhcsmbp2tysxo5c47e1sp.png" alt=" " width="800" height="721"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0pjchbdnhxs1o02ir269.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0pjchbdnhxs1o02ir269.png" alt=" " width="800" height="632"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjtyww4bg8j64vx02i2sp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjtyww4bg8j64vx02i2sp.png" alt=" " width="800" height="728"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Notes
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Langchain is a Framework.&lt;/li&gt;
&lt;li&gt;Function description --&amp;gt; &lt;a href="https://developers.openai.com/api/docs/guides/function-calling?api-mode=responses" rel="noopener noreferrer"&gt;https://developers.openai.com/api/docs/guides/function-calling?api-mode=responses&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Tool Calling ( description , above one )&lt;/li&gt;
&lt;li&gt;With pydantic we achieved DATA validation --&amp;gt; Return you will get in Object flow.&lt;/li&gt;
&lt;li&gt;Sqlite --&amp;gt; File based DB.&lt;/li&gt;
&lt;li&gt;esh --&amp;gt; english to shell , project --&amp;gt; &lt;a href="https://github.com/numericalworks/esh" rel="noopener noreferrer"&gt;https://github.com/numericalworks/esh&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;ER Model Will be generated from the tool , before LLM become famous.&lt;/li&gt;
&lt;li&gt;Ollama or Llama cpp ?&lt;/li&gt;
&lt;li&gt;Custom Tool or Function calling --&amp;gt; Both are same , there are different methods.&lt;/li&gt;
&lt;li&gt;General Method --&amp;gt; API with swagger , You will get the request and response with PUT GET etc. Now the MCP Client will search and decide , which method to call.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>llm</category>
      <category>mcp</category>
    </item>
    <item>
      <title>LLM - Memory for Agent</title>
      <dc:creator>technonotes-hacker</dc:creator>
      <pubDate>Sun, 18 Oct 2026 10:15:44 +0000</pubDate>
      <link>https://dev.to/technonotes/llm-memory-for-agent-4l8l</link>
      <guid>https://dev.to/technonotes/llm-memory-for-agent-4l8l</guid>
      <description>&lt;h1&gt;
  
  
  Memory Systems
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;End Goal is to &lt;strong&gt;create AI agent&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Agent is like a orchestrator + Integration of LLM + Action of Another tool + Memory.&lt;/li&gt;
&lt;li&gt;We need to give &lt;strong&gt;&lt;em&gt;MEMORY to the Agent&lt;/em&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Memory means --&amp;gt; இதுக்கு முன்னாடி நான் இது கிட்ட என்னென்ன கேட்டு இருக்கேன் &amp;amp; அது கொடுத்த விடை. [ Query &amp;amp; Response/Answer ],--&amp;gt; This combination is going to sit in the MEMORY.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzdwwaxelwnwg2lbe8jy5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzdwwaxelwnwg2lbe8jy5.png" alt=" " width="798" height="136"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr7o70aqws85cvo6c893j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr7o70aqws85cvo6c893j.png" alt=" " width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to store ? We cant't store continuously.&lt;/li&gt;
&lt;li&gt;What is the LIMIT ?&lt;/li&gt;
&lt;li&gt;There are types , lets discuss one by one.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  List of Memory
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Buffer 
2. Window
3. Token
4. Summary
5. Long Term
6. Semantic
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  BUFFER MEMORY
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;For each chat , we are going to &lt;strong&gt;&lt;em&gt;store complete conversation&lt;/em&gt;&lt;/strong&gt;, like below.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;In-memory --&amp;gt; RAM&lt;/li&gt;
&lt;li&gt;Persistent Storage --&amp;gt; like --&amp;gt; SQLITE3 , POSTGRES&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;For each and every call , whole conversation history is going to be sent to LLM&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For new chat , its going to have a &lt;strong&gt;DIFFERENT IDENTIFIER&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What problem can be identified in these 3 above points ? ஒரு சின்ன  பிரச்சனை இருக்கு ,  அது என்ன ?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Point 2&lt;/em&gt;&lt;/strong&gt; --&amp;gt; We need to send the complete HISTORY to the LLM --&amp;gt; &lt;strong&gt;&lt;em&gt;Tokens gets affected&lt;/em&gt;&lt;/strong&gt; , also &lt;strong&gt;&lt;em&gt;CONTEXT Limit gets affected&lt;/em&gt;&lt;/strong&gt;. But you will get the output.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the code , &lt;strong&gt;&lt;em&gt;InMemorySaver()&lt;/em&gt;&lt;/strong&gt; --&amp;gt; Will help to store in the RAM Memory.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;With the capacity of RAM storage only it can store.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiuxi6sgxmohizebjcia6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiuxi6sgxmohizebjcia6.png" alt=" " width="800" height="232"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj8j7o3til9ykg7ycmmmc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj8j7o3til9ykg7ycmmmc.png" alt=" " width="800" height="166"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  WINDOW MEMORY
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;It keeps only a FIXED NUMBER OF CHATS / MESSAGES. Eg., First message + Last N messages.&lt;/li&gt;
&lt;li&gt;In Langchain --&amp;gt; There is a provision like a MIDDLE-WARE --&amp;gt;  Modelகு முன்னாடி , இந்த Middlewareஅ தாண்டி தான் போகணும் . &lt;/li&gt;
&lt;li&gt;In Middleware we can configure --&amp;gt; Remove message , just save the first &amp;amp; last messages alone.&lt;/li&gt;
&lt;li&gt;Request goes to Middleware and then only MODEL.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fomkn01oqi84ugkn19hlu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fomkn01oqi84ugkn19hlu.png" alt=" " width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What will pass in State and Runtime ?&lt;/li&gt;
&lt;li&gt;Reply will be also taken along with the question.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyks7076mb6y5hgbp3db1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyks7076mb6y5hgbp3db1.png" alt=" " width="800" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fndnaf0y5k299u4l7d1jn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fndnaf0y5k299u4l7d1jn.png" alt=" " width="799" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now remove all messages and stores only 5 messages.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmlw1t57t0r88xwewv562.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmlw1t57t0r88xwewv562.png" alt=" " width="800" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This memory scenario is used only when recent conversation are important then &lt;strong&gt;OLD/PREVIOUS&lt;/strong&gt; conversation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  TOKEN MEMORY
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Similar to WINDOW memory.&lt;/li&gt;
&lt;li&gt;Will set the tokens. Eg., 2000 Tokens .&lt;/li&gt;
&lt;li&gt;Not going to store more than 2000 Tokens .&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkgd1mmql5ldybvui6hnp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkgd1mmql5ldybvui6hnp.png" alt=" " width="799" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Token definition will defer from Model to Model and framework to framework.&lt;/li&gt;
&lt;li&gt;Eg., 1000 tokens --&amp;gt; each character is a token in the above text.&lt;/li&gt;
&lt;li&gt;Old data's will be removed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhdtlaq1nkx0u6hc6ri52.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhdtlaq1nkx0u6hc6ri52.png" alt=" " width="800" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;arised ……………………….Ipsum → இவ்ளோ words இந்த paragraph ஆயிரம் டோக்கன் வெச்சுக்குங்க ( 1000 tokens ) , but popularised word is broken , பாதியிலிருந்து அந்த word வந்து எடுத்துக்குது , நம்ம இதுல set பண்ணலாம் ,  பாதி word  வெச்சிக்கிட்டு  நம்ம என்ன பண்ண முடியும் . Even though 1000 tokens are used , to get the proper meaning , it will take ( that means we will set ) , take from the start of the sentence.  “ It was popularised …… Ipsum .”  --&amp;gt; This will be handled by the Human conversation message. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;trim_messages() --&amp;gt; Function will do the honour in this.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In scenarios --&amp;gt; It will be useful only for recent messages. OLD messages will be deleted as per the token size.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anything older than the given budget is lost completely. --&amp;gt; this is the DOWNSIDE.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  SUMMARY MEMORY
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnsvt29wgghyfdbm1hngi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnsvt29wgghyfdbm1hngi.png" alt=" " width="799" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Human &amp;amp; AI → இதுல AI response பண்ணுது and Human  கேள்வி கேக்குறாங்க. இப்ப இதுல , memoryல 4 conversation தான் store பண்ண முடியும் but first ரெண்டு போயிடும் .  அதுக்கு முன்னாடி ,  ஒரு summary மாதிரி நம்ம save பண்ணி வச்சுக்கலாம் . So that , even the data gets deleted but we will have the summary. This summary can be created by passing to a cheap LLM for cost effectiveness.&lt;/li&gt;
&lt;li&gt;For collating the summary --&amp;gt; Use Cheap Model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;SummarizationMiddleware ()&lt;/em&gt;&lt;/strong&gt; --&amp;gt; This function will be used.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  LONG TERM MEMORY
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Agent will decide were to store and what to store .&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  SEMANTIC MEMORY
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Entire conversation into a POINT.&lt;/li&gt;
&lt;li&gt;Its like in RAG.&lt;/li&gt;
&lt;li&gt;Store in Vector DB.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Questions &amp;amp; Synopsis
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxo1op2uoejpavzist97v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxo1op2uoejpavzist97v.png" alt=" " width="799" height="585"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdu14txwrmb1w1yka4lf6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdu14txwrmb1w1yka4lf6.png" alt=" " width="799" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fawmgvuqvhi7wm2d2hb14.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fawmgvuqvhi7wm2d2hb14.png" alt=" " width="800" height="631"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx90cuc3c0gytinozq05c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx90cuc3c0gytinozq05c.png" alt=" " width="800" height="517"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyjg6pq2vqe66iqp1wll0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyjg6pq2vqe66iqp1wll0.png" alt=" " width="800" height="631"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Model needs memor&lt;/em&gt;&lt;/strong&gt;y ? --&amp;gt; They remember nothing: every call is fresh. The app must resend earlier messages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Buffer memory&lt;/em&gt;&lt;/strong&gt; --&amp;gt; Keep every message. Simple, but it grows forever (cost and size limit).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Window Memory&lt;/em&gt;&lt;/strong&gt; --&amp;gt; Keep the first message plus the last few. Forgets the middle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Token budget&lt;/em&gt;&lt;/strong&gt; --&amp;gt; Keep the newest messages that fit a token limit (trim_messages). Still forgets old things.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Summary memory&lt;/em&gt;&lt;/strong&gt; --&amp;gt; Replace old messages with a short summary so facts survive. Costs an extra AI call.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Long-term memory&lt;/em&gt;&lt;/strong&gt; --&amp;gt; Facts saved in a Store, shared across a user's conversations. The agent decides what to save.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Semantic memory&lt;/em&gt;&lt;/strong&gt; --&amp;gt; Long-term facts searched by meaning with embeddings. Needs an embedding model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Checkpointer&lt;/em&gt;&lt;/strong&gt; --&amp;gt; Saves the conversation after each turn (InMemorySaver; SqliteSaver or a database for persistence).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;thread_id&lt;/em&gt;&lt;/strong&gt; --&amp;gt; &lt;strong&gt;The conversation's file number&lt;/strong&gt;. Same id continues it; a new id starts fresh.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Middleware (@before_model)&lt;/em&gt;&lt;/strong&gt; --&amp;gt; A function that runs right before each AI call and can edit the message list.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Store vs checkpointe&lt;/em&gt;&lt;/strong&gt;r --&amp;gt; Checkpointer = one conversation. Store = lasting facts about the user across conversations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;user_id in memory tools&lt;/em&gt;&lt;/strong&gt; --&amp;gt; Comes from your app's context, not from the AI, so users can't read each other's memories.&lt;/p&gt;

&lt;h1&gt;
  
  
  Notes
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;What is In-memory --&amp;gt; its RAM.&lt;/li&gt;
&lt;li&gt;What is Langchain ?&lt;/li&gt;
&lt;li&gt;What is decorator ?&lt;/li&gt;
&lt;li&gt;what is lorem ipsum ?&lt;/li&gt;
&lt;li&gt;What is Key word ?&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>llm</category>
    </item>
    <item>
      <title>Promotion - Oracle ASM</title>
      <dc:creator>technonotes-hacker</dc:creator>
      <pubDate>Sun, 11 Oct 2026 15:59:04 +0000</pubDate>
      <link>https://dev.to/technonotes/promotion-oracle-asm-4k75</link>
      <guid>https://dev.to/technonotes/promotion-oracle-asm-4k75</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Oracle &lt;strong&gt;&lt;em&gt;Automatic Storage Management&lt;/em&gt;&lt;/strong&gt; (ASM) is a built-in volume manager and file system for Oracle Databases that simplifies storage administration.&lt;/li&gt;
&lt;li&gt;Its a &lt;strong&gt;Volume Manager&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;What will the Volume Manager will do ? and what do you mean by Volume ?
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;5TB Big Data , you need to store this --&amp;gt; In storage every single disc is having only 1TB. 
5 Hard Disc Needed. 
Multiple Disc into single disc to the outside world.
1 Volume can have 1 Physical Hard Disc or Multiple Hard Disc.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;These storage software will take care the Volume Manager also.&lt;/li&gt;
&lt;li&gt;If we assign Multiple disc to ASM , ASM can handle the disc , ASM add the disc from the Volume , Remove the disc from the volume , ASM can perform the redundancy of the storage, ASM can perform the Load Balancing inside the disc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;ASM provides the Volume Manager layer which is needed by every storage software&lt;/em&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;ASM also acts as a File System&lt;/em&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;What you mean by File System ?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Its a storage area.&lt;/li&gt;
&lt;li&gt;File System is basically a STORAGE.&lt;/li&gt;
&lt;li&gt;File System as Storage area for Oracle Database.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Oracle Clusterware&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can use it for Cluster Management not only for Oracle but for any other infrastructure.&lt;/li&gt;
&lt;li&gt;It can be installed to manage the cluster , it doesnt mean that you need to have only Oracle RAC.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Oracle ASM --&amp;gt; its is File System Storage only for Oracle RAC / Standalone Database. Its not supported for others.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;What type of File can store in ASM ?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;RMAN Backup&lt;/li&gt;
&lt;li&gt;Flash Back Log&lt;/li&gt;
&lt;li&gt;Export Import Files&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Expect PFILE&lt;/em&gt;&lt;/strong&gt; , all are in Binary Mode. So all files can be stored in ASM.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;DiskGroups in ASM&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Collection of disks which make a volume ( diskgroups )&lt;/li&gt;
&lt;li&gt;Diskgroup is nothing but Volume.&lt;/li&gt;
&lt;li&gt;Diskgroups --&amp;gt; Collection of disk at the OS level.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;You can assign / must assign a name to diskgroup&lt;/em&gt;&lt;/strong&gt;. Eg., ASM1  /dev/sdc1 --&amp;gt; The ASM1 name will be assiged to the physical disc.&lt;/li&gt;
&lt;li&gt;Minimum ASM Structure defined by Oracle is --&amp;gt; 3 Discgroups for basic Oracle RAC configuration.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;CRS Diskgroups --&amp;gt; To store cluster related files&lt;/li&gt;
&lt;li&gt;DATA Diskgroups --&amp;gt; To store database files like datafiles etc&lt;/li&gt;
&lt;li&gt;FRA Diskgroups --&amp;gt; To store FRA files&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;FRA --&amp;gt; Fast Recovery Area&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Where we named ASM1 ? At what place ?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When we installed the ASM Binary , Post ASM binary , we had issued a command " &lt;strong&gt;&lt;em&gt;Oracle ASM CREATE DISC&lt;/em&gt;&lt;/strong&gt; ".&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;What is DISkS ?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Physical HDD Storage&lt;/li&gt;
&lt;li&gt;One HDD can't belong to two discgroups&lt;/li&gt;
&lt;li&gt;But Multiple HDD can be belonged to one single discgroup.&lt;/li&gt;
&lt;li&gt;Types of storage considered for ASM:&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Complete HDD partition.&lt;/li&gt;
&lt;li&gt;Multiple HDD Partitions assigned to single ASM disks&lt;/li&gt;
&lt;li&gt;NFS&lt;/li&gt;
&lt;li&gt;LUNs allocated from Storage. Oracle doesn't recommend this ? Why ? &lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;ASM is already a Volume Manager,  so when allocate LUNs from the storage server , storage software is again a Volume Manager. Two Volume Manager are not recommended for storage of data. Because you will have Redundancy of Volume Manager.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eg., for point 2&lt;/p&gt;

&lt;p&gt;/dev/sdc&lt;br&gt;
       /dev/sdc1  --&amp;gt; ASM2  ( These are only disk )&lt;br&gt;
       /dev/sdc2  --&amp;gt; ASM3&lt;br&gt;
       /dev/sdc8  --&amp;gt; ASM7&lt;/p&gt;

&lt;p&gt;ASM2 is a single disk , can be assigned to one diskgroup. But ASM2 can't be assigned to Multiple Diskgroups.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1 single diskgroup can have multiple disk , it means , single diskgroup can have ASM2 , ASM3 . &lt;/li&gt;
&lt;li&gt;For ASM1 , I can add --&amp;gt; ASM1 /dev/sdc1 + /dev/sdd1 + ..&lt;/li&gt;
&lt;li&gt;These disk will have datafile.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftr6c5ykco3d5rk4vnrl4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftr6c5ykco3d5rk4vnrl4.png" alt=" " width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Lets get inside the ASM Instance
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;What is Oracle ASM Instance on STANDALONE DATABASE?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Its built on same technology as of database instance.&lt;/li&gt;
&lt;li&gt;SGA + BG Processes ( BackGround )&lt;/li&gt;
&lt;li&gt;No Redo Logs&lt;/li&gt;
&lt;li&gt;Its just a mediator between Oracle Instance and the Storage Disc.&lt;/li&gt;
&lt;li&gt;Its very small when compared to Oracle Database Instance as it performs very small task.&lt;/li&gt;
&lt;li&gt;Its smaller in size when compared to DB instance.&lt;/li&gt;
&lt;li&gt;where is Oracle ASM installed ? Oracle  ASM is installed in GRID_HOME. ASM binary are installed under GRID HOME.&lt;/li&gt;
&lt;li&gt;What exactly stored ? what is the metadata inside the ASM ? --&amp;gt; ASM manages the exact metadata of the disk group and provide file layout to Oracle Instance.&lt;/li&gt;
&lt;li&gt;ASM instance is like a mediator between Storage ( diskgroup ) and Oracle Instance.&lt;/li&gt;
&lt;li&gt;Every single machine as one ASM instance running on it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;3 DB instance on a single machine ==&amp;gt; 1 ASM instance shared by all the DB instances&lt;/em&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;What is Oracle ASM Instance on RAC DATABASE?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every single machine / node has one ASM instance running on it. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxg44ovkd5u71rh6b3ha2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxg44ovkd5u71rh6b3ha2.png" alt=" " width="798" height="179"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhbd1e30j1c78i197zyg7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhbd1e30j1c78i197zyg7.png" alt=" " width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Oracle ASM Instance Failure
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;If the Oracle ASM fails on one node --&amp;gt; what will happen ? --&amp;gt; what happens to the Oracle DB instance ? or If the Oracle Database is running and suddenly Datafiles are deleted , what will happen ? DB instance FAILS. Same DB Instance also fails if ASM fails. ( DB instance will also FAIL )&lt;/li&gt;
&lt;li&gt;Can I stop the ASM instance when DB is up and running ? ( Important Interview Question ) ---&amp;gt; Stop all the DBs instance accessing the ASM before stopping the ASM instances. This is the procedure.&lt;/li&gt;
&lt;li&gt;From 12c RAC --&amp;gt; ASM Instance Fail over was introduced --&amp;gt; Oracle ASM Flex Cluster , need to be enabled.&lt;/li&gt;
&lt;li&gt;what the ASM flex Cluster will do ? --&amp;gt; If the ASM in node 1 fails , then it communicates to ASM in node 2 and then access the shared location.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8n377h1vyr9gexhp7l86.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8n377h1vyr9gexhp7l86.png" alt=" " width="800" height="721"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This is only available only from Oracle RAC 12c.&lt;/li&gt;
&lt;li&gt;This is like High Availability.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  ASM Mirroring &amp;amp; Failure Group
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Mirroring is like Maintaining a copy of your data.&lt;/li&gt;
&lt;li&gt;Its like "A diskgroup is mirrored to another diskgroup".&lt;/li&gt;
&lt;li&gt;Oracle ASM itself provides the redunduncy.&lt;/li&gt;
&lt;li&gt;You have to mention the redundancy at the time of disk group creation.&lt;/li&gt;
&lt;li&gt;Once done , it can't be changed.&lt;/li&gt;
&lt;li&gt;Types of Redundancy in ASM :&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Normal --&amp;gt; 2 way redundancy --&amp;gt; 2 failure groups , Max you can have 3 Failure groups.&lt;/li&gt;
&lt;li&gt;High --&amp;gt; 3 way redundancy --&amp;gt; 3 failure groups , Max you can have 5 Failure groups.&lt;/li&gt;
&lt;li&gt;External --&amp;gt; No ASM level redundancy or you can have external Softwares for redundancy.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;What is Failure Groups ?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One Single Failure Group is one Single redundant Copy.&lt;/li&gt;
&lt;li&gt;To increase the redundancy , we can have multiple Failure groups.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmgosma09dsbsbrl5woev.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmgosma09dsbsbrl5woev.png" alt=" " width="800" height="605"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4g419v2zrmz05odlawen.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4g419v2zrmz05odlawen.png" alt=" " width="799" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Failure Group are defined while creating the disk group.&lt;/li&gt;
&lt;li&gt;Failure Group is nothing but the redunduncy , no of failure group is nothing but the level of redunduncy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6ufjrnzf72ez83wmra4e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6ufjrnzf72ez83wmra4e.png" alt=" " width="800" height="116"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  ASM Adminstrator
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;ASM needs the Utility to administor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;SQLPLus&lt;/em&gt;&lt;/strong&gt; ( How ? because ASM instance is like Oracle DB instance , so SQLPlus can be used )&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;ASMCMD&lt;/em&gt;&lt;/strong&gt; --&amp;gt; ASM command mode&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;ASMCA&lt;/em&gt;&lt;/strong&gt; --&amp;gt; ASM configuration ASSISTANCE --&amp;gt; its like GUI ( All things can be performed , even the upgrade of ASM ).&lt;/li&gt;
&lt;li&gt;These are the Utility used. But these are only for STANDALONE DB.&lt;/li&gt;
&lt;li&gt;What about RAC based Oracle Instance ? For Multiple ASM , then &lt;strong&gt;&lt;em&gt;SRVCTL&lt;/em&gt;&lt;/strong&gt; --&amp;gt; Clusterware Level Utility which allows you to administer all ASM Resources.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnbhthvb85n2248wkztb6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnbhthvb85n2248wkztb6.png" alt=" " width="800" height="143"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Note
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;DiskGroups as Table space&lt;/li&gt;
&lt;li&gt;Disks --&amp;gt; is a Datafile.&lt;/li&gt;
&lt;li&gt;In a tablespace can  have multiple datafile. But single datafile can't be assigned to two tablespace.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SGA&lt;/strong&gt; --&amp;gt; System Global Area&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CRS&lt;/strong&gt; --&amp;gt; Cluster Ready Services&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LUNs&lt;/strong&gt; --&amp;gt; Logical Unit Numbers&lt;/li&gt;
&lt;li&gt;Database backup is taken by RMAN. ASM will allocate the channel to the diskgroup. No ASM comes inbetween for backup . RMAN directly write into the ASM diskgroup. No over head on the ASM instance.&lt;/li&gt;
&lt;li&gt;When you take RMAN backup for OS level disk , does it give over head to the OS system ? Not really . Same , if you allocate channels to ASM diskgroup , RMAN will continur to write and ASM instance continue to perform until the diskgroup is full or ...&lt;/li&gt;
&lt;li&gt;If you talk about Volume Manager --&amp;gt; Stripping , Mirroring , Load Balancing --&amp;gt; Everything is supported by Oracle ASM.&lt;/li&gt;
&lt;li&gt;Irrespect of Database instance in a single node , only one ASM will be running for each node. That is the benefit . &lt;/li&gt;
&lt;li&gt;Mostly EXTERNAL will be configured , as they will allow the storage team at HARD DISK level.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SRVCTL&lt;/strong&gt; --&amp;gt; Server Control&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>architecture</category>
      <category>database</category>
      <category>infrastructure</category>
    </item>
    <item>
      <title>Promotion - CertIn</title>
      <dc:creator>technonotes-hacker</dc:creator>
      <pubDate>Sun, 11 Oct 2026 10:55:13 +0000</pubDate>
      <link>https://dev.to/technonotes/promotion-certin-2g3l</link>
      <guid>https://dev.to/technonotes/promotion-certin-2g3l</guid>
      <description>&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Indian Computer Emergency Response Team&lt;/em&gt;&lt;/strong&gt; ( CertIn )&lt;/li&gt;
&lt;li&gt;Its pivotal organization formed by Ministry of Electronics and Information Technology 2004.&lt;/li&gt;
&lt;li&gt;Effective response to Cyber Incidents.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Role
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Safeguard systems and network from:&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;em&gt;Cyber threats&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Including Malware , Hacking and Data Breaches&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Its key role is to monitor and analyse cyber threats and Vulnerabilities.&lt;/li&gt;
&lt;li&gt;Source : Government Agencies , Private Sector Organization , International Partners which helps to identify emerging threats and trends.&lt;/li&gt;
&lt;li&gt;The advisories and alerts are circulated amoung stakeholders.&lt;/li&gt;
&lt;li&gt;It also conducts awareness program.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Fostering a culture of Cyber Security AWARENESS&lt;/em&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Aims to empower individuals and Oraganization to protect themselves against Cyber threats.&lt;/li&gt;
&lt;li&gt;The Role of CERT-In in ensuring cyber security is becoming more critical day-by-day.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Technical Guidelines on | SBOM | QBOM &amp;amp; CBOM | AIBOM | HBOM |
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3hfv5ob7k9m33o19wrqz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3hfv5ob7k9m33o19wrqz.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  SBOM
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Software Bill of Materials&lt;/li&gt;
&lt;li&gt;A complete inventory of software components used in an application.&lt;/li&gt;
&lt;li&gt;Includes:&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Libraries (open source + proprietary)&lt;/li&gt;
&lt;li&gt;Versions&lt;/li&gt;
&lt;li&gt;Licenses&lt;/li&gt;
&lt;li&gt;Dependencies&lt;/li&gt;
&lt;li&gt;Vulnerability mapping&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  AIBOM
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;AI Bill of Materials.&lt;/li&gt;
&lt;li&gt;It includes servers, sensors, and GPUs. Also AI models , frameworks ,and development tools.&lt;/li&gt;
&lt;li&gt;Inventory of all AI‑model components, mandatory for AI systems.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Model name, type, version
Training dataset sources
Algorithms &amp;amp; architecture (LLM, CNN, etc.)
Open‑source AI components
External integrations
Governance approvals (MANDATORY per CERT‑In)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Benefits of AIBOM
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fopslywsz0n5gjqrzlltp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fopslywsz0n5gjqrzlltp.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Minimum Elements Required
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgxzy1iotij3ye3b3kk54.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgxzy1iotij3ye3b3kk54.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4qedkids2u3okrvk83uy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4qedkids2u3okrvk83uy.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Recommendation &amp;amp; Best Practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The format for generating AIBOM for AI solutions should adhere to established standards, such as Software Package Data eXchange &lt;strong&gt;&lt;em&gt;(SPDX) or CycloneDX&lt;/em&gt;&lt;/strong&gt;, ensuring compatibility and uniformity across the industry.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The AI developer/integrator organization that supplies AI solutions to government and public sector organizations should develop a &lt;strong&gt;Vulnerability Exploitability eXchange (VEX) for AI models&lt;/strong&gt; after a vulnerability or security issue is discovered.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzatwim17o5owwczzqylt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzatwim17o5owwczzqylt.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  HBOM
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Hardware Bill of Materials&lt;/li&gt;
&lt;li&gt;Inventory of hardware components supporting the application.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Servers
Network devices
Storage systems
Firmware versions
End‑of‑life/End‑of‑support status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  CBOM
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Configuration Bill of Materials&lt;/li&gt;
&lt;li&gt;Inventory of configuration elements that define how the system is deployed.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Config files
Environment variables
Parameter sets
Network config (ports, protocols, IPs)
Deployment descriptors
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  QBOM
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Cloud Bill of Materials&lt;/li&gt;
&lt;li&gt;QBOM is referenced alongside CBOM in the CERT‑In document.&lt;/li&gt;
&lt;li&gt;A structured inventory of all cloud components used by an application.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cloud services (AWS, Azure, GCP, etc.)
Compute resources (VMs, containers)
Storage buckets / databases
Identity &amp;amp; access configurations
External APIs hosted on cloud
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Notes
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Pivotal --&amp;gt; extremely important or central because everything else depends on it.&lt;/li&gt;
&lt;li&gt;foster --&amp;gt; to help or encourage the development of something (especially feelings or ideas).&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>cybersecurity</category>
      <category>infosec</category>
      <category>security</category>
    </item>
    <item>
      <title>Kubernetes - Day - 09 - Docker Quiz</title>
      <dc:creator>technonotes-hacker</dc:creator>
      <pubDate>Sun, 11 Oct 2026 10:05:05 +0000</pubDate>
      <link>https://dev.to/technonotes/kubernetes-day-09-docker-quiz-1df8</link>
      <guid>https://dev.to/technonotes/kubernetes-day-09-docker-quiz-1df8</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Just for first time --&amp;gt; &lt;strong&gt;&lt;em&gt;docker run hello-world&lt;/em&gt;&lt;/strong&gt; --&amp;gt; Docker can't find the image locally, so it pulls it from Docker Hub --&amp;gt; With no image on your machine, docker run pulls it from the registry, then creates and starts the container.&lt;/li&gt;
&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;time docker run --rm alpine echo "hi"&lt;/em&gt;&lt;/strong&gt; --&amp;gt; Run this command twice --&amp;gt; the second run much faster? --&amp;gt; The image was already downloaded on the first run. --&amp;gt; &lt;strong&gt;&lt;em&gt;The first run includes pulling the alpine image. After that, starting the container is just starting a process&lt;/em&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;docker run --rm alpine echo hi&lt;/em&gt;&lt;/strong&gt; --&amp;gt; Removes the container automatically when it exits.&lt;/li&gt;
&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;Which registry does Docker use when you don't name one? --&amp;gt; Docker Hub (docker.io)&lt;/li&gt;
&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;Which command lists images on your machine? --&amp;gt; &lt;strong&gt;&lt;em&gt;docker images&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;What problem does Docker mainly solve? --&amp;gt; "It works on my machine": packaging an app with everything it needs so it runs the same everywhere --&amp;gt;  &lt;strong&gt;&lt;em&gt;An image carries the app plus its libraries and settings&lt;/em&gt;&lt;/strong&gt;, so dev, test and production run the same thing.&lt;/p&gt;




&lt;p&gt;What do all containers on one host share? --&amp;gt; &lt;strong&gt;&lt;em&gt;The host's Linux kernel.&lt;/em&gt;&lt;/strong&gt; --&amp;gt; Containers are isolated processes on the host. Each gets its own view of files and processes, but they all use the host's kernel.&lt;/p&gt;




&lt;p&gt;Why does a VM usually take longer to start than a container? --&amp;gt; A &lt;strong&gt;&lt;em&gt;VM boots a complete operating system&lt;/em&gt;&lt;/strong&gt;; a &lt;strong&gt;&lt;em&gt;container just starts a proces&lt;/em&gt;&lt;/strong&gt;s. --&amp;gt; A VM is a whole pretend computer with its own kernel. A container is a normal process with a private view.&lt;/p&gt;




&lt;p&gt;Which program lets one physical server run several virtual machines? --&amp;gt; &lt;strong&gt;&lt;em&gt;A hypervisor&lt;/em&gt;&lt;/strong&gt; (KVM, VMware, VirtualBox)&lt;/p&gt;




&lt;p&gt;An image is to a container as… --&amp;gt; a recipe is to a cooked dish (or a class to an object) --&amp;gt; One image can start many containers, &lt;strong&gt;&lt;em&gt;just like one recipe can feed many plates&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;Why does Docker Desktop run a small Linux VM on Windows and macOS? --&amp;gt; &lt;strong&gt;&lt;em&gt;Linux containers need a Linux kernel&lt;/em&gt;&lt;/strong&gt;, and Windows/macOS don't provide one.&lt;/p&gt;




&lt;p&gt;Which statements about containers are true? (Pick all that apply.) --&amp;gt; They usually start in seconds or less , Their images are usually megabytes, not gigabytes &amp;amp; One machine can run many of them --&amp;gt; &lt;strong&gt;&lt;em&gt;Containers are light&lt;/em&gt;&lt;/strong&gt; because they skip the extra OS. No boot, no full OS image.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx4l5d11osj95h539i2x5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx4l5d11osj95h539i2x5.png" alt=" " width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;




</description>
      <category>beginners</category>
      <category>devops</category>
      <category>docker</category>
    </item>
    <item>
      <title>Kubernetes - A Complete Guide in Tamil - 1</title>
      <dc:creator>technonotes-hacker</dc:creator>
      <pubDate>Sun, 11 Oct 2026 07:26:24 +0000</pubDate>
      <link>https://dev.to/technonotes/kubernetes-a-complete-guide-in-tamil-1o55</link>
      <guid>https://dev.to/technonotes/kubernetes-a-complete-guide-in-tamil-1o55</guid>
      <description>&lt;ul&gt;
&lt;li&gt;helmsman&lt;/li&gt;
&lt;li&gt;A helmsman is a person who physically steers a ship, boat, sailboat, submarine, airship, or spacecraft.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8g6kc2auq9icxj4n1rr6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8g6kc2auq9icxj4n1rr6.png" alt=" " width="567" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;K8s&lt;/li&gt;
&lt;li&gt;Most popular for managing the container.&lt;/li&gt;
&lt;li&gt;Open source container orchestration platform.&lt;/li&gt;
&lt;li&gt;orchestration  --&amp;gt; Management of container.&lt;/li&gt;
&lt;li&gt;Automate --&amp;gt; scale up &amp;amp; scale down , Deployment process.&lt;/li&gt;
&lt;li&gt;Load Balacing&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  History
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Developed by Google - 2014&lt;/li&gt;
&lt;li&gt;CNCF --&amp;gt; Managing the k8s ( CNCF acquried ).&lt;/li&gt;
&lt;li&gt;Kubernetes a greek word for helmsman.&lt;/li&gt;
&lt;li&gt;7 spokes in k8s represents 7 founders.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why we need k8s ?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;To update all the container at a time with docker is a challange or complex process.&lt;/li&gt;
&lt;li&gt;Container should not go down ( maintaince ).&lt;/li&gt;
&lt;li&gt;If container fails , it needs to restart by itself.&lt;/li&gt;
&lt;li&gt;Production Challenges : Manual scaling , HA &amp;amp; Networking along with storage.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  K8s
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;All the above will be automated by KUBERNETES.&lt;/li&gt;
&lt;li&gt;Automating deployment &amp;amp; scaling.&lt;/li&gt;
&lt;li&gt;Self-healing.&lt;/li&gt;
&lt;li&gt;LB&lt;/li&gt;
&lt;li&gt;Managing storage.&lt;/li&gt;
&lt;li&gt;Its like Swiggy Eg., Order FOOD and just relax . Swiggy will take care everything. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzk3teoin16zfqaqrp4u0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzk3teoin16zfqaqrp4u0.png" alt=" " width="538" height="643"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To host the application inside the containers.&lt;/li&gt;
&lt;li&gt;We can't directly work with container , here its called PODS.&lt;/li&gt;
&lt;li&gt;Pods will run on worker nodes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Docker Swarm vs K8s
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Both are event organiser.&lt;/li&gt;
&lt;li&gt;Docker Swarm contains --&amp;gt; Cluster --&amp;gt; Cluster contains --&amp;gt; Nodes --&amp;gt; Nodes containes --&amp;gt; Containers --&amp;gt; Containers contain APPs.&lt;/li&gt;
&lt;li&gt;K8s contains --&amp;gt; Cluster --&amp;gt; Cluster contains --&amp;gt; Nodes --&amp;gt; Nodes --&amp;gt; Nodes containes --&amp;gt; PODS --&amp;gt; PODS contain --&amp;gt; Containers contain APPs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb99qvfe0kdng3idr9qi1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb99qvfe0kdng3idr9qi1.png" alt=" " width="799" height="307"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker Swarm --&amp;gt; Small scale events. Eg., Common wealth &lt;/li&gt;
&lt;li&gt;K8s --&amp;gt; Large scale events. Eg., Olympics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgmak00lk1b2ugjgeyyfe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgmak00lk1b2ugjgeyyfe.png" alt=" " width="799" height="231"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Cluster
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Cluster is a group of servers or virtual machine.&lt;/li&gt;
&lt;li&gt;Any cluster contains&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Master Node / Control Plane &lt;/li&gt;
&lt;li&gt;Worker Nodes / Data Plane&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Control Plane
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Its like a director&lt;/li&gt;
&lt;li&gt;Manage the &lt;strong&gt;&lt;em&gt;scheduling , scaling &amp;amp; Monitoring&lt;/em&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Control Plane is like டைரக்டர் சங்கர். Control Plane எல்லாத்தையும் பாத்துப்பார்.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Worker Nodes / Data Plane
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Its like actors &lt;/li&gt;
&lt;li&gt;Follow the instruction of control plane and ensure the task is executed.&lt;/li&gt;
&lt;li&gt;Each nodes will have containers inside.&lt;/li&gt;
&lt;li&gt;The actual work will happen inside the worker node.&lt;/li&gt;
&lt;li&gt;Each node runs containers inside PODS.&lt;/li&gt;
&lt;li&gt;Worker Nodes is like ACTOR ரஜினிகாந்த் மாதிரி டைரக்டர் என்ன சொல்றாரோ அதை தான் கேட்கணும்.  Implementation இவர்தான்.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6us0g4vkjywfd2wgspww.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6us0g4vkjywfd2wgspww.png" alt=" " width="648" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  k8s Architecture
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdkmz7hn0mnvkrmaqgx87.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdkmz7hn0mnvkrmaqgx87.png" alt=" " width="800" height="508"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Each worker node containes:&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Kubelet&lt;/li&gt;
&lt;li&gt;Kube-Proxy&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq8ebqyx1eu0ov3kd610h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq8ebqyx1eu0ov3kd610h.png" alt=" " width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CLI --&amp;gt; Command Line Interphase&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Kubectl&lt;/em&gt;&lt;/strong&gt; --&amp;gt; With this only we are going to communicate with KUBERNETES.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  How deployment Happens in K8s ?
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;You can't interact with WORKER NODE directly.&lt;/li&gt;
&lt;li&gt;Anything you need to do in K8S means , you need to do with Control plane only.&lt;/li&gt;
&lt;li&gt;You want to create a POD ? Inside the POD , you want to deploy a Application.&lt;/li&gt;
&lt;li&gt;Now the user request will go to API Server and the API Server will store the request to etcd.&lt;/li&gt;
&lt;li&gt;etcd --&amp;gt; Store the request in this and its a internal datasource of K8S.&lt;/li&gt;
&lt;li&gt;Now Scheduler will always check the etcd , is there any request available.&lt;/li&gt;
&lt;li&gt;Scheduler found one request that " someone trying to deploy the application ".&lt;/li&gt;
&lt;li&gt;Scheduler will decide , in which WORKER NODE it needs to deployed.&lt;/li&gt;
&lt;li&gt;How the Scheduler  decides which worker node ? --&amp;gt; Scheduler will have a information of the WORKER NODE. ( storage , pods are running already , CPU ) will be assessed by the scheduler.&lt;/li&gt;
&lt;li&gt;How Scheduler knows all the details of the worker node ? There will be worker node agent called --&amp;gt; KUBELET.&lt;/li&gt;
&lt;li&gt;KUBELET role is to gather WORKER NODE information , so its called WORKER NODE AGENT. Which as all the informatio n related to the worker node and send the information to the Scheduler .&lt;/li&gt;
&lt;li&gt;Scheduler  will decide in which worker node it should be scheduled. thats it.&lt;/li&gt;
&lt;li&gt;Who is the actuall one to deploy ? Controller-Manager.&lt;/li&gt;
&lt;li&gt;Kube-Proxy is the network interphase between Control plane and worker node and between pods. &lt;/li&gt;
&lt;li&gt;Kube-Proxy is a Network element of K8S Cluster --&amp;gt; &lt;strong&gt;&lt;em&gt;Container Network Interphase --&amp;gt; CNI&lt;/em&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;CNI is a plugin.&lt;/li&gt;
&lt;li&gt;CNI will take care &lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Communication smoothly happens between Worker node and Control plane.&lt;/li&gt;
&lt;li&gt;Control Plane and worker nodes.&lt;/li&gt;
&lt;li&gt;Pods running in the same container.&lt;/li&gt;
&lt;li&gt;Pods which are runninhg in same worker node.&lt;/li&gt;
&lt;li&gt;Poda which are running different worker nodes.&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Inside Woker Nodes , you will have CRI --&amp;gt; Container Runtime Interphase.&lt;/li&gt;
&lt;li&gt;CRI --&amp;gt; is nothing but --&amp;gt; DOCKER.&lt;/li&gt;
&lt;li&gt;CRI will help to create the pods and inside the pods , container will be availble.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmsu3pdczuazmr7vo2jc0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmsu3pdczuazmr7vo2jc0.png" alt=" " width="799" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All these will happen in FACTION OF SECS.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Types of K8S Cluster
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Self Managed Cluster
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Minikube --&amp;gt; Single node cluster&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;_Kubeadm _&lt;/strong&gt;--&amp;gt; Multi Node Cluster --&amp;gt; Manual Maintainence.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Kops&lt;/em&gt;&lt;/strong&gt;--&amp;gt; Multi Node Cluster --&amp;gt; Manual Maintainence.&lt;/li&gt;
&lt;li&gt;KinD --&amp;gt; Multi Node Cluster --&amp;gt; Manual Maintainence. ( Kubernetes in Docker ) --&amp;gt; Kubernetes can also be maintained in Docker.&lt;/li&gt;
&lt;li&gt;rancher --&amp;gt; Self Managed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cloud Managed K8S Cluster
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;AWS --&amp;gt; EKS --&amp;gt; Elastic Kubernetes Service&lt;/li&gt;
&lt;li&gt;Azure --&amp;gt; AKS --&amp;gt; Azure Kubernetes Service&lt;/li&gt;
&lt;li&gt;GCP --&amp;gt; Google Kubernetes Engine ( GKE )&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Methods of creating Cluster
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Direct Console&lt;/li&gt;
&lt;li&gt;CLI --&amp;gt; Command Line Interphase&lt;/li&gt;
&lt;li&gt;Manifest file --&amp;gt; Configuration file&lt;/li&gt;
&lt;li&gt;Terraform&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Billing of K8S
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;0.10$ per hour --&amp;gt; &lt;a href="https://aws.amazon.com/eks/pricing/?trk=d04c06f6-db30-401a-b3fd-3b0ba3eaf643&amp;amp;sc_channel=ps&amp;amp;refid=d04c06f6-db30-401a-b3fd-3b0ba3eaf643" rel="noopener noreferrer"&gt;https://aws.amazon.com/eks/pricing/?trk=d04c06f6-db30-401a-b3fd-3b0ba3eaf643&amp;amp;sc_channel=ps&amp;amp;refid=d04c06f6-db30-401a-b3fd-3b0ba3eaf643&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxwe93s8v6s9vuxztarui.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxwe93s8v6s9vuxztarui.png" alt=" " width="800" height="215"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This is only for CLUSTER.&lt;/li&gt;
&lt;li&gt;Other underlying resources will have separate charges.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  AWS
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;EKS Cluster --&amp;gt; Elastic Kubernetes Service&lt;/li&gt;
&lt;li&gt;Launch a EC2 Instance --&amp;gt; EKS Client VM&lt;/li&gt;
&lt;li&gt;With this interact with the cluster.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz00z6ixx0lupdkgssieu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz00z6ixx0lupdkgssieu.png" alt=" " width="799" height="485"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbc6xm9pxshnupb4qjixm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbc6xm9pxshnupb4qjixm.png" alt=" " width="800" height="293"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Notes
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Docker is used to create Container.&lt;/li&gt;
&lt;li&gt;Docker Swarm is used to manage. Its a part of Docker.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>automation</category>
      <category>cloud</category>
      <category>devops</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>Promotion - Canary Deployment</title>
      <dc:creator>technonotes-hacker</dc:creator>
      <pubDate>Fri, 09 Oct 2026 03:45:31 +0000</pubDate>
      <link>https://dev.to/technonotes/promotion-canary-deployment-mjo</link>
      <guid>https://dev.to/technonotes/promotion-canary-deployment-mjo</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsww9u0wiogp1mait7zio.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsww9u0wiogp1mait7zio.png" alt=" " width="800" height="637"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a small, yellow songbird.&lt;/li&gt;
&lt;li&gt;a small yellow bird that sings and is often kept as a pet.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  What is Canary Deployment ?
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Its a technique for rolling out new features or changes to a small traffic or instance before releasing the update to the entire system.&lt;/li&gt;
&lt;li&gt;A small percentage of traffic is then routed to the new deployment , while the majority of the traffic continues to be served by the original deployment.&lt;/li&gt;
&lt;li&gt;If the issues are detected during the canary deployment , it can be quickly rolled back to the original deployment.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Adavantage
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Its a valuable tool for minimizing risk and ensuring high availability in complex distributed systems.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Target Deployment
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Microservice&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Process Flow
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Plan and Create&lt;/li&gt;
&lt;li&gt;Analyze&lt;/li&gt;
&lt;li&gt;Roll Out&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Implementation Plan
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fghinnn2gwoau9zlfol3f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fghinnn2gwoau9zlfol3f.png" alt=" " width="800" height="494"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Deployment
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Deployment team will take care via IR / CR accordyingly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqav3x57v92ftpbtj24np.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqav3x57v92ftpbtj24np.png" alt=" " width="800" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Canary Deployment will not be carried out for ?
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;DB changes&lt;/li&gt;
&lt;li&gt;Low traffic Application&lt;/li&gt;
&lt;li&gt;Request and Response changes&lt;/li&gt;
&lt;li&gt;If the application as complex dependencies which one microservice will affect another in unexpected way then its difficult to isolate the issues.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  How failures will be identified in canary deployment
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;POD wise logs will be maintained where the transaction failures can be verified.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Reference
&lt;/h1&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://kubernetes.io/docs/tutorials/stateless-application/canary-deployment/" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fkubernetes.io%2Fimages%2Fkubernetes-open-graph.png" height="173" class="m-0" width="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://kubernetes.io/docs/tutorials/stateless-application/canary-deployment/" rel="noopener noreferrer" class="c-link"&gt;
            Deploy a Release Using a Canary Deployment | Kubernetes
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            This tutorial walks you through deploying a canary release in Kubernetes. A canary deployment allows you to safely test a new application version with a small portion of production traffic before rolling it out completely. This approach helps minimize risk and enables rapid feedback from real users.
For an overview of canary deployments, see Canary deployments in the Managing Workloads concept page.
Objectives Deploy a stable version of an application Deploy a canary version alongside the stable version Route traffic to both versions using a Service Monitor the canary deployment Complete the rollout by scaling the canary and removing the stable version Before you beginYou need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. It is recommended to run this tutorial on a cluster with at least two nodes that are not acting as control plane hosts. If you do not already have a cluster, you can create one by using minikube or you can use one of these Kubernetes playgrounds:
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fkubernetes.io%2Fimages%2Fkubernetes.png" width="512" height="512"&gt;
          kubernetes.io
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


</description>
      <category>architecture</category>
      <category>deployment</category>
      <category>devops</category>
    </item>
    <item>
      <title>Promotion - UNIX / Linux Basics - 2</title>
      <dc:creator>technonotes-hacker</dc:creator>
      <pubDate>Thu, 08 Oct 2026 18:05:54 +0000</pubDate>
      <link>https://dev.to/technonotes/promotion-unix-linux-basics-2-mbj</link>
      <guid>https://dev.to/technonotes/promotion-unix-linux-basics-2-mbj</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The &lt;strong&gt;&lt;em&gt;kernel&lt;/em&gt;&lt;/strong&gt; is the core foundation of the OS that directly interfaces with system hardware and controls process and memory operations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Kernal --&amp;gt; its between the computer's hardware and its processes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;SIGTERM (signal 15)&lt;/em&gt;&lt;/strong&gt; is the default termination signal sent by commands like kill, allowing the process to perform clean-up routines.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;graceful and clean termination , allowing the application to save its active transactions before closing --&amp;gt; &lt;strong&gt;&lt;em&gt;SIGTERM (signal 15)&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;/etc/shadow&lt;/em&gt;&lt;/strong&gt; contains the secure encrypted password hashes and security aging constraints. --&amp;gt; sensitive system file securely stores encrypted user password hashes and account expiration details , only root user can access.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;30 2 * * 1-5 /opt/bank/scripts/eod_report.sh. Exactly when does this script run? --&amp;gt; &lt;strong&gt;30 specifies the minute&lt;/strong&gt; , 2 specifies the hour (2:30 AM), and &lt;strong&gt;1-5 specifies weekdays (Monday through Friday)&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwx0vwn3c4kgklmaq3fju.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwx0vwn3c4kgklmaq3fju.png" alt=" " width="799" height="348"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;top&lt;/em&gt;&lt;/strong&gt; utility displays a live, refreshing summary of system resource usage and active tasks sorted by resource consumption. --&amp;gt; dynamic, continuous real-time view of active system tasks, CPU utilization metrics, and memory consumption profiles on a Linux server.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;sar&lt;/em&gt;&lt;/strong&gt; is used for collecting, reporting, and saving historical system activity data over time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;vmstat&lt;/em&gt;&lt;/strong&gt; reports virtual memory, paging, and block IO statistics, but does not offer an interactive real-time process manager interface.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;netstat&lt;/em&gt;&lt;/strong&gt; inspects network connections, routing tables, and interface statistics.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;inode&lt;/em&gt;&lt;/strong&gt; --&amp;gt; File names are mapped to inode numbers inside directory files; the inode itself holds the metadata and block pointers, omitting the filename string. It stores file attributes, permissions, and disk pointers, &lt;strong&gt;but does NOT store the actual file name&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy4gpz4q6nyc91mk8ir5m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy4gpz4q6nyc91mk8ir5m.png" alt=" " width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2aoei83qlh35i26dsw5s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2aoei83qlh35i26dsw5s.png" alt=" " width="800" height="573"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;/proc/meminfo&lt;/em&gt;&lt;/strong&gt; is a virtual kernel file that provides live metrics regarding total, free, cached, and swap memory usage. --&amp;gt; virtual file system path exposes detailed real-time kernel memory statistics and swap utilization data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frr3ipsqs9901iy5tmgjq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frr3ipsqs9901iy5tmgjq.png" alt=" " width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Notes
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;what is hardened enterprise Linux environment ?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faj8wi4lo8jnzff5leuaz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faj8wi4lo8jnzff5leuaz.png" alt=" " width="800" height="127"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>devops</category>
      <category>linux</category>
    </item>
  </channel>
</rss>
