{"id":105185,"date":"2026-07-18T19:29:57","date_gmt":"2026-07-18T19:29:57","guid":{"rendered":"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/"},"modified":"2026-07-18T19:29:57","modified_gmt":"2026-07-18T19:29:57","slug":"google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite","status":"publish","type":"post","link":"https:\/\/youzum.net\/de\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/","title":{"rendered":"Google Cloud\u2019s Always-On Memory Agent Replaces RAG and Embeddings With Continuous LLM Consolidation on Gemini 3.1 Flash-Lite"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Most AI agents forget. They process a request, answer it, then drop the context. Google Cloud\u2019s <a href=\"https:\/\/github.com\/GoogleCloudPlatform\/generative-ai\/tree\/main\/gemini\/agents\/always-on-memory-agent\"><code>generative-ai<\/code> repository now ships a sample that tackles this directly. It is the <strong>Always-On Memory Agent<\/strong><\/a>, a reference implementation that treats memory as a running process.<\/p>\n<h2 class=\"wp-block-heading\"><strong>Always-On Memory Agent<\/strong><\/h2>\n<p class=\"wp-block-paragraph\">Fundamentally, the project is a lightweight background agent that never stops. It runs 24\/7 as a continuous process, not a one-shot call. It is built with <strong>Google ADK<\/strong> (Agent Development Kit) and <strong>Gemini 3.1 Flash-Lite<\/strong>. Notably, it uses no vector database and no embeddings. Instead, an LLM reads, thinks, and writes structured memory into <strong>SQLite<\/strong>. The model choice targets low latency and low cost for continuous background work.<\/p>\n<h2 class=\"wp-block-heading\"><strong>How It Works: Ingest, Consolidate, Query<\/strong><\/h2>\n<p class=\"wp-block-paragraph\">Architecturally, an orchestrator routes every request to one of three specialist sub-agents. Each sub-agent owns its own tools for reading or writing the memory store.<\/p>\n<p class=\"wp-block-paragraph\">First, the <strong>IngestAgent<\/strong> handles incoming content. It uses Gemini\u2019s multimodal capabilities to extract a summary, entities, topics, and an importance score. That structured record then lands in the <code>memories<\/code> table.<\/p>\n<p class=\"wp-block-paragraph\">Next, the <strong>ConsolidateAgent<\/strong> runs on a timer, every 30 minutes by default. Like sleep cycles, it reviews unconsolidated memories and finds connections between them. Then it writes a synthesized summary, one key insight, and those connections to the database. Consequently, the agent builds new understanding while idle, with no prompt.<\/p>\n<p class=\"wp-block-paragraph\">Finally, the <strong>QueryAgent<\/strong> answers questions. It reads all memories and consolidation insights, then synthesizes a response. Importantly, it cites the memory IDs it used as sources.<\/p>\n<p><!-- Always-On Memory Agent \u2014 interactive explainer (Marktechpost). Paste into a WordPress \"Custom HTML\" block. --><\/p>\n<div>\n&#8220;, src:&#8221;report.pdf&#8221;, sm:&#8221;Anthropic reports 62% of Claude usage is code-related.&#8221;,<br \/>\n      ent:[&#8220;Anthropic&#8221;,&#8221;Claude&#8221;,&#8221;AI agents&#8221;], tp:[&#8220;AI&#8221;,&#8221;code generation&#8221;], imp:0.8},<br \/>\n    {icon:&#8221;<img decoding=\"async\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/1f5bc.png\" alt=\"\ud83d\uddbc\" class=\"wp-smiley\" \/>&#8220;, src:&#8221;roadmap.png&#8221;, sm:&#8221;Q1 priority: reduce inference costs by 40%.&#8221;,<br \/>\n      ent:[&#8220;Q1&#8243;,&#8221;inference&#8221;], tp:[&#8220;cost&#8221;,&#8221;planning&#8221;], imp:0.7},<br \/>\n    {icon:&#8221;<img decoding=\"async\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/1f399.png\" alt=\"\ud83c\udf99\" class=\"wp-smiley\" \/>&#8220;, src:&#8221;standup.mp3&#8243;, sm:&#8221;AI agents grow fast, but reliability is still a challenge.&#8221;,<br \/>\n      ent:[&#8220;AI agents&#8221;,&#8221;reliability&#8221;], tp:[&#8220;agents&#8221;,&#8221;reliability&#8221;], imp:0.75},<br \/>\n    {icon:&#8221;<img decoding=\"async\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/1f4dd.png\" alt=\"\ud83d\udcdd\" class=\"wp-smiley\" \/>&#8220;, src:&#8221;idea.txt&#8221;, sm:&#8221;Smart inbox idea: persistent AI memory for email.&#8221;,<br \/>\n      ent:[&#8220;smart inbox&#8221;,&#8221;email&#8221;], tp:[&#8220;product&#8221;,&#8221;memory&#8221;], imp:0.6}<br \/>\n  ];<br \/>\n  var CONS = {<br \/>\n    links:[[1,3],[2,1],[3,4]],<br \/>\n    insight:&#8221;The bottleneck for next-gen AI tools is the transition from static RAG to dynamic memory systems.&#8221;<br \/>\n  };<br \/>\n  var Q = &#8220;What should I focus on?&#8221;;<br \/>\n  var A = &lsquo;Based on your memories, prioritize: ship the cost-reduction plan &lt;span class=&quot;&rdquo;ref&rdquo;&quot;&gt;[Memory 2]&lt;\/span&gt;, &lsquo; +<br \/>\n          &lsquo;then close the agent reliability gap &lt;span class=&quot;&rdquo;ref&rdquo;&quot;&gt;[Memory 3]&lt;\/span&gt;. &lsquo; +<br \/>\n          &lsquo;The smart inbox concept &lt;span class=&quot;&rdquo;ref&rdquo;&quot;&gt;[Memory 4]&lt;\/span&gt; validates demand for persistent AI memory.&rsquo;;\n<p>  var i=0, consolidated=false;<br \/>\n  var $=function(id){return document.getElementById(id)};<br \/>\n  var store=$(&#8220;store&#8221;), pkt=$(&#8220;pkt&#8221;), logEl=$(&#8220;log&#8221;);<\/p>\n<p>  function post(){ try{ parent.postMessage({type:&#8221;aoma-resize&#8221;,height:document.body.offsetHeight+40},&#8221;*&#8221;); }catch(e){} }<br \/>\n  function log(html){ logEl.innerHTML=html; post(); }<br \/>\n  function activate(el,cls){ [ &#8220;sIngest&#8221;,&#8221;sCons&#8221;,&#8221;sQuery&#8221; ].forEach(function(id){ $(id).classList.remove(&#8220;active&#8221;,&#8221;cons&#8221;,&#8221;query&#8221;); });<br \/>\n    if(el){ el.classList.add(&#8220;active&#8221;); if(cls) el.classList.add(cls); } }<\/p>\n<p>  function packet(color){ pkt.style.background=color; pkt.style.opacity=&#8221;1&#8243;; pkt.style.left=&#8221;0&#8243;;<br \/>\n    setTimeout(function(){ pkt.style.left=&#8221;calc(100% &#8211; 10px)&#8221;; },30);<br \/>\n    setTimeout(function(){ pkt.style.opacity=&#8221;0&#8243;; },950); }<\/p>\n<p>  function ingest(){<br \/>\n    if(i&gt;=SAMPLES.length){ log(&ldquo;&lt;b&gt;Inbox empty.&lt;\/b&gt; All 4 sample files ingested &mdash; now consolidate or query.&rdquo;); return; }<br \/>\n    var s=SAMPLES[i]; var id=i+1;<br \/>\n    activate($(&#8220;sIngest&#8221;)); packet(&#8220;#4285F4&#8221;);<br \/>\n    log(&lsquo;&lt;b&gt;IngestAgent&lt;\/b&gt; reads &lt;b&gt;&rsquo;+s.icon+&rsquo; &lsquo;+s.src+&#039;&lt;\/b&gt; &rarr; extracting summary, entities, topics, importance&hellip;&rsquo;);<br \/>\n    var c=document.createElement(&#8220;div&#8221;); c.className=&#8221;card&#8221;; c.id=&#8221;card&#8221;+id;<br \/>\n    c.innerHTML=&#039;&lt;span class=&quot;&rdquo;cid&rdquo;&quot;&gt;#&rsquo;+id+&#039;&lt;\/span&gt;&lt;div class=&quot;&rdquo;sm&rdquo;&quot;&gt;&rsquo;+s.sm+&#039;&lt;\/div&gt;&rsquo;+<br \/>\n      &lsquo;&lt;div class=&quot;&rdquo;chips&rdquo;&quot;&gt;&rsquo;+s.ent.map(function(e){return &lsquo;&lt;span class=&quot;&rdquo;chip&rdquo;&quot;&gt;&rsquo;+e+&#039;&lt;\/span&gt;&rsquo;}).join(&ldquo;&rdquo;)+&#039;&lt;\/div&gt;&rsquo;+<br \/>\n      &lsquo;&lt;div class=&quot;&rdquo;chips&rdquo;&quot;&gt;&rsquo;+s.tp.map(function(t){return &lsquo;&lt;span class=&quot;&rdquo;chip&quot; tp&rdquo;&gt;&rsquo;+t+&#039;&lt;\/span&gt;&rsquo;}).join(&ldquo;&rdquo;)+&#039;&lt;\/div&gt;&rsquo;+<br \/>\n      &lsquo;&lt;div class=&quot;&rdquo;imp&rdquo;&quot;&gt;importance &lt;b&gt;&rsquo;+s.imp+&#039;&lt;\/b&gt;&lt;\/div&gt;&rsquo;;<br \/>\n    store.appendChild(c); post();<br \/>\n    setTimeout(function(){ c.classList.add(&#8220;show&#8221;); post();<br \/>\n      log(&lsquo;&lt;b&gt;Stored memory #&rsquo;+id+&#039;&lt;\/b&gt; in SQLite. &lsquo;+(SAMPLES.length-id)+&rsquo; file(s) left in inbox.&rsquo;); },500);<br \/>\n    i++;<br \/>\n    if(i&gt;=2){ $(&#8220;bCons&#8221;).disabled=false; $(&#8220;bQuery&#8221;).disabled=false; }<br \/>\n  }<\/p>\n<p>  function consolidate(){<br \/>\n    if(i&lt;2){ log(&#8220;Ingest at least 2 memories first.&#8221;); return; }<br \/>\n    activate($(&#8220;sCons&#8221;),&#8221;cons&#8221;); packet(&#8220;#FBBC04&#8221;);<br \/>\n    $(&#8220;tmr&#8221;).classList.add(&#8220;run&#8221;);<br \/>\n    log(&ldquo;&lt;b&gt;ConsolidateAgent&lt;\/b&gt; woke on its 30-min timer &mdash; reviewing unconsolidated memories&hellip;&rdquo;);<br \/>\n    var svg=$(&#8220;wires&#8221;); svg.innerHTML=&#8221;&#8221;;<br \/>\n    for(var k=1;k&lt;=Math.min(i,4);k++){ var el=$(&#8220;card&#8221;+k); if(el) el.classList.add(&#8220;hl&#8221;); }<br \/>\n    setTimeout(function(){<br \/>\n      CONS.links.forEach(function(pair){ drawWire(pair[0],pair[1]); });<br \/>\n      log(&ldquo;&lt;b&gt;Found connections&lt;\/b&gt; across memories &mdash; writing one cross-cutting insight&hellip;&rdquo;);<br \/>\n    },500);<br \/>\n    setTimeout(function(){<br \/>\n      var ins=$(&ldquo;insight&rdquo;); ins.innerHTML=&#039;&lt;b&gt;Insight:&lt;\/b&gt; &lsquo;+CONS.insight; ins.classList.add(&ldquo;show&rdquo;);<br \/>\n      $(&#8220;tmr&#8221;).classList.remove(&#8220;run&#8221;); consolidated=true;<br \/>\n      log(&ldquo;&lt;b&gt;Consolidation done.&lt;\/b&gt; New insight written back to the store &mdash; no prompt needed.&rdquo;); post();<br \/>\n    },1200);<br \/>\n  }<\/p>\n<p>  function drawWire(a,b){<br \/>\n    var svg=$(&#8220;wires&#8221;), ca=$(&#8220;card&#8221;+a), cb=$(&#8220;card&#8221;+b); if(!ca||!cb) return;<br \/>\n    var box=svg.getBoundingClientRect(), ra=ca.getBoundingClientRect(), rb=cb.getBoundingClientRect();<br \/>\n    var x1=ra.left-box.left+ra.width\/2, y1=ra.top-box.top+ra.height\/2;<br \/>\n    var x2=rb.left-box.left+rb.width\/2, y2=rb.top-box.top+rb.height\/2;<br \/>\n    var ln=document.createElementNS(&#8220;http:\/\/www.w3.org\/2000\/svg&#8221;,&#8221;line&#8221;);<br \/>\n    ln.setAttribute(&#8220;x1&#8221;,x1);ln.setAttribute(&#8220;y1&#8221;,y1);ln.setAttribute(&#8220;x2&#8221;,x1);ln.setAttribute(&#8220;y2&#8221;,y1);<br \/>\n    ln.setAttribute(&#8220;stroke&#8221;,&#8221;#FBBC04&#8243;);ln.setAttribute(&#8220;stroke-width&#8221;,&#8221;2&#8243;);ln.setAttribute(&#8220;stroke-dasharray&#8221;,&#8221;4 3&#8243;);<br \/>\n    svg.appendChild(ln);<br \/>\n    requestAnimationFrame(function(){ ln.style.transition=&#8221;all .5s&#8221;; ln.setAttribute(&#8220;x2&#8221;,x2); ln.setAttribute(&#8220;y2&#8221;,y2); });<br \/>\n  }<\/p>\n<p>  function query(){<br \/>\n    if(i&lt;1){ log(&#8220;Ingest something first.&#8221;); return; }<br \/>\n    activate($(&#8220;sQuery&#8221;),&#8221;query&#8221;); packet(&#8220;#34A853&#8221;);<br \/>\n    $(&#8220;qbox&#8221;).classList.add(&#8220;show&#8221;); $(&#8220;qask&#8221;).textContent=&#8217;Q: &#8216;+Q; $(&#8220;qans&#8221;).innerHTML=&#8221;Reading all memories\u2026&#8221;;<br \/>\n    log(&ldquo;&lt;b&gt;QueryAgent&lt;\/b&gt; reads every memory&rdquo;+(consolidated?&rdquo; and the consolidation insight&rdquo;:&rdquo;&rdquo;)+&rdquo;, then synthesizes&hellip;&rdquo;);<br \/>\n    [&#8220;card2&#8243;,&#8221;card3&#8243;,&#8221;card4&#8221;].forEach(function(id){ var el=$(id); if(el) el.classList.add(&#8220;cite&#8221;); });<br \/>\n    setTimeout(function(){ $(&#8220;qans&#8221;).innerHTML=A;<br \/>\n      log(&ldquo;&lt;b&gt;Answer returned&lt;\/b&gt; with cited memory IDs &mdash; grounded only in stored memories.&rdquo;); post(); },900);<br \/>\n  }<\/p>\n<p>  function reset(){<br \/>\n    i=0; consolidated=false; store.innerHTML=&#8221;&#8221;; $(&#8220;wires&#8221;).innerHTML=&#8221;&#8221;;<br \/>\n    $(&#8220;insight&#8221;).className=&#8221;insight&#8221;; $(&#8220;insight&#8221;).innerHTML=&#8221;&#8221;;<br \/>\n    $(&#8220;qbox&#8221;).className=&#8221;qbox&#8221;; $(&#8220;qans&#8221;).innerHTML=&#8221;&#8221;; $(&#8220;qask&#8221;).textContent=&#8221;&#8221;;<br \/>\n    $(&#8220;bCons&#8221;).disabled=true; $(&#8220;bQuery&#8221;).disabled=true; activate(null);<br \/>\n    log(&ldquo;&lt;b&gt;Reset.&lt;\/b&gt; Drop a file into the agent&rsquo;s inbox to begin.&rdquo;);<br \/>\n  }<\/p>\n<p>  $(&#8220;bIngest&#8221;).onclick=ingest;<br \/>\n  $(&#8220;bCons&#8221;).onclick=consolidate;<br \/>\n  $(&#8220;bQuery&#8221;).onclick=query;<br \/>\n  $(&#8220;bReset&#8221;).onclick=reset;<\/p>\n<p>  window.addEventListener(&#8220;load&#8221;,post);<br \/>\n  window.addEventListener(&#8220;resize&#8221;,post);<br \/>\n  if(window.ResizeObserver){ new ResizeObserver(post).observe(document.body); }<br \/>\n  setTimeout(post,150);<br \/>\n})();<br \/>\n&lt;\/script&gt;<br \/>\n&lt;\/body&gt;<br \/>\n&lt;\/html&gt;<br \/>\n&#8220;&gt;\n<\/p><\/div>\n<p class=\"wp-block-paragraph\">\n<h2 class=\"wp-block-heading\"><strong>Supported Inputs<\/strong><\/h2>\n<\/p><p class=\"wp-block-paragraph\">Beyond text, the IngestAgent accepts 27 file types across five categories. Simply drop any supported file into the <code>.\/inbox<\/code> folder for automatic pickup.<\/p>\n<figure class=\"wp-block-table\">\n<table class=\"has-fixed-layout\">\n<thead>\n<tr>\n<th>Category<\/th>\n<th>Extensions<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Text<\/td>\n<td><code>.txt<\/code>, <code>.md<\/code>, <code>.json<\/code>, <code>.csv<\/code>, <code>.log<\/code>, <code>.xml<\/code>, <code>.yaml<\/code>, <code>.yml<\/code><\/td>\n<\/tr>\n<tr>\n<td>Images<\/td>\n<td><code>.png<\/code>, <code>.jpg<\/code>, <code>.jpeg<\/code>, <code>.gif<\/code>, <code>.webp<\/code>, <code>.bmp<\/code>, <code>.svg<\/code><\/td>\n<\/tr>\n<tr>\n<td>Audio<\/td>\n<td><code>.mp3<\/code>, <code>.wav<\/code>, <code>.ogg<\/code>, <code>.flac<\/code>, <code>.m4a<\/code>, <code>.aac<\/code><\/td>\n<\/tr>\n<tr>\n<td>Video<\/td>\n<td><code>.mp4<\/code>, <code>.webm<\/code>, <code>.mov<\/code>, <code>.avi<\/code>, <code>.mkv<\/code><\/td>\n<\/tr>\n<tr>\n<td>Documents<\/td>\n<td><code>.pdf<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<h2 class=\"wp-block-heading\"><strong>How It Compares to RAG, Summaries, and Knowledge Graphs<\/strong><\/h2>\n<p class=\"wp-block-paragraph\">To clarify the difference, it frames three common memory approaches. Each solves part of the problem, yet leaves a gap.<\/p>\n<figure class=\"wp-block-table\">\n<table class=\"has-fixed-layout\">\n<thead>\n<tr>\n<th>Approach<\/th>\n<th>How it stores<\/th>\n<th>Active processing<\/th>\n<th>Main limitation<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Vector DB + RAG<\/td>\n<td>Embeddings in a vector store<\/td>\n<td>None<\/td>\n<td>Passive; embeds once, retrieves later<\/td>\n<\/tr>\n<tr>\n<td>Conversation summary<\/td>\n<td>Compressed text<\/td>\n<td>None<\/td>\n<td>Loses detail; no cross-reference<\/td>\n<\/tr>\n<tr>\n<td>Knowledge graphs<\/td>\n<td>Nodes and edges<\/td>\n<td>Manual upkeep<\/td>\n<td>Expensive to build and maintain<\/td>\n<\/tr>\n<tr>\n<td>Always-On Memory Agent<\/td>\n<td>Structured rows in SQLite<\/td>\n<td>Continuous consolidation<\/td>\n<td>Query reads up to 50 recent memories<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<p class=\"wp-block-paragraph\">Unlike RAG, this agent processes memory actively, not only on retrieval.<\/p>\n<h2 class=\"wp-block-heading\"><strong>Use Cases With Examples<\/strong><\/h2>\n<p class=\"wp-block-paragraph\">Practically, the pattern fits any workload needing durable, evolving context. <strong>Consider three examples.<\/strong><\/p>\n<ul class=\"wp-block-list\">\n<li>A <strong>research assistant<\/strong> ingests PDFs, meeting audio, and screenshots all week. Later, it links a cost target to a reliability problem on its own.<\/li>\n<li>A <strong>personal knowledge base<\/strong> absorbs notes, articles, and images continuously. Over time, consolidation surfaces themes you never explicitly connected.<\/li>\n<li>A <strong>support agent<\/strong> stores past tickets as structured memories. Then it answers new questions with cited references to earlier cases.<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\"><strong>Getting Started<\/strong><\/h2>\n<p class=\"wp-block-paragraph\">With the design clear, setup stays minimal for early-level engineers. Install dependencies, set your key, then start the process.<\/p>\n<div class=\"dm-code-snippet dark dm-normal-version default no-background-mobile\">\n<div class=\"control-language\">\n<div class=\"dm-buttons\">\n<div class=\"dm-buttons-left\">\n<div class=\"dm-button-snippet red-button\"><\/div>\n<div class=\"dm-button-snippet orange-button\"><\/div>\n<div class=\"dm-button-snippet green-button\"><\/div>\n<\/div>\n<div class=\"dm-buttons-right\"><a><span class=\"dm-copy-text\">Copy Code<\/span><span class=\"dm-copy-confirmed\">Copied<\/span><span class=\"dm-error-message\">Use a different Browser<\/span><\/a><\/div>\n<\/div>\n<pre class=\"no-line-numbers\"><code class=\"no-wrap language-php\">pip install -r requirements.txt\nexport GOOGLE_API_KEY=\"your-gemini-api-key\"\npython agent.py<\/code><\/pre>\n<\/div>\n<\/div>\n<p class=\"wp-block-paragraph\">Once running, the agent watches <code>.\/inbox<\/code>, consolidates every 30 minutes, and serves an HTTP API on port 8888. Therefore, you can also feed it over HTTP.<\/p>\n<div class=\"dm-code-snippet dark dm-normal-version default no-background-mobile\">\n<div class=\"control-language\">\n<div class=\"dm-buttons\">\n<div class=\"dm-buttons-left\">\n<div class=\"dm-button-snippet red-button\"><\/div>\n<div class=\"dm-button-snippet orange-button\"><\/div>\n<div class=\"dm-button-snippet green-button\"><\/div>\n<\/div>\n<div class=\"dm-buttons-right\"><a><span class=\"dm-copy-text\">Copy Code<\/span><span class=\"dm-copy-confirmed\">Copied<\/span><span class=\"dm-error-message\">Use a different Browser<\/span><\/a><\/div>\n<\/div>\n<pre class=\"no-line-numbers\"><code class=\"no-wrap language-php\"># Ingest text\ncurl -X POST http:\/\/localhost:8888\/ingest \n  -H \"Content-Type: application\/json\" \n  -d '{\"text\": \"AI agents are the future\", \"source\": \"article\"}'\n\n# Ask a question\ncurl \"http:\/\/localhost:8888\/query?q=what+do+you+know\"<\/code><\/pre>\n<\/div>\n<\/div>\n<p class=\"wp-block-paragraph\">Additionally, the API exposes <code>\/status<\/code>, <code>\/memories<\/code>, <code>\/consolidate<\/code>, <code>\/delete<\/code>, and <code>\/clear<\/code>. An optional Streamlit dashboard adds ingest, query, browse, and delete controls. CLI flags change the watch folder, port, and consolidation interval.<\/p>\n<div class=\"dm-code-snippet dark dm-normal-version default no-background-mobile\">\n<div class=\"control-language\">\n<div class=\"dm-buttons\">\n<div class=\"dm-buttons-left\">\n<div class=\"dm-button-snippet red-button\"><\/div>\n<div class=\"dm-button-snippet orange-button\"><\/div>\n<div class=\"dm-button-snippet green-button\"><\/div>\n<\/div>\n<div class=\"dm-buttons-right\"><a><span class=\"dm-copy-text\">Copy Code<\/span><span class=\"dm-copy-confirmed\">Copied<\/span><span class=\"dm-error-message\">Use a different Browser<\/span><\/a><\/div>\n<\/div>\n<pre class=\"no-line-numbers\"><code class=\"no-wrap language-php\">python agent.py --watch .\/docs --port 9000 --consolidate-every 15<\/code><\/pre>\n<\/div>\n<\/div>\n<h2 class=\"wp-block-heading\"><strong>Key Takeaways<\/strong><\/h2>\n<ul class=\"wp-block-list\">\n<li><strong>No vector DB, no embeddings<\/strong> \u2014 an LLM reads, thinks, and writes structured memory into SQLite.<\/li>\n<li><strong>Runs 24\/7<\/strong> on Google ADK + Gemini 3.1 Flash-Lite as a lightweight background process.<\/li>\n<li><strong>Three sub-agents<\/strong> under one orchestrator: Ingest, Consolidate, and Query.<\/li>\n<li><strong>Consolidates every 30 minutes<\/strong> \u2014 links related memories and writes new insights while idle.<\/li>\n<li><strong>Ingests 27 file types<\/strong> across text, images, audio, video, and PDFs, dropped into <code>.\/inbox<\/code>.<\/li>\n<\/ul>\n<p class=\"wp-block-paragraph\">\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n<\/p><p class=\"wp-block-paragraph\">\n<\/p><p class=\"wp-block-paragraph\">Check out the\u00a0<strong><a href=\"https:\/\/github.com\/GoogleCloudPlatform\/generative-ai\/tree\/main\/gemini\/agents\/always-on-memory-agent\" target=\"_blank\" rel=\"noreferrer noopener\">FULL CODES here<\/a>.\u00a0<\/strong>Also,\u00a0feel free to follow us on\u00a0<strong><a href=\"https:\/\/x.com\/intent\/follow?screen_name=marktechpost\" target=\"_blank\" rel=\"noreferrer noopener\"><mark>Twitter<\/mark><\/a><\/strong>\u00a0and don\u2019t forget to join our\u00a0<strong><a href=\"https:\/\/www.reddit.com\/r\/machinelearningnews\/\" target=\"_blank\" rel=\"noreferrer noopener\">150k+ML SubReddit<\/a><\/strong>\u00a0and Subscribe to\u00a0<strong><a href=\"https:\/\/www.aidevsignals.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">our Newsletter<\/a><\/strong>. Wait! are you on telegram?\u00a0<strong><a href=\"https:\/\/t.me\/machinelearningresearchnews\" target=\"_blank\" rel=\"noreferrer noopener\">now you can join us on telegram as well.<\/a><\/strong><\/p>\n<p class=\"wp-block-paragraph\">Need to partner with us for promoting your GitHub Repo OR Hugging Face Page OR Product Release OR Webinar etc.?\u00a0<strong><a href=\"https:\/\/forms.gle\/wbash1wF6efRj8G58\" target=\"_blank\" rel=\"noreferrer noopener\"><mark>Connect with us<\/mark><\/a><\/strong><\/p>\n<p>The post <a href=\"https:\/\/www.marktechpost.com\/2026\/07\/18\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/\">Google Cloud\u2019s Always-On Memory Agent Replaces RAG and Embeddings With Continuous LLM Consolidation on Gemini 3.1 Flash-Lite<\/a> appeared first on <a href=\"https:\/\/www.marktechpost.com\/\">MarkTechPost<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Most AI agents forget. They process a request, answer it, then drop the context. Google Cloud&rsquo;s generative-ai repository now ships a sample that tackles this directly. It is the Always-On Memory Agent, a reference implementation that treats memory as a running process. Always-On Memory Agent Fundamentally, the project is a lightweight background agent that never stops. It runs 24\/7 as a continuous process, not a one-shot call. It is built with Google ADK (Agent Development Kit) and Gemini 3.1 Flash-Lite. Notably, it uses no vector database and no embeddings. Instead, an LLM reads, thinks, and writes structured memory into SQLite. The model choice targets low latency and low cost for continuous background work. How It Works: Ingest, Consolidate, Query Architecturally, an orchestrator routes every request to one of three specialist sub-agents. Each sub-agent owns its own tools for reading or writing the memory store. First, the IngestAgent handles incoming content. It uses Gemini&rsquo;s multimodal capabilities to extract a summary, entities, topics, and an importance score. That structured record then lands in the memories table. Next, the ConsolidateAgent runs on a timer, every 30 minutes by default. Like sleep cycles, it reviews unconsolidated memories and finds connections between them. Then it writes a synthesized summary, one key insight, and those connections to the database. Consequently, the agent builds new understanding while idle, with no prompt. Finally, the QueryAgent answers questions. It reads all memories and consolidation insights, then synthesizes a response. Importantly, it cites the memory IDs it used as sources. &ldquo;, src:&rdquo;report.pdf&rdquo;, sm:&rdquo;Anthropic reports 62% of Claude usage is code-related.&rdquo;, ent:[&ldquo;Anthropic&rdquo;,&rdquo;Claude&rdquo;,&rdquo;AI agents&rdquo;], tp:[&ldquo;AI&rdquo;,&rdquo;code generation&rdquo;], imp:0.8}, {icon:&rdquo;&ldquo;, src:&rdquo;roadmap.png&rdquo;, sm:&rdquo;Q1 priority: reduce inference costs by 40%.&rdquo;, ent:[&ldquo;Q1&Prime;,&rdquo;inference&rdquo;], tp:[&ldquo;cost&rdquo;,&rdquo;planning&rdquo;], imp:0.7}, {icon:&rdquo;&ldquo;, src:&rdquo;standup.mp3&Prime;, sm:&rdquo;AI agents grow fast, but reliability is still a challenge.&rdquo;, ent:[&ldquo;AI agents&rdquo;,&rdquo;reliability&rdquo;], tp:[&ldquo;agents&rdquo;,&rdquo;reliability&rdquo;], imp:0.75}, {icon:&rdquo;&ldquo;, src:&rdquo;idea.txt&rdquo;, sm:&rdquo;Smart inbox idea: persistent AI memory for email.&rdquo;, ent:[&ldquo;smart inbox&rdquo;,&rdquo;email&rdquo;], tp:[&ldquo;product&rdquo;,&rdquo;memory&rdquo;], imp:0.6} ]; var CONS = { links:[[1,3],[2,1],[3,4]], insight:&rdquo;The bottleneck for next-gen AI tools is the transition from static RAG to dynamic memory systems.&rdquo; }; var Q = &ldquo;What should I focus on?&rdquo;; var A = &lsquo;Based on your memories, prioritize: ship the cost-reduction plan &lt;span class=&quot;&rdquo;ref&rdquo;&quot;&gt;[Memory 2]&lt;\/span&gt;, &lsquo; + &lsquo;then close the agent reliability gap &lt;span class=&quot;&rdquo;ref&rdquo;&quot;&gt;[Memory 3]&lt;\/span&gt;. &lsquo; + &lsquo;The smart inbox concept &lt;span class=&quot;&rdquo;ref&rdquo;&quot;&gt;[Memory 4]&lt;\/span&gt; validates demand for persistent AI memory.&rsquo;; var i=0, consolidated=false; var $=function(id){return document.getElementById(id)}; var store=$(&ldquo;store&rdquo;), pkt=$(&ldquo;pkt&rdquo;), logEl=$(&ldquo;log&rdquo;); function post(){ try{ parent.postMessage({type:&rdquo;aoma-resize&rdquo;,height:document.body.offsetHeight+40},&rdquo;*&rdquo;); }catch(e){} } function log(html){ logEl.innerHTML=html; post(); } function activate(el,cls){ [ &ldquo;sIngest&rdquo;,&rdquo;sCons&rdquo;,&rdquo;sQuery&rdquo; ].forEach(function(id){ $(id).classList.remove(&ldquo;active&rdquo;,&rdquo;cons&rdquo;,&rdquo;query&rdquo;); }); if(el){ el.classList.add(&ldquo;active&rdquo;); if(cls) el.classList.add(cls); } } function packet(color){ pkt.style.background=color; pkt.style.opacity=&rdquo;1&Prime;; pkt.style.left=&rdquo;0&Prime;; setTimeout(function(){ pkt.style.left=&rdquo;calc(100% &ndash; 10px)&rdquo;; },30); setTimeout(function(){ pkt.style.opacity=&rdquo;0&Prime;; },950); } function ingest(){ if(i&gt;=SAMPLES.length){ log(&ldquo;&lt;b&gt;Inbox empty.&lt;\/b&gt; All 4 sample files ingested &mdash; now consolidate or query.&rdquo;); return; } var s=SAMPLES[i]; var id=i+1; activate($(&ldquo;sIngest&rdquo;)); packet(&ldquo;#4285F4&rdquo;); log(&lsquo;&lt;b&gt;IngestAgent&lt;\/b&gt; reads &lt;b&gt;&rsquo;+s.icon+&rsquo; &lsquo;+s.src+&#039;&lt;\/b&gt; &rarr; extracting summary, entities, topics, importance&hellip;&rsquo;); var c=document.createElement(&ldquo;div&rdquo;); c.className=&rdquo;card&rdquo;; c.id=&rdquo;card&rdquo;+id; c.innerHTML=&#039;&lt;span class=&quot;&rdquo;cid&rdquo;&quot;&gt;#&rsquo;+id+&#039;&lt;\/span&gt;&lt;div class=&quot;&rdquo;sm&rdquo;&quot;&gt;&rsquo;+s.sm+&#039;&lt;\/div&gt;&rsquo;+ &lsquo;&lt;div class=&quot;&rdquo;chips&rdquo;&quot;&gt;&rsquo;+s.ent.map(function(e){return &lsquo;&lt;span class=&quot;&rdquo;chip&rdquo;&quot;&gt;&rsquo;+e+&#039;&lt;\/span&gt;&rsquo;}).join(&ldquo;&rdquo;)+&#039;&lt;\/div&gt;&rsquo;+ &lsquo;&lt;div class=&quot;&rdquo;chips&rdquo;&quot;&gt;&rsquo;+s.tp.map(function(t){return &lsquo;&lt;span class=&quot;&rdquo;chip&quot; tp&rdquo;&gt;&rsquo;+t+&#039;&lt;\/span&gt;&rsquo;}).join(&ldquo;&rdquo;)+&#039;&lt;\/div&gt;&rsquo;+ &lsquo;&lt;div class=&quot;&rdquo;imp&rdquo;&quot;&gt;importance &lt;b&gt;&rsquo;+s.imp+&#039;&lt;\/b&gt;&lt;\/div&gt;&rsquo;; store.appendChild(c); post(); setTimeout(function(){ c.classList.add(&ldquo;show&rdquo;); post(); log(&lsquo;&lt;b&gt;Stored memory #&rsquo;+id+&#039;&lt;\/b&gt; in SQLite. &lsquo;+(SAMPLES.length-id)+&rsquo; file(s) left in inbox.&rsquo;); },500); i++; if(i&gt;=2){ $(&ldquo;bCons&rdquo;).disabled=false; $(&ldquo;bQuery&rdquo;).disabled=false; } } function consolidate(){ if(i&lt;2){ log(&ldquo;Ingest at least 2 memories first.&rdquo;); return; } activate($(&ldquo;sCons&rdquo;),&rdquo;cons&rdquo;); packet(&ldquo;#FBBC04&rdquo;); $(&ldquo;tmr&rdquo;).classList.add(&ldquo;run&rdquo;); log(&ldquo;&lt;b&gt;ConsolidateAgent&lt;\/b&gt; woke on its 30-min timer &mdash; reviewing unconsolidated memories&hellip;&rdquo;); var svg=$(&ldquo;wires&rdquo;); svg.innerHTML=&rdquo;&rdquo;; for(var k=1;k&lt;=Math.min(i,4);k++){ var el=$(&ldquo;card&rdquo;+k); if(el) el.classList.add(&ldquo;hl&rdquo;); } setTimeout(function(){ CONS.links.forEach(function(pair){ drawWire(pair[0],pair[1]); }); log(&ldquo;&lt;b&gt;Found connections&lt;\/b&gt; across memories &mdash; writing one cross-cutting insight&hellip;&rdquo;); },500); setTimeout(function(){ var ins=$(&ldquo;insight&rdquo;); ins.innerHTML=&#039;&lt;b&gt;Insight:&lt;\/b&gt; &lsquo;+CONS.insight; ins.classList.add(&ldquo;show&rdquo;); $(&ldquo;tmr&rdquo;).classList.remove(&ldquo;run&rdquo;); consolidated=true; log(&ldquo;&lt;b&gt;Consolidation done.&lt;\/b&gt; New insight written back to the store &mdash; no prompt needed.&rdquo;); post(); },1200); } function drawWire(a,b){ var svg=$(&ldquo;wires&rdquo;), ca=$(&ldquo;card&rdquo;+a), cb=$(&ldquo;card&rdquo;+b); if(!ca||!cb) return; var box=svg.getBoundingClientRect(), ra=ca.getBoundingClientRect(), rb=cb.getBoundingClientRect(); var x1=ra.left-box.left+ra.width\/2, y1=ra.top-box.top+ra.height\/2; var x2=rb.left-box.left+rb.width\/2, y2=rb.top-box.top+rb.height\/2; var ln=document.createElementNS(&ldquo;http:\/\/www.w3.org\/2000\/svg&rdquo;,&rdquo;line&rdquo;); ln.setAttribute(&ldquo;x1&rdquo;,x1);ln.setAttribute(&ldquo;y1&rdquo;,y1);ln.setAttribute(&ldquo;x2&rdquo;,x1);ln.setAttribute(&ldquo;y2&rdquo;,y1); ln.setAttribute(&ldquo;stroke&rdquo;,&rdquo;#FBBC04&Prime;);ln.setAttribute(&ldquo;stroke-width&rdquo;,&rdquo;2&Prime;);ln.setAttribute(&ldquo;stroke-dasharray&rdquo;,&rdquo;4 3&Prime;); svg.appendChild(ln); requestAnimationFrame(function(){ ln.style.transition=&rdquo;all .5s&rdquo;; ln.setAttribute(&ldquo;x2&rdquo;,x2); ln.setAttribute(&ldquo;y2&rdquo;,y2); }); } function query(){ if(i&lt;1){ log(&ldquo;Ingest something first.&rdquo;); return; } activate($(&ldquo;sQuery&rdquo;),&rdquo;query&rdquo;); packet(&ldquo;#34A853&rdquo;); $(&ldquo;qbox&rdquo;).classList.add(&ldquo;show&rdquo;); $(&ldquo;qask&rdquo;).textContent=&rsquo;Q: &lsquo;+Q; $(&ldquo;qans&rdquo;).innerHTML=&rdquo;Reading all memories&hellip;&rdquo;; log(&ldquo;&lt;b&gt;QueryAgent&lt;\/b&gt; reads every memory&rdquo;+(consolidated?&rdquo; and the consolidation insight&rdquo;:&rdquo;&rdquo;)+&rdquo;, then synthesizes&hellip;&rdquo;); [&ldquo;card2&Prime;,&rdquo;card3&Prime;,&rdquo;card4&rdquo;].forEach(function(id){ var el=$(id); if(el) el.classList.add(&ldquo;cite&rdquo;); }); setTimeout(function(){ $(&ldquo;qans&rdquo;).innerHTML=A; log(&ldquo;&lt;b&gt;Answer returned&lt;\/b&gt; with cited memory IDs &mdash; grounded only in stored memories.&rdquo;); post(); },900); } function reset(){ i=0; consolidated=false; store.innerHTML=&rdquo;&rdquo;; $(&ldquo;wires&rdquo;).innerHTML=&rdquo;&rdquo;; $(&ldquo;insight&rdquo;).className=&rdquo;insight&rdquo;; $(&ldquo;insight&rdquo;).innerHTML=&rdquo;&rdquo;; $(&ldquo;qbox&rdquo;).className=&rdquo;qbox&rdquo;; $(&ldquo;qans&rdquo;).innerHTML=&rdquo;&rdquo;; $(&ldquo;qask&rdquo;).textContent=&rdquo;&rdquo;; $(&ldquo;bCons&rdquo;).disabled=true; $(&ldquo;bQuery&rdquo;).disabled=true; activate(null); log(&ldquo;&lt;b&gt;Reset.&lt;\/b&gt; Drop a file into the agent&rsquo;s inbox to begin.&rdquo;); } $(&ldquo;bIngest&rdquo;).onclick=ingest; $(&ldquo;bCons&rdquo;).onclick=consolidate; $(&ldquo;bQuery&rdquo;).onclick=query; $(&ldquo;bReset&rdquo;).onclick=reset; window.addEventListener(&ldquo;load&rdquo;,post); window.addEventListener(&ldquo;resize&rdquo;,post); if(window.ResizeObserver){ new ResizeObserver(post).observe(document.body); } setTimeout(post,150); })(); &lt;\/script&gt; &lt;\/body&gt; &lt;\/html&gt; &ldquo;&gt; Supported Inputs Beyond text, the IngestAgent accepts 27 file types across five categories. Simply drop any supported file into the .\/inbox folder for automatic pickup. Category Extensions Text .txt, .md, .json, .csv, .log, .xml, .yaml, .yml Images .png, .jpg, .jpeg, .gif, .webp, .bmp, .svg Audio .mp3, .wav, .ogg, .flac, .m4a, .aac Video .mp4, .webm, .mov, .avi, .mkv Documents .pdf How It Compares to RAG, Summaries, and Knowledge Graphs To clarify the difference, it frames three common memory approaches. Each solves part of the problem, yet leaves a gap. Approach How it stores Active processing Main limitation Vector DB + RAG Embeddings in a vector store None Passive; embeds once, retrieves later Conversation summary Compressed text None Loses detail; no cross-reference Knowledge graphs Nodes and edges Manual upkeep Expensive to build and maintain Always-On Memory Agent Structured rows in SQLite Continuous consolidation Query reads up to 50 recent memories Unlike RAG, this agent processes memory actively, not only on retrieval. Use Cases With Examples Practically, the pattern fits any workload needing durable, evolving context. Consider three examples. A research assistant ingests PDFs, meeting audio, and screenshots all week. Later, it links a cost target to a reliability problem on its own. A personal knowledge base absorbs notes, articles, and images continuously. Over time, consolidation surfaces themes you never explicitly connected. A support agent stores past tickets as structured memories. Then it answers new questions with cited references to earlier cases. Getting Started With the design clear, setup stays minimal for early-level engineers. Install dependencies, set your key, then start the process. Copy CodeCopiedUse a different Browser pip install -r requirements.txt export GOOGLE_API_KEY=&rdquo;your-gemini-api-key&rdquo; python agent.py Once running, the agent watches .\/inbox, consolidates every 30 minutes, and serves an HTTP API on port 8888. Therefore, you can also feed it over HTTP. Copy CodeCopiedUse a different Browser #<\/p>","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"pmpro_default_level":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"_pvb_checkbox_block_on_post":false,"footnotes":""},"categories":[52,5,7,1],"tags":[],"class_list":["post-105185","post","type-post","status-publish","format-standard","hentry","category-ai-club","category-committee","category-news","category-uncategorized","pmpro-has-access"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Google Cloud\u2019s Always-On Memory Agent Replaces RAG and Embeddings With Continuous LLM Consolidation on Gemini 3.1 Flash-Lite - YouZum<\/title>\n<meta name=\"description\" content=\"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e42\u0e14\u0e23\u0e19\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/youzum.net\/de\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Google Cloud\u2019s Always-On Memory Agent Replaces RAG and Embeddings With Continuous LLM Consolidation on Gemini 3.1 Flash-Lite - YouZum\" \/>\n<meta property=\"og:description\" content=\"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e42\u0e14\u0e23\u0e19\" \/>\n<meta property=\"og:url\" content=\"https:\/\/youzum.net\/de\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/\" \/>\n<meta property=\"og:site_name\" content=\"YouZum\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DroneAssociationTH\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-18T19:29:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/1f5bc.png\" \/>\n<meta name=\"author\" content=\"admin NU\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin NU\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"8\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/\"},\"author\":{\"name\":\"admin NU\",\"@id\":\"https:\/\/yousum.gpucore.co\/#\/schema\/person\/97fa48242daf3908e4d9a5f26f4a059c\"},\"headline\":\"Google Cloud\u2019s Always-On Memory Agent Replaces RAG and Embeddings With Continuous LLM Consolidation on Gemini 3.1 Flash-Lite\",\"datePublished\":\"2026-07-18T19:29:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/\"},\"wordCount\":1580,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/yousum.gpucore.co\/#organization\"},\"image\":{\"@id\":\"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/1f5bc.png\",\"articleSection\":[\"AI\",\"Committee\",\"News\",\"Uncategorized\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/\",\"url\":\"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/\",\"name\":\"Google Cloud\u2019s Always-On Memory Agent Replaces RAG and Embeddings With Continuous LLM Consolidation on Gemini 3.1 Flash-Lite - YouZum\",\"isPartOf\":{\"@id\":\"https:\/\/yousum.gpucore.co\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/1f5bc.png\",\"datePublished\":\"2026-07-18T19:29:57+00:00\",\"description\":\"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e42\u0e14\u0e23\u0e19\",\"breadcrumb\":{\"@id\":\"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/#primaryimage\",\"url\":\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/1f5bc.png\",\"contentUrl\":\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/1f5bc.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/youzum.net\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Google Cloud\u2019s Always-On Memory Agent Replaces RAG and Embeddings With Continuous LLM Consolidation on Gemini 3.1 Flash-Lite\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/yousum.gpucore.co\/#website\",\"url\":\"https:\/\/yousum.gpucore.co\/\",\"name\":\"YouSum\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/yousum.gpucore.co\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/yousum.gpucore.co\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/yousum.gpucore.co\/#organization\",\"name\":\"Drone Association Thailand\",\"url\":\"https:\/\/yousum.gpucore.co\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/yousum.gpucore.co\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/youzum.net\/wp-content\/uploads\/2024\/11\/tranparent-logo.png\",\"contentUrl\":\"https:\/\/youzum.net\/wp-content\/uploads\/2024\/11\/tranparent-logo.png\",\"width\":300,\"height\":300,\"caption\":\"Drone Association Thailand\"},\"image\":{\"@id\":\"https:\/\/yousum.gpucore.co\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/DroneAssociationTH\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/yousum.gpucore.co\/#\/schema\/person\/97fa48242daf3908e4d9a5f26f4a059c\",\"name\":\"admin NU\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/yousum.gpucore.co\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/youzum.net\/wp-content\/uploads\/avatars\/2\/1746849356-bpfull.png\",\"contentUrl\":\"https:\/\/youzum.net\/wp-content\/uploads\/avatars\/2\/1746849356-bpfull.png\",\"caption\":\"admin NU\"},\"url\":\"https:\/\/youzum.net\/de\/members\/adminnu\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Google Cloud\u2019s Always-On Memory Agent Replaces RAG and Embeddings With Continuous LLM Consolidation on Gemini 3.1 Flash-Lite - YouZum","description":"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e42\u0e14\u0e23\u0e19","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/youzum.net\/de\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/","og_locale":"de_DE","og_type":"article","og_title":"Google Cloud\u2019s Always-On Memory Agent Replaces RAG and Embeddings With Continuous LLM Consolidation on Gemini 3.1 Flash-Lite - YouZum","og_description":"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e42\u0e14\u0e23\u0e19","og_url":"https:\/\/youzum.net\/de\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/","og_site_name":"YouZum","article_publisher":"https:\/\/www.facebook.com\/DroneAssociationTH\/","article_published_time":"2026-07-18T19:29:57+00:00","og_image":[{"url":"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/1f5bc.png","type":"","width":"","height":""}],"author":"admin NU","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"admin NU","Gesch\u00e4tzte Lesezeit":"8\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/#article","isPartOf":{"@id":"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/"},"author":{"name":"admin NU","@id":"https:\/\/yousum.gpucore.co\/#\/schema\/person\/97fa48242daf3908e4d9a5f26f4a059c"},"headline":"Google Cloud\u2019s Always-On Memory Agent Replaces RAG and Embeddings With Continuous LLM Consolidation on Gemini 3.1 Flash-Lite","datePublished":"2026-07-18T19:29:57+00:00","mainEntityOfPage":{"@id":"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/"},"wordCount":1580,"commentCount":0,"publisher":{"@id":"https:\/\/yousum.gpucore.co\/#organization"},"image":{"@id":"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/#primaryimage"},"thumbnailUrl":"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/1f5bc.png","articleSection":["AI","Committee","News","Uncategorized"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/","url":"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/","name":"Google Cloud\u2019s Always-On Memory Agent Replaces RAG and Embeddings With Continuous LLM Consolidation on Gemini 3.1 Flash-Lite - YouZum","isPartOf":{"@id":"https:\/\/yousum.gpucore.co\/#website"},"primaryImageOfPage":{"@id":"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/#primaryimage"},"image":{"@id":"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/#primaryimage"},"thumbnailUrl":"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/1f5bc.png","datePublished":"2026-07-18T19:29:57+00:00","description":"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e42\u0e14\u0e23\u0e19","breadcrumb":{"@id":"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/#primaryimage","url":"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/1f5bc.png","contentUrl":"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/1f5bc.png"},{"@type":"BreadcrumbList","@id":"https:\/\/youzum.net\/google-clouds-always-on-memory-agent-replaces-rag-and-embeddings-with-continuous-llm-consolidation-on-gemini-3-1-flash-lite\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/youzum.net\/"},{"@type":"ListItem","position":2,"name":"Google Cloud\u2019s Always-On Memory Agent Replaces RAG and Embeddings With Continuous LLM Consolidation on Gemini 3.1 Flash-Lite"}]},{"@type":"WebSite","@id":"https:\/\/yousum.gpucore.co\/#website","url":"https:\/\/yousum.gpucore.co\/","name":"YouSum","description":"","publisher":{"@id":"https:\/\/yousum.gpucore.co\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/yousum.gpucore.co\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/yousum.gpucore.co\/#organization","name":"Drone Association Thailand","url":"https:\/\/yousum.gpucore.co\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/yousum.gpucore.co\/#\/schema\/logo\/image\/","url":"https:\/\/youzum.net\/wp-content\/uploads\/2024\/11\/tranparent-logo.png","contentUrl":"https:\/\/youzum.net\/wp-content\/uploads\/2024\/11\/tranparent-logo.png","width":300,"height":300,"caption":"Drone Association Thailand"},"image":{"@id":"https:\/\/yousum.gpucore.co\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DroneAssociationTH\/"]},{"@type":"Person","@id":"https:\/\/yousum.gpucore.co\/#\/schema\/person\/97fa48242daf3908e4d9a5f26f4a059c","name":"admin NU","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/yousum.gpucore.co\/#\/schema\/person\/image\/","url":"https:\/\/youzum.net\/wp-content\/uploads\/avatars\/2\/1746849356-bpfull.png","contentUrl":"https:\/\/youzum.net\/wp-content\/uploads\/avatars\/2\/1746849356-bpfull.png","caption":"admin NU"},"url":"https:\/\/youzum.net\/de\/members\/adminnu\/"}]}},"rttpg_featured_image_url":null,"rttpg_author":{"display_name":"admin NU","author_link":"https:\/\/youzum.net\/de\/members\/adminnu\/"},"rttpg_comment":0,"rttpg_category":"<a href=\"https:\/\/youzum.net\/de\/category\/ai-club\/\" rel=\"category tag\">AI<\/a> <a href=\"https:\/\/youzum.net\/de\/category\/committee\/\" rel=\"category tag\">Committee<\/a> <a href=\"https:\/\/youzum.net\/de\/category\/news\/\" rel=\"category tag\">News<\/a> <a href=\"https:\/\/youzum.net\/de\/category\/uncategorized\/\" rel=\"category tag\">Uncategorized<\/a>","rttpg_excerpt":"Most AI agents forget. They process a request, answer it, then drop the context. Google Cloud\u2019s generative-ai repository now ships a sample that tackles this directly. It is the Always-On Memory Agent, a reference implementation that treats memory as a running process. Always-On Memory Agent Fundamentally, the project is a lightweight background agent that never&hellip;","_links":{"self":[{"href":"https:\/\/youzum.net\/de\/wp-json\/wp\/v2\/posts\/105185","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/youzum.net\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/youzum.net\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/youzum.net\/de\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/youzum.net\/de\/wp-json\/wp\/v2\/comments?post=105185"}],"version-history":[{"count":0,"href":"https:\/\/youzum.net\/de\/wp-json\/wp\/v2\/posts\/105185\/revisions"}],"wp:attachment":[{"href":"https:\/\/youzum.net\/de\/wp-json\/wp\/v2\/media?parent=105185"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/youzum.net\/de\/wp-json\/wp\/v2\/categories?post=105185"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/youzum.net\/de\/wp-json\/wp\/v2\/tags?post=105185"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}