<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Yaniv Shenhav]]></title><description><![CDATA[Yaniv Shenhav]]></description><link>https://yanivshenhav.hashnode.dev</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1593680282896/kNC7E8IR4.png</url><title>Yaniv Shenhav</title><link>https://yanivshenhav.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Mon, 19 Oct 2026 17:12:54 GMT</lastBuildDate><atom:link href="https://yanivshenhav.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[AI Agent Memory Needs a Correction Path, Not Just Storage]]></title><description><![CDATA[Adapted from the Hebrew guide "When the Agent Remembers Something That Has Changed: Managing AI Memory in an Organization" on AI NEWS IL (published 8 September 2026).
Memory helps an agent keep contex]]></description><link>https://yanivshenhav.hashnode.dev/ai-agent-memory-needs-a-correction-path-not-just-storage</link><guid isPermaLink="true">https://yanivshenhav.hashnode.dev/ai-agent-memory-needs-a-correction-path-not-just-storage</guid><dc:creator><![CDATA[Yaniv Shenhav]]></dc:creator><pubDate>Mon, 19 Oct 2026 10:32:59 GMT</pubDate><content:encoded><![CDATA[<p>Adapted from the Hebrew guide <a href="https://ainewsil.co.il/articles/ai-agent-memory-lifecycle-guide">"When the Agent Remembers Something That Has Changed: Managing AI Memory in an Organization"</a> on AI NEWS IL (published 8 September 2026).</p>
<p>Memory helps an agent keep context. It can also return an old price, a changed preference or a procedure that was cancelled. Storing something well does not make it correct today.</p>
<p>This guide turns that risk into decisions and tests for an agent pilot. The examples are hypothetical, not case studies or measured results.</p>
<h2>The direct answer: every memory needs a correction path</h2>
<p>Do not let an agent keep every detail forever just because storage is available. Decide what is worth keeping, where it came from, when it was last checked and what happens when it changes. If validity cannot be checked, the agent should go back to the approved source or ask for clarification.</p>
<p>The goal of memory is to cut repeated work, not to create a second store that nobody owns.</p>
<h2>What the AWS post adds</h2>
<p>On 4 September 2026 AWS published a guide to designing lifecycle policies for <a href="https://aws.amazon.com/blogs/machine-learning/designing-lifecycle-policies-for-agentcore-memory/">AgentCore Memory</a>. It describes the risk of stale information piling up and suggests patterns for evaluating, consolidating and reducing memories, with an AWS example implementation.</p>
<p>Do not read it as saying every memory is deleted automatically, that every component ships preconfigured, or that one policy fits every organization. The useful point for any stack is the difference between storing information and maintaining knowledge. The process below is an applied proposal, not an AWS benchmark.</p>
<h2>Step 1: Map what the agent actually stores</h2>
<p>List the types of information that enter memory in the process you chose: a language preference, a meeting summary, a service request status, an explanation of a procedure. Each changes at a different rate and means something different. Do not mix a detail a user shared about themselves with an organizational rule approved in a formal document.</p>
<p>Trace a real path. An agent may write a summary to a database, keep chat history and add a snippet to a separate search index. Fixing one place does not fix the others. Pick a non-sensitive example and follow it: which message created it, where it was stored, who can read it and in which answer it comes back.</p>
<h2>Step 2: Separate memory from the source of authority</h2>
<p>In a hypothetical case, a sales rep asks the agent about promotion terms early in the month. The agent stores a summary. The promotion then ends and the approved page is updated. If the old summary wins over the current page, wrong terms can reach a customer.</p>
<p>Decide in advance which source may answer questions about price, eligibility or process stage, and when it must be rechecked. Conversation memory can explain what the customer asked. It should not become the terms document.</p>
<p>Attach to each item a source ID, a creation date, a last-checked date and an owner. If two sources conflict, do not ask the agent to pick the more convincing one. Set a professional tiebreak rule or route the question to a person.</p>
<h2>Step 3: Set validity by use, not by an arbitrary number</h2>
<p>No single number of days fits all memories. A ticket status, a language preference and an operating guide change at different speeds. Define recheck triggers: a source document changes, a request closes, the user gives an update, or a date set by the process arrives.</p>
<p>If you also use periodic checks, write down why the interval fits the use case and what harm could happen between two checks. Do not copy a technical default as a business policy.</p>
<p>Stopping the use of an item in answers is not the same as deleting it from the system. An item may need to leave retrieval results immediately, while other copies follow a separate data policy. This guide does not say how long personal data may or must be kept. For sensitive or regulated data, involve the right owners before changing policy.</p>
<h2>Step 4: Build a way to update, retire and delete</h2>
<p>Define the action for when an employee reports that the agent remembers something wrong. Who receives the report, how is the item found, and who may fix it? Adding a new message that says "ignore the previous one" is not enough. If both versions stay available with no rule to decide between them, another question can bring the old information back.</p>
<p>After a fix, test retrieval in several phrasings: a direct question, an indirect one and one that includes the old wording. Also try a new conversation, so a fix in one session is not mistaken for a fix in the store. For deletion requests, define a check for each storage layer you manage. Seeing no result in one interface does not prove every copy is gone.</p>
<h2>Step 5: Watch for summaries that lose the condition</h2>
<p>Merging several memories into one summary can make retrieval easier. It also changes how the information is represented. In a hypothetical case, the sentence "an item can be exchanged within a week if the packaging is sealed" becomes "exchange within a week". The answer sounds clear, but the condition is gone.</p>
<p>Before approving a summarization mechanism, test it on examples with exceptions, numbers and conditions. Do not remove professional distinctions just to save space. Two customers with similar names are not the same person, and two versions of a procedure are not always duplicates. Keep markers that tell items apart: process ID, scope, version and access permission. When you cannot merge with confidence, keep items separate or send them for review.</p>
<h2>Step 6: Test in more than one language without mixing permissions</h2>
<p>A team may use the same concept in Hebrew, English and an acronym. Prepare test questions in the common phrasings, including product names and internal terms. The aim is not to show that the model knows a language. It is to check that the agent reaches the same approved source whatever the language of the question. If translation created a separate memory, make sure a source update reaches that retrieval path too.</p>
<p>A language test does not replace a permission test. Sign in as an ordinary employee and as someone with a different role, and compare what each can retrieve. A memory created in a manager's conversation should not reach another team just because the topic is similar.</p>
<h2>Step 7: Measure memory quality and decide whether to expand</h2>
<p>Prepare a small test set with valid information, changed information, a contradiction and information the agent must not see. For each question, write the expected source and the success condition. Count how many answers relied on an old version, how many corrections reappeared and how many cases needed human review.</p>
<p>Response time alone is not enough. A fast answer based on wrong information is not an improvement.</p>
<p>End the pilot with a defined decision. If the agent uses the right sources and the correction path works, add one more information type and test it separately. If not, narrow what it may remember or go back to direct retrieval from the approved source.</p>
<h2>What should be ready at the end of the pilot</h2>
<ul>
<li><p>A list of information types the agent may keep.</p>
</li>
<li><p>A map of authoritative sources.</p>
</li>
<li><p>An owner for each process.</p>
</li>
<li><p>A test set that can be rerun.</p>
</li>
<li><p>A short record of one correction from report to verified answer. Use test data rather than real personal details.</p>
</li>
</ul>
<p>Also set a stop condition. If old information returns after a fix, pause memory for that information type and point the agent to the approved source until it is resolved. This is a pilot design suggestion, not a feature every product guarantees. Make sure the team can actually do it and that someone has the authority to decide.</p>
<h2>One step to take now</h2>
<p>Pick one process and prepare five questions about information that may change. Update the approved source, rerun the questions and check that the agent uses the new version and shows the right source.</p>
<p><em>This English adaptation was prepared with AI assistance.</em></p>
<p>Published by Dr. Yaniv Shenhav, founder and CEO of the Israeli Institute for AI (IIAI), which runs practical AI training and adoption programs for organizations worldwide. The site is available in English, Hebrew and Arabic: <a href="https://www.iiai.co.il/en?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=agent-memory-guide">https://www.iiai.co.il/en?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=agent-memory-guide</a></p>
]]></content:encoded></item><item><title><![CDATA[AI Knowledge Base Freshness and Permissions: A Practical RAG Checklist for Organizations]]></title><description><![CDATA[Adapted from the Hebrew guide on AI NEWS Israel (ainewsil.co.il): https://ainewsil.co.il/articles/ai-knowledge-base-freshness-permissions
Short answer: what makes an enterprise AI knowledge base (RAG)]]></description><link>https://yanivshenhav.hashnode.dev/ai-knowledge-base-freshness-and-permissions-a-practical-rag-checklist-for-organizations</link><guid isPermaLink="true">https://yanivshenhav.hashnode.dev/ai-knowledge-base-freshness-and-permissions-a-practical-rag-checklist-for-organizations</guid><category><![CDATA[RAG ]]></category><category><![CDATA[AI]]></category><category><![CDATA[knowledge management]]></category><category><![CDATA[Enterprise AI]]></category><dc:creator><![CDATA[Yaniv Shenhav]]></dc:creator><pubDate>Mon, 05 Oct 2026 08:45:12 GMT</pubDate><content:encoded><![CDATA[<p><em>Adapted from the Hebrew guide on AI NEWS Israel (ainewsil.co.il): <a href="https://ainewsil.co.il/articles/ai-knowledge-base-freshness-permissions">https://ainewsil.co.il/articles/ai-knowledge-base-freshness-permissions</a></em></p>
<h2>Short answer: what makes an enterprise AI knowledge base (RAG) reliable?</h2>
<p>A trustworthy AI knowledge base does not start by dumping every file into one folder. It starts with a list of sources, each with an owner, a validity date and permissions. You decide which document wins when two disagree, attach filterable metadata to every chunk, require every answer to cite a source and version, and test the questions where the right answer is "no valid source."</p>
<p>The goal is not a model that never errs. The goal is that a mistake becomes detectable: which source was returned, when it was approved, who may see it, what was missing and who fixes it. A knowledge base that cannot retire an old document or respect a permission change can give a fluent, wrong answer even when the model has not changed.</p>
<h2>1. Build a source register before you index (ownership and freshness)</h2>
<p>One row per source, not per folder. Each row answers: what is the document, who owns it, who is it for, when is it valid, what replaces it, and how is it removed from the index. Do not assume the newest file is the authoritative one: upload date can be later than content date, and a copy moved between folders can look new while being outdated.</p>
<p>Set a precedence order per type of information. A signed procedure might beat a training deck, and a numbered correction notice might beat the procedure until a new version is published. With no precedence rule, the correct state is "conflict" - do not ask the model to pick the document that sounds more convincing.</p>
<h2>2. Separate active, historical and draft content</h2>
<p>Historical documents matter for audit and learning, but they must not compete silently with the active one. Keep them in an access-controlled archive and take them out of the normal answer path with a status field and an effective date. A draft stays outside the active base until the content owner approves it; a file named "final" is not an approval.</p>
<p>Useful metadata: source_id, owner, audience, status, effective_from, reviewed_at, version, supersedes.</p>
<h2>3. Preserve permissions end to end (access control for RAG)</h2>
<p>Access to the knowledge base is not permission to see everything in it. At import, store the source's audience. At search time, filter results by the user's identity. In the answer, prevent showing, quoting or linking a document the user may not open. A broad service account is no reason to widen what a user sees.</p>
<p>Start with read-only access. Only the knowledge-base admin imports, disables or rebuilds. The model never gets write permission to the source documents. Deleting, changing an audience or replacing a version are logged admin actions, not the result of a chat.</p>
<h2>4. Plan ingestion you can verify</h2>
<p>A typical pipeline: ingest, extract text, chunk, embed, index, retrieve. Log each run with its sources, versions, successes and failures. A file is not searchable just because it was sent to an API; check that it reached a completed state. If ingestion is partial, keep the previous version active or block the topic. Do not ship a half-update without a flag.</p>
<h2>5. Require a source the user can open</h2>
<p>The answer should show a clear source name and a link that opens with the user's permissions. For testing, also keep source_id, version and chunk id. A citation shows the system linked a claim to a file; it does not prove the claim follows from it. Compare each material claim with the source sentence, check the context was not cut, and check the source was valid at answer time.</p>
<h2>6. Build an acceptance test for questions and retrieval</h2>
<p>For each test question, record the expected result at three levels: which sources should be retrieved, what may be concluded from them, and the correct decision state (answered, needs-clarification, conflict, no-valid-source). This separates retrieval failures from wording failures. If the right document never reached the context, a better prompt is not the fix.</p>
<p>Include: an ordinary question, a paraphrase, an English technical term, a superseded document, two conflicting versions, a user without permission, a file that failed ingestion, a question with no answer, and a deleted link.</p>
<h2>7. Update and remove without a gray zone</h2>
<p>Define a change path: the content owner approves a version, the admin ingests it, regression tests run, and only then does the active alias switch. Keep rollback, but never restore a document withdrawn for safety or privacy reasons. When a permission is removed, check every copy: source, cache, index, saved results and test environment.</p>
<h2>Hypothetical example: an expense-reimbursement procedure</h2>
<p>This is a proposed design, not tested at AI NEWS Israel and not a description of real results. Operations wants an assistant to answer travel reimbursement questions. There is an active procedure, an old training deck and a draft for next year. The procedure and an approved correction notice are active; the deck is marked superseded; the draft stays out. The answer states a rule or amount only if it appears in a valid source, with a link to the clause, the version and a decision state. Stop conditions: no active source, two equal sources in conflict, user not authorized, file not fully ingested, or an answer that adds a condition the source does not contain. "Please contact Operations" is a valid result - not a quality failure.</p>
<h2>Failure cases</h2>
<ul>
<li><p>Two active versions: stop with "conflict" and show both to the content owner.</p>
</li>
<li><p>Partial ingestion: do not switch to the new index; log the file and error.</p>
</li>
<li><p>Over-broad source permission: fix the sharing or remove the source until decided; an app-level filter is not a substitute for source controls.</p>
</li>
<li><p>A valid document not retrieved: treat it as a retrieval failure; check extraction, chunking, metadata and query before changing answer wording.</p>
</li>
<li><p>A citation that does not support the claim: block the claim and add the case to the regression set.</p>
</li>
</ul>
<hr />
<p><em>Published by Dr. Yaniv Shenhav, founder and CEO of the Israeli Institute for AI (IIAI), which runs practical AI training and adoption programs for organizations worldwide. The site is available in English, Hebrew and Arabic: <a href="https://www.iiai.co.il/en?utm%5C_source=hashnode&amp;utm%5C_medium=syndication&amp;utm%5C_campaign=kb-freshness-guide">https://www.iiai.co.il/en?utm\_source=hashnode&amp;utm\_medium=syndication&amp;utm\_campaign=kb-freshness-guide</a></em></p>
]]></content:encoded></item></channel></rss>