<?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[AIKOQL]]></title><description><![CDATA[AIKOQL]]></description><link>https://aikoql.hashnode.dev</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1593680282896/kNC7E8IR4.png</url><title>AIKOQL</title><link>https://aikoql.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 04:09:44 GMT</lastBuildDate><atom:link href="https://aikoql.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Why Not Just Use a Vector Database? The Case for Knowledge Infrastructure Beyond RAG]]></title><description><![CDATA[Vector databases have changed how AI applications work with information.
They made semantic search practical.
They made it possible to retrieve information based on meaning rather than exact keywords.]]></description><link>https://aikoql.hashnode.dev/why-not-just-use-a-vector-database-the-case-for-knowledge-infrastructure-beyond-rag</link><guid isPermaLink="true">https://aikoql.hashnode.dev/why-not-just-use-a-vector-database-the-case-for-knowledge-infrastructure-beyond-rag</guid><category><![CDATA[AI]]></category><category><![CDATA[vector database]]></category><category><![CDATA[Databases]]></category><category><![CDATA[ai agents]]></category><category><![CDATA[knowledge graph]]></category><dc:creator><![CDATA[anckursingh]]></dc:creator><pubDate>Thu, 03 Sep 2026 11:25:36 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a95202018ec34dcbfdd2191/1ce7cef4-aee2-4210-a53d-4165995c09c0.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Vector databases have changed how AI applications work with information.</p>
<p>They made semantic search practical.</p>
<p>They made it possible to retrieve information based on meaning rather than exact keywords.</p>
<p>And they became one of the foundations of modern Retrieval-Augmented Generation, or RAG.</p>
<p>Today, when someone wants to build an AI application that can answer questions about documents, the architecture is often straightforward:</p>
<ol>
<li><p>Collect documents.</p>
</li>
<li><p>Split them into chunks.</p>
</li>
<li><p>Generate embeddings.</p>
</li>
<li><p>Store those embeddings.</p>
</li>
<li><p>Retrieve the most relevant chunks.</p>
</li>
<li><p>Give them to an LLM.</p>
</li>
</ol>
<p>For many applications, this works extremely well.</p>
<p>So a fair question is:</p>
<p>«Why build anything beyond a vector database?»</p>
<p>It is a question I have been asking myself while building AIKOQL.</p>
<p>And the answer is not:</p>
<p>«"Vector databases are bad."»</p>
<p>They are not.</p>
<p>The answer is also not:</p>
<p>«"AIKOQL should replace vector databases."»</p>
<p>That is not the goal either.</p>
<p>The more interesting question is:</p>
<p>«What happens when an AI system needs more than semantic retrieval?»</p>
<p>That is where I believe another layer of infrastructure may become useful.</p>
<hr />
<p>Vector databases are excellent at what they do</p>
<p>Before discussing the limitations, it is important to acknowledge why vector databases became so popular.</p>
<p>They solve a real and important problem.</p>
<p>Traditional search often relies heavily on:</p>
<ul>
<li><p>Keywords</p>
</li>
<li><p>Exact matches</p>
</li>
<li><p>Text indexes</p>
</li>
<li><p>Filters</p>
</li>
</ul>
<p>Vector search adds another capability:</p>
<p>«Semantic similarity.»</p>
<p>Instead of searching only for identical words, the system can retrieve information that is conceptually related to a query.</p>
<p>For example:</p>
<p>«"How do users authenticate?"»</p>
<p>might retrieve a document containing:</p>
<p>«"The platform uses OAuth 2.0 for identity verification."»</p>
<p>Even though the query does not contain the exact words OAuth or identity verification.</p>
<p>That is extremely useful.</p>
<p>Vector databases are particularly strong for:</p>
<ul>
<li><p>Semantic search</p>
</li>
<li><p>Document retrieval</p>
</li>
<li><p>Similarity search</p>
</li>
<li><p>RAG applications</p>
</li>
<li><p>Recommendation systems</p>
</li>
<li><p>Unstructured information</p>
</li>
</ul>
<p>For many AI applications, that is enough.</p>
<p>And it should be enough.</p>
<p>«Not every AI application needs a new database.»</p>
<p>If your problem is:</p>
<p>«"Find the most relevant information for this question."»</p>
<p>Vector search may be exactly the right tool.</p>
<hr />
<p>Where RAG works extremely well</p>
<p>Consider a customer support assistant.</p>
<p>The company has:</p>
<ul>
<li><p>Product documentation</p>
</li>
<li><p>FAQs</p>
</li>
<li><p>Help articles</p>
</li>
<li><p>Troubleshooting guides</p>
</li>
</ul>
<p>A user asks:</p>
<p>«"How do I reset my account password?"»</p>
<p>The system searches the documentation and retrieves the relevant instructions.</p>
<p>The LLM generates a helpful response.</p>
<p>This is a perfect use case for RAG.</p>
<p>The information is relatively straightforward.</p>
<p>The primary problem is retrieval.</p>
<p>The system needs to answer:</p>
<p>«Which documents are relevant to this question?»</p>
<p>A vector database can solve that efficiently.</p>
<p>There is no need to create a complicated knowledge infrastructure when simple retrieval already solves the problem.</p>
<p>This distinction matters.</p>
<p>AIKOQL should not exist just because a different technology can be built.</p>
<p>It should exist only if it solves a different problem.</p>
<hr />
<p>The problem starts when retrieval becomes memory</p>
<p>Now imagine a different type of AI system.</p>
<p>Instead of a customer support assistant, imagine an AI agent operating over a long period of time.</p>
<p>The agent interacts with:</p>
<ul>
<li><p>Documents</p>
</li>
<li><p>APIs</p>
</li>
<li><p>Source code</p>
</li>
<li><p>Logs</p>
</li>
<li><p>Databases</p>
</li>
<li><p>Other agents</p>
</li>
<li><p>Users</p>
</li>
</ul>
<p>Over time, the agent learns things.</p>
<p>For example:</p>
<p>«The Payment Service depends on the Authentication Service.»</p>
<p>Later:</p>
<p>«The Authentication Service was migrated to a new cluster.»</p>
<p>Then:</p>
<p>«The Payment Service experienced latency after the migration.»</p>
<p>Later still:</p>
<p>«Investigation showed that the migration was unrelated to the latency.»</p>
<p>Now the AI system has accumulated information over time.</p>
<p>Some of that information is:</p>
<ul>
<li><p>Current</p>
</li>
<li><p>Historical</p>
</li>
<li><p>Verified</p>
</li>
<li><p>Unverified</p>
</li>
<li><p>Contradicted</p>
</li>
<li><p>Invalidated</p>
</li>
</ul>
<p>This is where semantic retrieval alone begins to face a different problem.</p>
<p>The question is no longer simply:</p>
<p>«Which information is similar to my query?»</p>
<p>The AI system may need to ask:</p>
<p>«What do I currently know?»</p>
<p>And:</p>
<p>«Which of that knowledge should I trust?»</p>
<hr />
<p>Similarity does not understand truth</p>
<p>Consider two pieces of information.</p>
<p>Knowledge A</p>
<p>«The Payment Service uses PostgreSQL.»</p>
<p>Source: Architecture document Date: January 2026 State: Superseded</p>
<p>Knowledge B</p>
<p>«The Payment Service uses CockroachDB.»</p>
<p>Source: Production configuration Date: August 2026 State: Verified</p>
<p>Now imagine the query:</p>
<p>«What database does the Payment Service use?»</p>
<p>Both pieces of information are highly relevant.</p>
<p>In fact, the older information may be more semantically similar to the wording of the query.</p>
<p>A vector search engine is doing exactly what it was designed to do.</p>
<p>It finds similar content.</p>
<p>But semantic similarity does not automatically understand:</p>
<ul>
<li><p>Which information is current</p>
</li>
<li><p>Which information was superseded</p>
</li>
<li><p>Which source is authoritative</p>
</li>
<li><p>Which claim has stronger evidence</p>
</li>
</ul>
<p>Those decisions are usually handled somewhere else.</p>
<p>And that "somewhere else" is where application complexity starts growing.</p>
<hr />
<p>The application layer starts doing the hard work</p>
<p>A modern RAG system can quickly evolve into something like this:</p>
<p>Step 1: Search for semantically relevant chunks.</p>
<p>Step 2: Filter by metadata.</p>
<p>Step 3: Check timestamps.</p>
<p>Step 4: Remove outdated information.</p>
<p>Step 5: Look up relationships.</p>
<p>Step 6: Retrieve supporting documents.</p>
<p>Step 7: Rank sources.</p>
<p>Step 8: Build context for the LLM.</p>
<p>None of these steps are inherently wrong.</p>
<p>In fact, they are common engineering patterns.</p>
<p>But as the system becomes more sophisticated, an interesting question emerges:</p>
<p>«Should every AI application independently rebuild knowledge management logic?»</p>
<p>Or could some of those concepts become infrastructure primitives?</p>
<p>This is one of the questions behind AIKOQL.</p>
<hr />
<p>Vector search answers a different question</p>
<p>A simplified way to think about vector search is:</p>
<p>«What information is most similar to this query?»</p>
<p>That is a powerful question.</p>
<p>But persistent AI systems may also need to ask:</p>
<p>«What do we know about this entity?»</p>
<p>«What knowledge is currently valid?»</p>
<p>«What evidence supports this claim?»</p>
<p>«What changed after this event?»</p>
<p>«What conclusions were invalidated?»</p>
<p>«What knowledge depends on this source?»</p>
<p>«What information contradicts this claim?»</p>
<p>These are not necessarily better questions.</p>
<p>They are different questions.</p>
<p>And they require different primitives.</p>
<p>That distinction is important.</p>
<p>«AIKOQL is not trying to make semantic retrieval obsolete.»</p>
<p>It is exploring what happens when semantic retrieval is only one part of a broader knowledge system.</p>
<hr />
<p>A chunk is not the same as knowledge</p>
<p>This distinction became clearer to me while exploring document ingestion.</p>
<p>Consider a chunk of text:</p>
<p>«The Payment Service uses PostgreSQL as its primary database. It depends on the Authentication Service for identity verification.»</p>
<p>A vector database can store this chunk and retrieve it effectively.</p>
<p>But inside that chunk are multiple pieces of knowledge.</p>
<ul>
<li><p>Payment Service uses PostgreSQL.</p>
</li>
<li><p>Payment Service depends on Authentication Service.</p>
</li>
</ul>
<p>Those are relationships.</p>
<p>They can potentially be queried independently.</p>
<p>The same information could appear in other documents.</p>
<p>A new document might say:</p>
<p>«Payment Service migrated from PostgreSQL to CockroachDB.»</p>
<p>Now the system has a temporal relationship between pieces of knowledge.</p>
<p>The problem is no longer simply storing text.</p>
<p>The system needs to understand that:</p>
<ul>
<li><p>PostgreSQL was previously used.</p>
</li>
<li><p>CockroachDB is currently used.</p>
</li>
<li><p>A migration occurred.</p>
</li>
<li><p>The new knowledge may supersede the old knowledge.</p>
</li>
</ul>
<p>This is where the idea of a Knowledge Object begins to differ from a chunk.</p>
<hr />
<p>AIKOQL is exploring knowledge as a first-class object</p>
<p>A chunk is usually optimized for retrieval.</p>
<p>A Knowledge Object is intended to represent something the system knows.</p>
<p>Conceptually, a Knowledge Object may include:</p>
<ul>
<li><p>Identity</p>
</li>
<li><p>Content</p>
</li>
<li><p>Relationships</p>
</li>
<li><p>Evidence</p>
</li>
<li><p>Provenance</p>
</li>
<li><p>Time</p>
</li>
<li><p>Knowledge state</p>
</li>
</ul>
<p>For example:</p>
<p>«Knowledge: Payment Service uses CockroachDB.»</p>
<p>The system may also understand:</p>
<p>State: Verified</p>
<p>Valid From: August 2026</p>
<p>Evidence: Production configuration</p>
<p>Source: Infrastructure repository</p>
<p>Previous Knowledge: Payment Service uses PostgreSQL</p>
<p>This allows the information to participate in different types of queries.</p>
<p>Not just:</p>
<p>«Find text similar to this.»</p>
<p>But potentially:</p>
<p>«What database does the Payment Service currently use?»</p>
<p>Or:</p>
<p>«What database did it use before August 2026?»</p>
<p>Or:</p>
<p>«Why do we believe the current database is CockroachDB?»</p>
<p>Or:</p>
<p>«Show me the evidence.»</p>
<p>That is the difference I am exploring.</p>
<hr />
<p>The difficult problem is knowledge evolution</p>
<p>Information changes constantly.</p>
<p>This is one of the biggest differences between static document retrieval and long-running knowledge systems.</p>
<p>Imagine a company updates its architecture.</p>
<p>An old document says:</p>
<p>«PostgreSQL»</p>
<p>A newer document says:</p>
<p>«CockroachDB»</p>
<p>A naive system might simply store both documents.</p>
<p>The AI retrieves whichever one appears most relevant.</p>
<p>A more sophisticated RAG system might add metadata filters.</p>
<p>That helps.</p>
<p>But the deeper question remains:</p>
<p>«What is the relationship between these two pieces of information?»</p>
<p>One possibility is:</p>
<p>«The newer information supersedes the older information.»</p>
<p>That relationship itself is knowledge.</p>
<p>Now the system can preserve history without confusing current retrieval.</p>
<p>The old information does not need to disappear.</p>
<p>It simply has a different state.</p>
<p>«Historical knowledge can remain useful without being treated as current knowledge.»</p>
<p>This is a core concept behind AIKOQL's exploration.</p>
<hr />
<p>What vector databases are not designed to solve</p>
<p>This needs to be stated carefully.</p>
<p>Vector databases can support metadata.</p>
<p>They can work alongside other databases.</p>
<p>They can be part of sophisticated knowledge architectures.</p>
<p>So this is not a claim that vector databases cannot participate in these systems.</p>
<p>The question is about their primary abstraction.</p>
<p>Vector databases are primarily designed around:</p>
<p>«Representing and retrieving high-dimensional vectors efficiently.»</p>
<p>That makes them excellent at similarity search.</p>
<p>But a persistent knowledge system may also need first-class concepts for:</p>
<ul>
<li><p>Knowledge identity</p>
</li>
<li><p>Evidence</p>
</li>
<li><p>Provenance</p>
</li>
<li><p>Temporal validity</p>
</li>
<li><p>Contradiction</p>
</li>
<li><p>Supersession</p>
</li>
<li><p>Relationships</p>
</li>
<li><p>Lifecycle</p>
</li>
</ul>
<p>These capabilities can absolutely be built around a vector database.</p>
<p>The question AIKOQL is exploring is:</p>
<p>«What if those concepts were part of the infrastructure itself?»</p>
<p>That is a different architectural direction.</p>
<hr />
<p>The goal is not one database to rule everything</p>
<p>There is a temptation in infrastructure projects to claim:</p>
<p>«"This replaces everything."»</p>
<p>That is rarely realistic.</p>
<p>AIKOQL does not need to replace:</p>
<ul>
<li><p>PostgreSQL</p>
</li>
<li><p>ClickHouse</p>
</li>
<li><p>Neo4j</p>
</li>
<li><p>Elasticsearch</p>
</li>
<li><p>Vector databases</p>
</li>
</ul>
<p>These systems solve different problems and have years of engineering behind them.</p>
<p>A more realistic architecture may eventually look like a combination of specialized systems.</p>
<p>For example:</p>
<p>Relational databases for transactional application data.</p>
<p>Vector indexes for semantic similarity.</p>
<p>Search engines for text retrieval.</p>
<p>Graph capabilities for complex relationships.</p>
<p>AIKOQL for managing persistent knowledge objects and their lifecycle.</p>
<p>The important question is not:</p>
<p>«Which database wins?»</p>
<p>The question is:</p>
<p>«Which layer should own which responsibility?»</p>
<p>That is a much healthier way to think about infrastructure.</p>
<hr />
<p>AIKOQL may use semantic search too</p>
<p>Another important point.</p>
<p>Semantic retrieval is useful.</p>
<p>There is no reason knowledge infrastructure should ignore it.</p>
<p>Imagine an AI agent asking:</p>
<p>«What do we know about the authentication migration?»</p>
<p>The system may need semantic search to discover relevant knowledge.</p>
<p>But once relevant knowledge is discovered, other dimensions can influence what is returned.</p>
<p>For example:</p>
<ol>
<li><p>Find semantically related knowledge.</p>
</li>
<li><p>Prefer currently valid information.</p>
</li>
<li><p>Prioritize verified claims.</p>
</li>
<li><p>Include supporting evidence.</p>
</li>
<li><p>Exclude invalidated conclusions.</p>
</li>
<li><p>Preserve historical context when requested.</p>
</li>
</ol>
<p>Semantic similarity becomes one signal.</p>
<p>Not the only signal.</p>
<p>This is the architectural direction I find interesting.</p>
<hr />
<p>Retrieval and knowledge can work together</p>
<p>I increasingly think the comparison should not be:</p>
<p>«Vector Database vs AIKOQL»</p>
<p>A more useful model may be:</p>
<p>«Semantic Retrieval + Knowledge Infrastructure»</p>
<p>One layer helps answer:</p>
<p>«What information might be relevant?»</p>
<p>Another layer helps answer:</p>
<p>«What does the system know about it?»</p>
<p>These responsibilities can complement each other.</p>
<p>For example:</p>
<p>Semantic retrieval</p>
<p>Finds relevant information about an entity or concept.</p>
<p>Knowledge layer</p>
<p>Understands:</p>
<ul>
<li><p>Identity</p>
</li>
<li><p>State</p>
</li>
<li><p>Relationships</p>
</li>
<li><p>Evidence</p>
</li>
<li><p>Time</p>
</li>
<li><p>History</p>
</li>
</ul>
<p>AI agent</p>
<p>Uses the resulting knowledge to reason and act.</p>
<p>The agent does not need to manually reconstruct all of this context every time.</p>
<p>At least, that is one of the hypotheses AIKOQL is exploring.</p>
<hr />
<p>Where vector databases may be enough</p>
<p>It is equally important to understand where AIKOQL may not be necessary.</p>
<p>You probably do not need a persistent knowledge infrastructure when:</p>
<ul>
<li><p>Your data is mostly static.</p>
</li>
<li><p>You only need semantic search.</p>
</li>
<li><p>Documents do not significantly contradict each other.</p>
</li>
<li><p>Historical state does not matter.</p>
</li>
<li><p>The application does not require knowledge lineage.</p>
</li>
<li><p>You are building a straightforward RAG assistant.</p>
</li>
</ul>
<p>For example:</p>
<p>«"Answer questions from our product documentation."»</p>
<p>A vector database may be perfect.</p>
<p>Simple architecture is often better architecture.</p>
<p>There is no prize for adding unnecessary infrastructure.</p>
<hr />
<p>When the problem starts becoming more complex</p>
<p>AIKOQL becomes more interesting when the system needs to deal with:</p>
<p>Knowledge that changes</p>
<p>Information can become outdated or superseded.</p>
<p>Knowledge from multiple sources</p>
<p>Different systems may provide conflicting information.</p>
<p>Long-running AI agents</p>
<p>Agents accumulate observations and experience over time.</p>
<p>Evidence and provenance</p>
<p>The system needs to explain why it believes something.</p>
<p>Historical questions</p>
<p>The answer depends on a particular point in time.</p>
<p>Contradictions</p>
<p>The system needs to represent disagreement explicitly.</p>
<p>Relationships</p>
<p>Information is connected across entities and sources.</p>
<p>At that point, retrieval alone may no longer be the complete problem.</p>
<p>The application is starting to manage knowledge.</p>
<p>And that is the infrastructure layer AIKOQL is exploring.</p>
<hr />
<p>The real challenge is trust</p>
<p>The deeper I go into this project, the more I think the problem is ultimately about trust.</p>
<p>An AI system can retrieve information.</p>
<p>But can it understand:</p>
<p>«Why should I trust this information?»</p>
<p>A useful answer may depend on:</p>
<ul>
<li><p>Where the information came from</p>
</li>
<li><p>When it was created</p>
</li>
<li><p>Whether it was verified</p>
</li>
<li><p>Whether newer information replaced it</p>
</li>
<li><p>Whether evidence supports it</p>
</li>
<li><p>Whether other knowledge contradicts it</p>
</li>
</ul>
<p>This is not a problem that semantic similarity can solve by itself.</p>
<p>Similarity tells us:</p>
<p>«These pieces of information are related.»</p>
<p>Knowledge infrastructure may need to answer:</p>
<p>«Which one should influence a decision?»</p>
<p>That is a much harder problem.</p>
<p>And I believe it will become increasingly important as AI systems become more autonomous.</p>
<hr />
<p>RAG is not the end of the architecture</p>
<p>RAG was a major step forward.</p>
<p>It gave AI systems access to information beyond their training data.</p>
<p>But I don't think RAG is necessarily the final architecture for AI knowledge.</p>
<p>A typical RAG system answers:</p>
<p>«What relevant information can we retrieve right now?»</p>
<p>Persistent AI systems may eventually need to answer:</p>
<p>«What have we learned over time?»</p>
<p>«What changed?»</p>
<p>«What was proven wrong?»</p>
<p>«What evidence supports our current understanding?»</p>
<p>«What knowledge should survive beyond a single conversation?»</p>
<p>These questions suggest that AI memory and AI knowledge may eventually require deeper infrastructure.</p>
<p>Not necessarily instead of RAG.</p>
<p>But beyond RAG.</p>
<hr />
<p>What AIKOQL is actually trying to explore</p>
<p>I want to be clear about the scope.</p>
<p>AIKOQL is not claiming to have solved all of these problems.</p>
<p>The project is exploring a set of questions:</p>
<p>«Can knowledge become a first-class storage primitive?»</p>
<p>«Can AI systems explicitly represent knowledge state?»</p>
<p>«Can evidence and provenance become queryable infrastructure?»</p>
<p>«Can historical knowledge coexist with current knowledge?»</p>
<p>«Can contradictions become explicit instead of remaining hidden inside documents?»</p>
<p>«Can semantic retrieval become one part of a broader knowledge query system?»</p>
<p>These are engineering questions.</p>
<p>And they need to be tested through implementation.</p>
<p>Benchmarks.</p>
<p>Failures.</p>
<p>Real workloads.</p>
<p>That is ultimately what will determine whether the abstractions are useful.</p>
<hr />
<p>The way I currently see the landscape</p>
<p>I don't see the future as a battle between databases.</p>
<p>I see a growing infrastructure stack.</p>
<p>At one level:</p>
<p>«Data»</p>
<p>Transactional systems and analytical databases.</p>
<p>At another:</p>
<p>«Information»</p>
<p>Documents, search indexes, files, and APIs.</p>
<p>At another:</p>
<p>«Semantic retrieval»</p>
<p>Embeddings and vector search.</p>
<p>And potentially another layer:</p>
<p>«Persistent knowledge»</p>
<p>Where information can have:</p>
<ul>
<li><p>Identity</p>
</li>
<li><p>Context</p>
</li>
<li><p>Evidence</p>
</li>
<li><p>Relationships</p>
</li>
<li><p>Time</p>
</li>
<li><p>State</p>
</li>
<li><p>History</p>
</li>
</ul>
<p>AIKOQL is exploring that last layer.</p>
<p>Not as a replacement for everything below it.</p>
<p>But as infrastructure for problems that emerge above them.</p>
<hr />
<p>The biggest question</p>
<p>The most important question may not be:</p>
<p>«"Can we build another database?"»</p>
<p>The question is:</p>
<p>«As AI systems become more persistent, what kind of memory will they need?»</p>
<p>A collection of documents?</p>
<p>A vector store?</p>
<p>A graph?</p>
<p>A database?</p>
<p>Probably some combination.</p>
<p>But perhaps there is also room for a new abstraction.</p>
<p>One designed specifically around the lifecycle of knowledge.</p>
<p>That is the space AIKOQL is exploring.</p>
<p>And I think the answer will come from building, testing, and discovering where the abstraction actually helps.</p>
<hr />
<p>Final thoughts</p>
<p>Vector databases changed what AI applications can do.</p>
<p>They made semantic retrieval practical at scale.</p>
<p>RAG made it easier to ground AI responses in external information.</p>
<p>Those are significant achievements.</p>
<p>But as AI systems evolve from:</p>
<p>«Answering questions»</p>
<p>to:</p>
<p>«Remembering information»</p>
<p>to:</p>
<p>«Maintaining long-term context»</p>
<p>to:</p>
<p>«Making decisions»</p>
<p>the infrastructure requirements may also evolve.</p>
<p>Retrieval is important.</p>
<p>But retrieval alone does not tell us:</p>
<p>«What is true?»</p>
<p>«What changed?»</p>
<p>«What was replaced?»</p>
<p>«What evidence supports this?»</p>
<p>«What should the AI trust?»</p>
<p>AIKOQL is exploring whether knowledge itself should become an infrastructure layer.</p>
<p>Not instead of vector databases.</p>
<p>Not instead of RAG.</p>
<p>But for the problems that begin when retrieval is no longer enough.</p>
<p>«Vector databases help AI find information.»</p>
<p>«AIKOQL is exploring how AI systems can maintain what they know.»</p>
<p>That distinction is the foundation of the project.</p>
<hr />
<p>What comes next?</p>
<p>The next post will move from concepts into something more practical:</p>
<p>Can AIKOQL Work Alongside PostgreSQL, Vector Databases, and Knowledge Graphs?</p>
<p>Rather than comparing technologies as competitors, I want to explore a realistic AI infrastructure stack.</p>
<p>Where should:</p>
<ul>
<li><p>PostgreSQL live?</p>
</li>
<li><p>Where does vector search fit?</p>
</li>
<li><p>When are graph relationships useful?</p>
</li>
<li><p>What role could AIKOQL play?</p>
</li>
</ul>
<p>Because I believe the future of AI infrastructure is unlikely to be one database replacing everything.</p>
<p>It will probably be about better boundaries between different systems.</p>
<p>And knowing which layer should own which responsibility.</p>
<hr />
<p>AIKOQL is an evolving open project exploring persistent, structured, and context-aware knowledge infrastructure for AI systems. The ideas discussed here represent the current direction of exploration and will continue to evolve through implementation, testing, benchmarking, and real-world workloads.</p>
<p>What do you think?</p>
<p>«Is semantic retrieval enough for long-running AI systems, or do you think AI applications will eventually need a dedicated knowledge layer that understands evidence, history, relationships, and change?»</p>
]]></content:encoded></item><item><title><![CDATA[From Documents to Knowledge: How Information Becomes a Knowledge Object]]></title><description><![CDATA[Most AI knowledge systems begin with documents.
PDFs.
Markdown files.
Wiki pages.
GitHub repositories.
Support tickets.
Logs.
Architecture documents.
Chat conversations.
The usual pipeline looks famil]]></description><link>https://aikoql.hashnode.dev/from-documents-to-knowledge-how-information-becomes-a-knowledge-object</link><guid isPermaLink="true">https://aikoql.hashnode.dev/from-documents-to-knowledge-how-information-becomes-a-knowledge-object</guid><category><![CDATA[knowledge graph]]></category><category><![CDATA[Databases]]></category><category><![CDATA[RAG ]]></category><category><![CDATA[AI]]></category><category><![CDATA[ai agents]]></category><dc:creator><![CDATA[anckursingh]]></dc:creator><pubDate>Thu, 03 Sep 2026 10:34:48 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a95202018ec34dcbfdd2191/c1c7c5a0-9819-419a-a654-dcf2aaeadde0.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most AI knowledge systems begin with documents.</p>
<p>PDFs.</p>
<p>Markdown files.</p>
<p>Wiki pages.</p>
<p>GitHub repositories.</p>
<p>Support tickets.</p>
<p>Logs.</p>
<p>Architecture documents.</p>
<p>Chat conversations.</p>
<p>The usual pipeline looks familiar:</p>
<p>«Upload documents → Split them into chunks → Create embeddings → Store vectors → Retrieve relevant chunks»</p>
<p>This approach has made RAG practical.</p>
<p>And for many applications, it works well.</p>
<p>But while building AIKOQL, I keep coming back to a question:</p>
<p>«When does information inside a document become knowledge?»</p>
<p>A document is not knowledge.</p>
<p>A chunk is not knowledge.</p>
<p>An embedding is not knowledge.</p>
<p>They are all representations of information.</p>
<p>Knowledge, at least in the direction I am exploring with AIKOQL, needs something more.</p>
<p>It needs identity.</p>
<p>Context.</p>
<p>Relationships.</p>
<p>Evidence.</p>
<p>Time.</p>
<p>And eventually, a lifecycle.</p>
<p>This post explores what that transformation could look like.</p>
<hr />
<p>A document is not a knowledge base</p>
<p>Consider a simple architecture document.</p>
<p>It contains the following sentence:</p>
<p>«The Payment Service uses PostgreSQL as its primary database.»</p>
<p>A traditional RAG pipeline might process it like this:</p>
<ol>
<li><p>Read the document.</p>
</li>
<li><p>Split it into chunks.</p>
</li>
<li><p>Generate embeddings.</p>
</li>
<li><p>Store the chunks.</p>
</li>
<li><p>Retrieve them when someone asks about the Payment Service.</p>
</li>
</ol>
<p>The stored representation might conceptually look like this:</p>
<p>Chunk #4821</p>
<p>Content: "The Payment Service uses PostgreSQL as its primary database."</p>
<p>Source: architecture.md</p>
<p>Embedding: [0.018, -0.42, ...]</p>
<p>This is useful.</p>
<p>If someone asks:</p>
<p>«What database does the Payment Service use?»</p>
<p>Semantic search may retrieve the chunk.</p>
<p>The LLM can generate an answer.</p>
<p>But now consider what the system actually knows.</p>
<p>Does it know:</p>
<ul>
<li><p>What the Payment Service is?</p>
</li>
<li><p>What PostgreSQL represents?</p>
</li>
<li><p>Whether this information is still current?</p>
</li>
<li><p>When this statement became valid?</p>
</li>
<li><p>Whether another document contradicts it?</p>
</li>
<li><p>Which source supports it?</p>
</li>
<li><p>Whether the information was verified?</p>
</li>
</ul>
<p>Not necessarily.</p>
<p>The system has information.</p>
<p>But it may not yet have structured knowledge.</p>
<hr />
<p>The problem with chunks</p>
<p>Chunks are primarily created for retrieval efficiency.</p>
<p>They are not necessarily meaningful units of knowledge.</p>
<p>For example, imagine this document:</p>
<p>«The Payment Service processes transactions. It depends on the Authentication Service for identity verification. Transaction data is stored in PostgreSQL. The service was migrated from MongoDB in June 2026.»</p>
<p>Depending on chunking strategy, the system may create:</p>
<p>Chunk 1</p>
<p>«The Payment Service processes transactions. It depends on the Authentication Service for identity verification.»</p>
<p>Chunk 2</p>
<p>«Transaction data is stored in PostgreSQL. The service was migrated from MongoDB in June 2026.»</p>
<p>The information has now been divided based on size, token limits, or chunking rules.</p>
<p>But knowledge does not necessarily follow chunk boundaries.</p>
<p>There are multiple distinct pieces of knowledge here:</p>
<ul>
<li><p>Payment Service processes transactions.</p>
</li>
<li><p>Payment Service depends on Authentication Service.</p>
</li>
<li><p>Payment Service stores transaction data in PostgreSQL.</p>
</li>
<li><p>The service previously used MongoDB.</p>
</li>
<li><p>A migration occurred in June 2026.</p>
</li>
</ul>
<p>A chunk may contain several knowledge statements.</p>
<p>Or one knowledge statement may span multiple chunks.</p>
<p>This is one reason I think:</p>
<p>«Chunks are a retrieval strategy, not a knowledge model.»</p>
<hr />
<p>The first transformation: identifying a knowledge claim</p>
<p>The first step in transforming information into knowledge may be identifying meaningful claims.</p>
<p>Consider this sentence:</p>
<p>«The Payment Service uses PostgreSQL as its primary database.»</p>
<p>The system can identify a claim:</p>
<p>Subject: Payment Service</p>
<p>Relationship: USES</p>
<p>Object: PostgreSQL</p>
<p>Now the information is no longer simply text.</p>
<p>It has structure.</p>
<p>We can ask:</p>
<p>«What does the Payment Service use?»</p>
<p>Or:</p>
<p>«Which services use PostgreSQL?»</p>
<p>Or:</p>
<p>«What databases are connected to the Payment Service?»</p>
<p>The same information can now participate in structured queries and relationships.</p>
<p>This is an important transition.</p>
<p>From:</p>
<p>«Text containing information»</p>
<p>To:</p>
<p>«A representation of a claim about something»</p>
<hr />
<p>Knowledge extraction is not the same as summarization</p>
<p>AI systems are already good at summarizing documents.</p>
<p>But summarization and knowledge extraction are different.</p>
<p>A summary might say:</p>
<p>«The Payment Service handles transactions and relies on PostgreSQL for storage.»</p>
<p>That is useful for a human.</p>
<p>But the system may still not understand the underlying structure.</p>
<p>Knowledge extraction attempts to identify the individual concepts and relationships.</p>
<p>For example:</p>
<p>Knowledge Claim 1</p>
<p>Payment Service</p>
<p>"PROCESSES"</p>
<p>Transactions</p>
<hr />
<p>Knowledge Claim 2</p>
<p>Payment Service</p>
<p>"USES"</p>
<p>PostgreSQL</p>
<hr />
<p>Knowledge Claim 3</p>
<p>Payment Service</p>
<p>"DEPENDS_ON"</p>
<p>Authentication Service</p>
<p>Each claim can now become independently addressable.</p>
<p>This is where the idea of a Knowledge Object becomes interesting.</p>
<hr />
<p>What is a Knowledge Object?</p>
<p>The simplest way I currently think about a Knowledge Object is:</p>
<p>«A persistent representation of something the system knows, along with the context needed to understand that knowledge.»</p>
<p>A Knowledge Object may contain:</p>
<ul>
<li><p>The knowledge itself</p>
</li>
<li><p>Identity</p>
</li>
<li><p>Relationships</p>
</li>
<li><p>Evidence</p>
</li>
<li><p>Provenance</p>
</li>
<li><p>Time</p>
</li>
<li><p>State</p>
</li>
</ul>
<p>For example:</p>
<p>Knowledge Object</p>
<p>Statement: Payment Service uses PostgreSQL</p>
<p>Relationship: Payment Service → USES → PostgreSQL</p>
<p>State: Observed</p>
<p>Source: Architecture Document</p>
<p>Evidence: Section 3.2</p>
<p>Observed At: 2026-09-03</p>
<p>This is much richer than a chunk.</p>
<p>But it is important not to confuse richer representation with truth.</p>
<p>The system has extracted a claim.</p>
<p>That does not automatically mean the claim is correct.</p>
<p>This is where knowledge state becomes important.</p>
<hr />
<p>Extraction should create observations, not instant truth</p>
<p>Imagine an AI model processes a document and extracts:</p>
<p>«The Payment Service uses PostgreSQL.»</p>
<p>Should the system immediately mark this as verified knowledge?</p>
<p>Probably not.</p>
<p>The model may have:</p>
<ul>
<li><p>Misinterpreted the document.</p>
</li>
<li><p>Read outdated information.</p>
</li>
<li><p>Extracted an ambiguous statement.</p>
</li>
<li><p>Confused a planned architecture with the current architecture.</p>
</li>
</ul>
<p>A safer approach may be:</p>
<p>«Extraction creates an observation or assertion.»</p>
<p>For example:</p>
<p>Knowledge: Payment Service uses PostgreSQL</p>
<p>State: Observed</p>
<p>Source: Architecture Document</p>
<p>The system can then evolve the knowledge based on additional information.</p>
<p>This distinction becomes particularly important when AI agents generate knowledge automatically.</p>
<p>«AI-generated information should not automatically become AI-trusted knowledge.»</p>
<hr />
<p>Evidence should stay connected to knowledge</p>
<p>One of the biggest problems with extracted information is losing the original context.</p>
<p>Imagine an AI system stores:</p>
<p>«The Payment Service uses PostgreSQL.»</p>
<p>Six months later, someone asks:</p>
<p>«Where did this information come from?»</p>
<p>If the answer is simply:</p>
<p>«We extracted it from a document.»</p>
<p>That is not very useful.</p>
<p>A better system should preserve the evidence.</p>
<p>For example:</p>
<p>Knowledge: Payment Service uses PostgreSQL</p>
<p>Supported By: Architecture Document</p>
<p>Location: Database Architecture section</p>
<p>Source Version: v1.8</p>
<p>Extracted At: September 2026</p>
<p>Now the system can potentially trace the claim back to its origin.</p>
<p>This becomes important when:</p>
<ul>
<li><p>The source changes.</p>
</li>
<li><p>The source is deleted.</p>
</li>
<li><p>A new document contradicts it.</p>
</li>
<li><p>Someone questions the claim.</p>
</li>
<li><p>The AI needs to explain its answer.</p>
</li>
</ul>
<p>Evidence gives knowledge something information retrieval alone often loses:</p>
<p>«Traceability.»</p>
<hr />
<p>Provenance answers: where did this come from?</p>
<p>Evidence tells us what supports a claim.</p>
<p>Provenance tells us where the knowledge came from.</p>
<p>Imagine the following chain:</p>
<p>Architecture Document</p>
<pre><code class="language-plaintext">    ↓
</code></pre>
<p>Section: Database Layer</p>
<pre><code class="language-plaintext">    ↓
</code></pre>
<p>Extracted Claim</p>
<pre><code class="language-plaintext">    ↓
</code></pre>
<p>Knowledge Object</p>
<p>The system can preserve this lineage.</p>
<p>Now imagine the original document is updated.</p>
<p>The architecture section changes from:</p>
<p>«PostgreSQL»</p>
<p>to:</p>
<p>«CockroachDB»</p>
<p>The system can identify knowledge that originated from the old version.</p>
<p>That creates an interesting possibility.</p>
<p>Instead of treating knowledge as permanent, the system can ask:</p>
<p>«Which Knowledge Objects may be affected by this source change?»</p>
<p>This is where persistent knowledge starts becoming dynamic infrastructure.</p>
<hr />
<p>A source change should not simply overwrite knowledge</p>
<p>Suppose an architecture document is updated.</p>
<p>Yesterday:</p>
<p>«The Payment Service uses PostgreSQL.»</p>
<p>Today:</p>
<p>«The Payment Service uses CockroachDB.»</p>
<p>A simple ingestion system might delete the old chunk and insert the new chunk.</p>
<p>But something valuable is lost.</p>
<p>The old information may still be historically correct.</p>
<p>A knowledge-aware system could instead preserve the evolution.</p>
<p>Previous Knowledge</p>
<p>«Payment Service uses PostgreSQL.»</p>
<p>State:</p>
<p>Superseded</p>
<hr />
<p>Current Knowledge</p>
<p>«Payment Service uses CockroachDB.»</p>
<p>State:</p>
<p>Current</p>
<p>The relationship between the two is also meaningful.</p>
<p>The new knowledge may:</p>
<p>«SUPERSEDE»</p>
<p>the previous knowledge.</p>
<p>This is where document ingestion connects directly to knowledge lifecycle.</p>
<hr />
<p>From extraction to knowledge requires identity</p>
<p>One of the challenges with documents is that the same concept can appear in many different forms.</p>
<p>For example:</p>
<p>«Payment Service»</p>
<p>«Payment API»</p>
<p>«Payments Platform»</p>
<p>«Transaction Processing Service»</p>
<p>Are these different systems?</p>
<p>Or different names for the same system?</p>
<p>A knowledge system eventually needs to deal with identity.</p>
<p>Consider two documents.</p>
<p>Document A says:</p>
<p>«Payment Service uses PostgreSQL.»</p>
<p>Document B says:</p>
<p>«Payments Platform migrated to CockroachDB.»</p>
<p>Before deciding whether these statements contradict each other, the system may need to determine:</p>
<p>«Are Payment Service and Payments Platform the same entity?»</p>
<p>Identity resolution becomes important.</p>
<p>Without it, the knowledge base may become a collection of disconnected facts.</p>
<p>With identity, information can start accumulating around entities.</p>
<p>For example:</p>
<p>Payment Service</p>
<p>Known As: Payment API Payments Platform</p>
<p>Relationships: Uses → PostgreSQL Uses → CockroachDB Depends On → Authentication Service Processes → Transactions</p>
<p>Now the system can begin understanding that different pieces of information refer to the same thing.</p>
<hr />
<p>Relationships are discovered during ingestion</p>
<p>Documents often contain hidden relationships.</p>
<p>Consider:</p>
<p>«The Payment Service depends on the Authentication Service.»</p>
<p>This sentence contains at least two entities.</p>
<ul>
<li><p>Payment Service</p>
</li>
<li><p>Authentication Service</p>
</li>
</ul>
<p>And a relationship:</p>
<p>«DEPENDS_ON»</p>
<p>Once extracted, that relationship becomes queryable.</p>
<p>Later, another document might say:</p>
<p>«The Authentication Service depends on Redis.»</p>
<p>Now the system can connect the information.</p>
<p>An AI agent asking:</p>
<p>«What infrastructure does the Payment Service depend on?»</p>
<p>may eventually discover:</p>
<ul>
<li><p>Authentication Service</p>
</li>
<li><p>Redis</p>
</li>
</ul>
<p>The answer requires more than retrieving one chunk.</p>
<p>It requires relationships between pieces of knowledge.</p>
<p>This is one of the reasons I see ingestion as more than:</p>
<p>«Upload → Embed → Store»</p>
<p>It may eventually become:</p>
<p>«Extract → Identify → Connect → Preserve → Evolve»</p>
<hr />
<p>Not every piece of information deserves to become knowledge</p>
<p>This is another question I think is important.</p>
<p>Should everything extracted from a document become a persistent Knowledge Object?</p>
<p>Probably not.</p>
<p>Consider a sentence like:</p>
<p>«This document was last updated on Tuesday.»</p>
<p>Or:</p>
<p>«The author prefers dark mode.»</p>
<p>Or:</p>
<p>«Please review this section before publication.»</p>
<p>Some information may be:</p>
<ul>
<li><p>Temporary</p>
</li>
<li><p>Irrelevant</p>
</li>
<li><p>Context-specific</p>
</li>
<li><p>Low value</p>
</li>
<li><p>Procedural</p>
</li>
</ul>
<p>A knowledge system needs some notion of selection.</p>
<p>This could involve:</p>
<ul>
<li><p>Extraction rules</p>
</li>
<li><p>Confidence</p>
</li>
<li><p>Source importance</p>
</li>
<li><p>Entity relevance</p>
</li>
<li><p>Application context</p>
</li>
</ul>
<p>The goal is not necessarily to store everything as permanent knowledge.</p>
<p>Otherwise, the system may create a different problem:</p>
<p>«An enormous collection of information with no meaningful structure.»</p>
<p>Knowledge infrastructure should ideally help reduce noise, not preserve it forever.</p>
<hr />
<p>Confidence is useful, but confidence is not truth</p>
<p>AI extraction systems often produce confidence scores.</p>
<p>For example:</p>
<p>Claim: Payment Service uses PostgreSQL</p>
<p>Confidence: 0.94</p>
<p>That can be useful.</p>
<p>But confidence should not be confused with correctness.</p>
<p>The model may be very confident and completely wrong.</p>
<p>This is why I think confidence should be only one part of the knowledge model.</p>
<p>Other dimensions may include:</p>
<ul>
<li><p>Source authority</p>
</li>
<li><p>Evidence quality</p>
</li>
<li><p>Independent confirmation</p>
</li>
<li><p>Temporal validity</p>
</li>
<li><p>Contradiction</p>
</li>
<li><p>Verification state</p>
</li>
</ul>
<p>A better question may not be:</p>
<p>«How confident was the model?»</p>
<p>But:</p>
<p>«Why should the system believe this information?»</p>
<p>That is a much more difficult problem.</p>
<p>And it cannot be solved with a single score.</p>
<hr />
<p>Multiple sources can strengthen knowledge</p>
<p>Imagine three independent sources.</p>
<p>Architecture Document</p>
<p>«Payment Service uses CockroachDB.»</p>
<p>Deployment Configuration</p>
<p>«Database engine: CockroachDB»</p>
<p>Production Monitoring</p>
<p>«CockroachDB connection metrics detected.»</p>
<p>Individually, each source provides evidence.</p>
<p>Together, they create stronger support.</p>
<p>A Knowledge Object might now have:</p>
<p>Knowledge: Payment Service uses CockroachDB</p>
<p>Evidence: 3 independent sources</p>
<p>State: Verified</p>
<p>This creates another interesting possibility.</p>
<p>Knowledge can become stronger as supporting evidence accumulates.</p>
<p>The system does not simply store a fact.</p>
<p>It stores the history of why that fact is believed.</p>
<hr />
<p>Contradictions should trigger investigation</p>
<p>Now imagine a new document appears.</p>
<p>«Payment Service uses PostgreSQL.»</p>
<p>But the existing verified knowledge says:</p>
<p>«Payment Service uses CockroachDB.»</p>
<p>A simple retrieval system stores both.</p>
<p>A knowledge-aware ingestion process could detect a potential conflict.</p>
<p>But detecting a contradiction does not mean immediately rejecting the new information.</p>
<p>The new document may be:</p>
<ul>
<li><p>Historical</p>
</li>
<li><p>Outdated</p>
</li>
<li><p>Referring to another environment</p>
</li>
<li><p>Incorrect</p>
</li>
<li><p>More recent than existing information</p>
</li>
</ul>
<p>The system needs context.</p>
<p>For example:</p>
<p>Claim A: Payment Service uses PostgreSQL</p>
<p>Source Date: March 2026</p>
<p>Claim B: Payment Service uses CockroachDB</p>
<p>Source Date: August 2026</p>
<p>Now the contradiction may actually represent evolution.</p>
<p>Time resolves the conflict.</p>
<p>This is why ingestion, identity, relationships, time, and lifecycle cannot really be treated as isolated features.</p>
<p>They influence each other.</p>
<hr />
<p>The transformation is iterative</p>
<p>One mistake would be to imagine a perfect pipeline.</p>
<p>Something like:</p>
<p>«Document → Knowledge»</p>
<p>In reality, the transformation is likely iterative.</p>
<p>A more realistic process may look like this:</p>
<ol>
<li>Information is discovered</li>
</ol>
<p>A document, event, conversation, repository, or API produces information.</p>
<ol>
<li>Potential claims are extracted</li>
</ol>
<p>The system identifies statements that may represent useful knowledge.</p>
<ol>
<li>Entities are identified</li>
</ol>
<p>The system attempts to understand what the information refers to.</p>
<ol>
<li>Relationships are extracted</li>
</ol>
<p>Connections between entities and knowledge are identified.</p>
<ol>
<li>Evidence is preserved</li>
</ol>
<p>The system retains the original context and source.</p>
<ol>
<li>Knowledge is compared</li>
</ol>
<p>The new information is compared with existing knowledge.</p>
<ol>
<li>State evolves</li>
</ol>
<p>The knowledge may remain observed, become verified, be contradicted, or supersede existing knowledge.</p>
<p>This is not a one-time operation.</p>
<p>Knowledge continues to evolve.</p>
<hr />
<p>The same information can produce different knowledge</p>
<p>Context matters.</p>
<p>Consider this sentence:</p>
<p>«PostgreSQL is the primary database for the Payment Service.»</p>
<p>In one context, this might represent:</p>
<p>«Current production architecture.»</p>
<p>In another:</p>
<p>«Historical architecture documentation.»</p>
<p>In another:</p>
<p>«A planned but never deployed design.»</p>
<p>The text may look almost identical.</p>
<p>The meaning is different.</p>
<p>This is why extracting text alone is not enough.</p>
<p>The system needs to understand context such as:</p>
<ul>
<li><p>Source</p>
</li>
<li><p>Time</p>
</li>
<li><p>Environment</p>
</li>
<li><p>Document version</p>
</li>
<li><p>Surrounding information</p>
</li>
</ul>
<p>The same sentence can represent different knowledge depending on where and when it was observed.</p>
<hr />
<p>Knowledge ingestion is a systems problem</p>
<p>At this point, document ingestion begins to look less like a simple AI pipeline.</p>
<p>It becomes an infrastructure problem.</p>
<p>The system may need to manage:</p>
<ul>
<li><p>Large numbers of sources</p>
</li>
<li><p>Duplicate information</p>
</li>
<li><p>Conflicting claims</p>
</li>
<li><p>Entity resolution</p>
</li>
<li><p>Source versions</p>
</li>
<li><p>Evidence relationships</p>
</li>
<li><p>Knowledge updates</p>
</li>
<li><p>Historical knowledge</p>
</li>
<li><p>Concurrent ingestion</p>
</li>
</ul>
<p>This is one reason AIKOQL is interesting to me as a systems project.</p>
<p>The challenge is not simply:</p>
<p>«Can an LLM extract information from a document?»</p>
<p>We already know that it can.</p>
<p>The harder question is:</p>
<p>«What happens after extraction?»</p>
<p>Where does that information live?</p>
<p>How is it identified?</p>
<p>How is it connected?</p>
<p>How does it evolve?</p>
<p>How does it remain trustworthy over time?</p>
<p>That is where persistent knowledge infrastructure begins.</p>
<hr />
<p>From documents to knowledge infrastructure</p>
<p>The transformation I am exploring can be summarized simply:</p>
<p>«Documents contain information.»</p>
<p>«Extraction identifies potential knowledge.»</p>
<p>«Knowledge Objects preserve that information with context.»</p>
<p>«Evidence explains why the knowledge exists.»</p>
<p>«Relationships connect knowledge.»</p>
<p>«Time explains when it was relevant.»</p>
<p>«Lifecycle explains how it evolved.»</p>
<p>The final goal is not simply a smarter document store.</p>
<p>The goal is to explore whether information can become part of a persistent knowledge system.</p>
<p>A system where an AI agent can eventually ask:</p>
<p>«What do we know about this?»</p>
<p>And receive more than similar chunks.</p>
<p>It could receive knowledge with:</p>
<ul>
<li><p>Context</p>
</li>
<li><p>Evidence</p>
</li>
<li><p>State</p>
</li>
<li><p>History</p>
</li>
<li><p>Relationships</p>
</li>
</ul>
<p>That is the direction I believe is worth exploring.</p>
<hr />
<p>What this means for AI agents</p>
<p>This becomes particularly interesting when AI agents are involved.</p>
<p>An agent may continuously receive information from:</p>
<ul>
<li><p>APIs</p>
</li>
<li><p>Logs</p>
</li>
<li><p>Documents</p>
</li>
<li><p>Conversations</p>
</li>
<li><p>Other agents</p>
</li>
<li><p>Tools</p>
</li>
</ul>
<p>Without structure, the agent's memory can quickly become a large collection of disconnected observations.</p>
<p>The agent may remember:</p>
<p>«Something happened.»</p>
<p>But not necessarily:</p>
<p>«What happened?»</p>
<p>«Why did we believe it?»</p>
<p>«Did anything later contradict it?»</p>
<p>«Is it still relevant?»</p>
<p>Persistent knowledge infrastructure could potentially give agents a more disciplined memory model.</p>
<p>Instead of simply storing:</p>
<p>«Information I encountered»</p>
<p>the agent can build:</p>
<p>«Knowledge I observed, tested, supported, rejected, and evolved.»</p>
<p>That distinction may become increasingly important as agents operate for longer periods.</p>
<hr />
<p>The question I am exploring with AIKOQL</p>
<p>The document-to-knowledge pipeline raises a fundamental question.</p>
<p>«Should AI infrastructure treat documents as the final unit of knowledge?»</p>
<p>Or are documents simply one source from which knowledge can emerge?</p>
<p>I believe the second possibility is worth exploring.</p>
<p>Documents are important.</p>
<p>Chunks are useful.</p>
<p>Embeddings are powerful.</p>
<p>Vector search is valuable.</p>
<p>But none of them alone answer:</p>
<p>«What does the system actually know?»</p>
<p>That question requires another layer.</p>
<p>A layer where information can become:</p>
<ul>
<li><p>Identified</p>
</li>
<li><p>Connected</p>
</li>
<li><p>Supported</p>
</li>
<li><p>Time-aware</p>
</li>
<li><p>State-aware</p>
</li>
<li><p>Persistent</p>
</li>
</ul>
<p>That is the idea behind the Knowledge Object.</p>
<p>And it is one of the core ideas I am continuing to explore with AIKOQL.</p>
<hr />
<p>What comes next?</p>
<p>So far, this series has explored:</p>
<ul>
<li><p>Why AI-native infrastructure may need new abstractions</p>
</li>
<li><p>Knowledge Objects</p>
</li>
<li><p>Knowledge architecture</p>
</li>
<li><p>Relationships and provenance</p>
</li>
<li><p>Knowledge lifecycle</p>
</li>
<li><p>Evidence, contradiction, and time</p>
</li>
<li><p>Querying knowledge</p>
</li>
<li><p>Transforming documents into knowledge</p>
</li>
</ul>
<p>The next question is unavoidable:</p>
<p>«How does AIKOQL actually compare with the tools we already use?»</p>
<p>Because AIKOQL does not exist in isolation.</p>
<p>We already have:</p>
<ul>
<li><p>Relational databases</p>
</li>
<li><p>Document databases</p>
</li>
<li><p>Graph databases</p>
</li>
<li><p>Vector databases</p>
</li>
<li><p>Search engines</p>
</li>
<li><p>RAG frameworks</p>
</li>
</ul>
<p>The next post will explore:</p>
<p>Why Not Just Use a Vector Database? The Case for Knowledge Infrastructure Beyond RAG</p>
<p>I want to look honestly at where vector databases are excellent, where RAG is enough, and where a more persistent knowledge model may become useful.</p>
<p>Because the goal is not to replace every database.</p>
<p>The goal is to understand which problems existing systems already solve well — and which problems still need new infrastructure.</p>
<hr />
<p>AIKOQL is an evolving open project exploring persistent and context-aware knowledge infrastructure for AI systems. The concepts discussed in this article represent the current direction of exploration and will continue to evolve through implementation, testing, and real-world workloads.</p>
<p>What do you think?</p>
<p>«When an AI system reads a document, should it primarily remember the document itself — or should it extract and maintain the knowledge contained inside it?»</p>
]]></content:encoded></item><item><title><![CDATA[Querying Knowledge: What Should an AI-Native Query Language Look Like?]]></title><description><![CDATA[In the previous posts, I explored Knowledge Objects, provenance, relationships, evidence, and the lifecycle of knowledge.
But there is an obvious next question.
«If knowledge has its own structure, st]]></description><link>https://aikoql.hashnode.dev/querying-knowledge-what-should-an-ai-native-query-language-look-like</link><guid isPermaLink="true">https://aikoql.hashnode.dev/querying-knowledge-what-should-an-ai-native-query-language-look-like</guid><category><![CDATA[AI]]></category><category><![CDATA[knowledge]]></category><category><![CDATA[ai agents]]></category><category><![CDATA[SQL]]></category><category><![CDATA[Databases]]></category><category><![CDATA[Graph]]></category><category><![CDATA[RAG ]]></category><dc:creator><![CDATA[anckursingh]]></dc:creator><pubDate>Thu, 03 Sep 2026 04:43:06 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a95202018ec34dcbfdd2191/e9bcbe5b-b974-4e2a-bf81-f8b9fbdb3ac6.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the previous posts, I explored Knowledge Objects, provenance, relationships, evidence, and the lifecycle of knowledge.</p>
<p>But there is an obvious next question.</p>
<p>«If knowledge has its own structure, state, history, and relationships — how should we query it?»</p>
<p>This question is becoming increasingly interesting to me as AIKOQL evolves.</p>
<p>We already have powerful ways to query data.</p>
<p>SQL changed how applications interact with structured data.</p>
<p>Graph query languages made relationships easier to explore.</p>
<p>Search engines made text discoverable.</p>
<p>Vector search introduced semantic similarity as another retrieval primitive.</p>
<p>Each solves an important problem.</p>
<p>But AI applications are increasingly asking questions that sit somewhere between all of them.</p>
<p>For example:</p>
<p>«What do we currently know about this system?»</p>
<p>«What evidence supports this conclusion?»</p>
<p>«Is this information still valid?»</p>
<p>«What changed after the last deployment?»</p>
<p>«Show me knowledge derived from this document.»</p>
<p>«Are there conflicting claims about this component?»</p>
<p>These are not purely SQL questions.</p>
<p>They are not purely graph questions.</p>
<p>And semantic similarity alone cannot answer them reliably.</p>
<p>This is the problem I am exploring with AIKOQL.</p>
<hr />
<p>Data queries and knowledge queries are not always the same</p>
<p>Consider a traditional database query.</p>
<p>SELECT name, database FROM services WHERE name = 'payment-service';</p>
<p>The database returns the current value.</p>
<p>Simple.</p>
<p>Predictable.</p>
<p>Powerful.</p>
<p>Now consider an AI agent asking:</p>
<p>«What database does the Payment Service use?»</p>
<p>At first glance, this appears to be the same question.</p>
<p>But now imagine the system has accumulated knowledge over several years.</p>
<p>It may know that:</p>
<ul>
<li><p>The service previously used PostgreSQL.</p>
</li>
<li><p>A migration to another database was planned.</p>
</li>
<li><p>The migration was completed.</p>
</li>
<li><p>An old architecture document still references PostgreSQL.</p>
</li>
<li><p>A newer document references the current system.</p>
</li>
<li><p>One source was later invalidated.</p>
</li>
</ul>
<p>Suddenly, the question becomes more complicated.</p>
<p>The agent is not simply asking:</p>
<p>«What values exist?»</p>
<p>It may actually be asking:</p>
<p>«What is the most reliable and currently valid knowledge about this?»</p>
<p>That difference is important.</p>
<hr />
<p>Retrieval is easy. Selecting knowledge is harder.</p>
<p>Modern AI systems are already good at retrieving information.</p>
<p>A typical workflow might look like this:</p>
<ol>
<li><p>Convert a query into an embedding.</p>
</li>
<li><p>Search for similar content.</p>
</li>
<li><p>Retrieve the top results.</p>
</li>
<li><p>Give those results to an LLM.</p>
</li>
</ol>
<p>This works remarkably well for many use cases.</p>
<p>But semantic similarity does not understand whether information is:</p>
<ul>
<li><p>Current</p>
</li>
<li><p>Historical</p>
</li>
<li><p>Verified</p>
</li>
<li><p>Contradicted</p>
</li>
<li><p>Superseded</p>
</li>
<li><p>Based on strong evidence</p>
</li>
</ul>
<p>Imagine two pieces of knowledge.</p>
<p>Knowledge A</p>
<p>«The Payment Service uses PostgreSQL.»</p>
<p>Status: Superseded Semantic relevance: Very high</p>
<p>Knowledge B</p>
<p>«The Payment Service uses CockroachDB.»</p>
<p>Status: Verified and current Semantic relevance: Slightly lower</p>
<p>A purely semantic system might rank Knowledge A first.</p>
<p>But is that what the AI agent should see?</p>
<p>Probably not.</p>
<p>«The most relevant information is not always the most useful knowledge.»</p>
<p>This is where I think knowledge-aware querying becomes interesting.</p>
<hr />
<p>What if knowledge itself becomes queryable?</p>
<p>Imagine if an application could express more than:</p>
<p>Find information related to the Payment Service.</p>
<p>What if it could also express:</p>
<p>Find currently valid knowledge about the Payment Service.</p>
<p>Or:</p>
<p>Find verified knowledge about the Payment Service.</p>
<p>Or:</p>
<p>Find knowledge about the Payment Service and show the supporting evidence.</p>
<p>Or:</p>
<p>Find claims that contradict the current architecture.</p>
<p>These queries are not just about finding content.</p>
<p>They are about querying the properties of knowledge.</p>
<p>That is the direction I am exploring with AIKOQL.</p>
<hr />
<p>A query needs context</p>
<p>One of the interesting things about AI workloads is that the same question can require different answers depending on context.</p>
<p>Consider this question:</p>
<p>«What database does the Payment Service use?»</p>
<p>For a current architecture assistant, the answer should probably be the current database.</p>
<p>But an engineer investigating an incident from last year may need the historical answer.</p>
<p>The query is the same.</p>
<p>The context is different.</p>
<p>This suggests that knowledge queries may need dimensions beyond simple filtering.</p>
<p>For example:</p>
<ul>
<li><p>Current time</p>
</li>
<li><p>Historical time</p>
</li>
<li><p>Knowledge state</p>
</li>
<li><p>Evidence requirements</p>
</li>
<li><p>Source authority</p>
</li>
<li><p>Relationship scope</p>
</li>
</ul>
<p>Instead of asking only:</p>
<p>What matches?</p>
<p>The system may need to ask:</p>
<p>What matches in this context?</p>
<p>That is a subtle but important difference.</p>
<hr />
<p>Time should influence queries</p>
<p>Let's return to our database example.</p>
<p>The Payment Service used PostgreSQL until June 2026.</p>
<p>After a migration, it moved to CockroachDB.</p>
<p>Now consider two queries.</p>
<p>Query 1</p>
<p>«What database does the Payment Service use today?»</p>
<p>The expected answer:</p>
<p>«CockroachDB»</p>
<p>Query 2</p>
<p>«What database did the Payment Service use during an incident in March 2026?»</p>
<p>The expected answer:</p>
<p>«PostgreSQL»</p>
<p>Both answers can be correct.</p>
<p>The difference is time.</p>
<p>A knowledge-aware query system should be able to treat time as part of the query context.</p>
<p>Conceptually:</p>
<p>Find knowledge about: Payment Service database</p>
<p>Valid at: March 2026</p>
<p>versus:</p>
<p>Find knowledge about: Payment Service database</p>
<p>Valid at: Now</p>
<p>The content may be similar.</p>
<p>But the answer should be different.</p>
<p>«For knowledge systems, “when?” can be just as important as “what?”»</p>
<hr />
<p>Querying by knowledge state</p>
<p>The lifecycle of knowledge creates another interesting query dimension.</p>
<p>Imagine an AI agent researching a production incident.</p>
<p>The knowledge base contains:</p>
<ul>
<li><p>Verified conclusions</p>
</li>
<li><p>Unverified hypotheses</p>
</li>
<li><p>Contradicted claims</p>
</li>
<li><p>Superseded information</p>
</li>
</ul>
<p>The agent may not want all of them.</p>
<p>For example:</p>
<p>Find incident root causes</p>
<p>State: Verified</p>
<p>Or:</p>
<p>Find all hypotheses</p>
<p>State: Asserted</p>
<p>Or:</p>
<p>Find information about the deployment</p>
<p>Include: Contradicted knowledge</p>
<p>The last query is particularly interesting.</p>
<p>Sometimes an AI agent should avoid contradictory information.</p>
<p>Sometimes contradictory information is exactly what it needs.</p>
<p>For example:</p>
<p>«What explanations were investigated and rejected?»</p>
<p>That query could be extremely useful during debugging or investigation.</p>
<p>The important point is that the application should be able to choose.</p>
<hr />
<p>Evidence should also be queryable</p>
<p>Imagine an AI agent says:</p>
<p>«The migration was successful.»</p>
<p>That statement alone is not enough for every use case.</p>
<p>Someone may ask:</p>
<p>«Why do you believe that?»</p>
<p>The system should ideally be able to retrieve the evidence.</p>
<p>For example:</p>
<p>Knowledge: Migration completed successfully.</p>
<p>Supported by: Deployment records Database metrics Post-migration validation</p>
<p>Now imagine querying:</p>
<p>«Show me the evidence supporting this conclusion.»</p>
<p>Or:</p>
<p>«Find conclusions supported by this document.»</p>
<p>Or:</p>
<p>«Which knowledge depends on this source?»</p>
<p>These are not traditional document retrieval queries.</p>
<p>They involve traversing relationships between:</p>
<ul>
<li><p>Knowledge</p>
</li>
<li><p>Evidence</p>
</li>
<li><p>Sources</p>
</li>
<li><p>Claims</p>
</li>
</ul>
<p>This is where provenance and querying begin to intersect.</p>
<hr />
<p>Relationships change what a query can mean</p>
<p>Relationships are one of the most interesting parts of knowledge.</p>
<p>Suppose we know:</p>
<p>«Service A depends on Service B.»</p>
<p>And:</p>
<p>«Service B depends on Database C.»</p>
<p>An AI agent might ask:</p>
<p>«What infrastructure does Service A depend on?»</p>
<p>The answer may require traversing multiple relationships.</p>
<p>Or consider:</p>
<p>«Which knowledge was derived from this architecture document?»</p>
<p>Or:</p>
<p>«What knowledge was superseded by this decision?»</p>
<p>Or:</p>
<p>«What conclusions contradict this claim?»</p>
<p>These questions are relationship queries.</p>
<p>But they are not necessarily generic graph queries.</p>
<p>The relationships have meaning.</p>
<p>For example:</p>
<ul>
<li><p>"DEPENDS_ON"</p>
</li>
<li><p>"DERIVED_FROM"</p>
</li>
<li><p>"SUPPORTED_BY"</p>
</li>
<li><p>"CONTRADICTS"</p>
</li>
<li><p>"SUPERSEDES"</p>
</li>
</ul>
<p>The meaning of the relationship can influence how knowledge is retrieved and interpreted.</p>
<p>That is why I think relationships should become part of the query model rather than remaining hidden inside application logic.</p>
<hr />
<p>AI applications may need hybrid queries</p>
<p>One of the strongest ideas behind AIKOQL is that a useful knowledge query may combine multiple retrieval strategies.</p>
<p>Imagine asking:</p>
<p>«What is the current architecture of the Payment Service?»</p>
<p>The system might need to combine:</p>
<ol>
<li><p>Entity lookup</p>
</li>
<li><p>Relationship traversal</p>
</li>
<li><p>Temporal filtering</p>
</li>
<li><p>Knowledge state filtering</p>
</li>
<li><p>Semantic relevance</p>
</li>
<li><p>Evidence ranking</p>
</li>
</ol>
<p>That is not a single query primitive.</p>
<p>It is a composition.</p>
<p>Conceptually, the system might reason like this:</p>
<p>Find knowledge about Payment Service</p>
<p>↓</p>
<p>Prefer current knowledge</p>
<p>↓</p>
<p>Exclude invalidated information</p>
<p>↓</p>
<p>Prefer verified claims</p>
<p>↓</p>
<p>Follow architecture relationships</p>
<p>↓</p>
<p>Rank by relevance and evidence</p>
<p>This is where query planning becomes interesting.</p>
<p>The user may express intent at a high level.</p>
<p>The engine eventually needs to decide how to execute it efficiently.</p>
<hr />
<p>The application should not have to do everything</p>
<p>Today, many applications handle knowledge logic themselves.</p>
<p>The application may need to:</p>
<ol>
<li><p>Search a vector database.</p>
</li>
<li><p>Filter results.</p>
</li>
<li><p>Check metadata.</p>
</li>
<li><p>Look up relationships.</p>
</li>
<li><p>Retrieve source documents.</p>
</li>
<li><p>Remove outdated information.</p>
</li>
<li><p>Build context for the LLM.</p>
</li>
</ol>
<p>This often leads to increasingly complicated application code.</p>
<p>Something like:</p>
<p>Search</p>
<p>↓</p>
<p>Filter metadata</p>
<p>↓</p>
<p>Check timestamps</p>
<p>↓</p>
<p>Check state</p>
<p>↓</p>
<p>Follow relationships</p>
<p>↓</p>
<p>Retrieve evidence</p>
<p>↓</p>
<p>Build context</p>
<p>The more intelligence required around knowledge, the more this logic grows.</p>
<p>One of the questions AIKOQL is exploring is:</p>
<p>«Can some of this logic move closer to the knowledge infrastructure itself?»</p>
<p>Instead of every AI application independently deciding how to handle:</p>
<ul>
<li><p>Validity</p>
</li>
<li><p>Evidence</p>
</li>
<li><p>State</p>
</li>
<li><p>History</p>
</li>
<li><p>Relationships</p>
</li>
</ul>
<p>could these become first-class query primitives?</p>
<p>That could allow applications to focus more on what they want to know.</p>
<p>Rather than how to assemble knowledge manually.</p>
<hr />
<p>Query intent may matter more than query syntax</p>
<p>When we talk about query languages, we often immediately think about syntax.</p>
<p>SQL has syntax.</p>
<p>Graph query languages have syntax.</p>
<p>Search engines have query syntax.</p>
<p>But I think the more important question for AIKOQL is:</p>
<p>«What should a knowledge query be able to express?»</p>
<p>Syntax can evolve.</p>
<p>The primitives are more important.</p>
<p>Some of the concepts I believe an AI-native knowledge query system may need include:</p>
<p>Identity</p>
<p>Find a specific Knowledge Object or entity.</p>
<p>Relationships</p>
<p>Traverse meaningful connections between knowledge.</p>
<p>Time</p>
<p>Query knowledge as it existed at a particular point.</p>
<p>State</p>
<p>Filter based on verification, supersession, contradiction, or validity.</p>
<p>Evidence</p>
<p>Retrieve and evaluate supporting information.</p>
<p>Provenance</p>
<p>Understand where knowledge came from.</p>
<p>Relevance</p>
<p>Find conceptually related information.</p>
<p>The challenge is bringing these dimensions together without creating an unnecessarily complicated query language.</p>
<hr />
<p>A query language should not expose the complexity of the storage engine</p>
<p>There is another important principle here.</p>
<p>AI applications should not necessarily need to understand:</p>
<ul>
<li><p>Index structures</p>
</li>
<li><p>Storage layouts</p>
</li>
<li><p>Internal object representations</p>
</li>
<li><p>Relationship indexes</p>
</li>
<li><p>Temporal indexes</p>
</li>
</ul>
<p>Those are implementation concerns.</p>
<p>The application should ideally express intent.</p>
<p>For example:</p>
<p>«Find the current verified knowledge about the Payment Service.»</p>
<p>The engine can then decide:</p>
<ul>
<li><p>Which indexes to use</p>
</li>
<li><p>How to filter knowledge states</p>
</li>
<li><p>Whether temporal filtering is required</p>
</li>
<li><p>Whether relationships should be traversed</p>
</li>
<li><p>How to rank results</p>
</li>
</ul>
<p>This is similar to one of the most powerful ideas behind declarative databases.</p>
<p>The user says:</p>
<p>«What do I want?»</p>
<p>The engine decides:</p>
<p>«How should I get it?»</p>
<p>I believe this principle remains valuable for AI-native systems.</p>
<hr />
<p>Could natural language become part of the query interface?</p>
<p>AI introduces another interesting possibility.</p>
<p>An AI agent may not need to write a formal query language directly.</p>
<p>It could express intent in natural language.</p>
<p>For example:</p>
<p>«Show me everything we currently know about this service, but only include information supported by reliable evidence.»</p>
<p>A query system could potentially transform that into a structured query representation.</p>
<p>Conceptually:</p>
<p>Natural Language Request</p>
<p>↓</p>
<p>Structured Knowledge Query</p>
<p>↓</p>
<p>Query Planning</p>
<p>↓</p>
<p>Execution</p>
<p>↓</p>
<p>Knowledge Results</p>
<p>But there is an important distinction here.</p>
<p>Natural language is useful for expressing intent.</p>
<p>The internal query should still become structured.</p>
<p>Why?</p>
<p>Because knowledge infrastructure needs:</p>
<ul>
<li><p>Predictability</p>
</li>
<li><p>Validation</p>
</li>
<li><p>Optimization</p>
</li>
<li><p>Security</p>
</li>
<li><p>Explainability</p>
</li>
</ul>
<p>An AI agent should not be directly generating arbitrary storage operations without structure.</p>
<p>This suggests an interesting architecture.</p>
<p>«Natural language may be the interface. Structured knowledge queries may be the execution model.»</p>
<p>That is an area I believe deserves much more experimentation.</p>
<hr />
<p>Explainable queries could matter for AI</p>
<p>Another interesting challenge is explainability.</p>
<p>Suppose an AI agent asks:</p>
<p>«Why did you retrieve this information?»</p>
<p>A traditional retrieval system may simply return a relevance score.</p>
<p>But a knowledge-aware query system could potentially provide more context.</p>
<p>For example:</p>
<p>Selected because:</p>
<p>✓ Semantically relevant</p>
<p>✓ Currently valid</p>
<p>✓ Verified</p>
<p>✓ Supported by recent evidence</p>
<p>Or:</p>
<p>Excluded because:</p>
<p>✕ Superseded</p>
<p>✕ Historical only</p>
<p>✕ Source no longer valid</p>
<p>This could make AI retrieval more transparent.</p>
<p>The agent does not simply receive information.</p>
<p>It receives some understanding of why the information was selected.</p>
<p>That may become increasingly important as AI systems make more autonomous decisions.</p>
<hr />
<p>Querying knowledge is also a trust problem</p>
<p>The deeper I explore this area, the more I think querying knowledge is not only a retrieval problem.</p>
<p>It is also a trust problem.</p>
<p>Imagine two pieces of information.</p>
<p>Both are highly relevant.</p>
<p>But one comes from:</p>
<ul>
<li><p>A verified production system</p>
</li>
<li><p>A recent architecture document</p>
</li>
<li><p>Multiple supporting sources</p>
</li>
</ul>
<p>The other comes from:</p>
<ul>
<li><p>An old document</p>
</li>
<li><p>An unverified AI-generated inference</p>
</li>
<li><p>A source that was later invalidated</p>
</li>
</ul>
<p>Should both be ranked equally?</p>
<p>Probably not.</p>
<p>This suggests that a query engine may eventually need to consider something like knowledge quality.</p>
<p>Not necessarily as a single magic score.</p>
<p>But as multiple dimensions.</p>
<p>For example:</p>
<ul>
<li><p>Evidence strength</p>
</li>
<li><p>Source authority</p>
</li>
<li><p>Recency</p>
</li>
<li><p>Knowledge state</p>
</li>
<li><p>Contradiction</p>
</li>
<li><p>Temporal validity</p>
</li>
</ul>
<p>This is where knowledge querying becomes much more interesting than simply retrieving the top 10 results.</p>
<hr />
<p>The difficult part is not creating a language</p>
<p>Designing query syntax is relatively easy.</p>
<p>The difficult part is deciding what semantics should mean.</p>
<p>For example:</p>
<p>«What does “current knowledge” actually mean?»</p>
<p>Does it mean:</p>
<ul>
<li><p>Most recently created?</p>
</li>
<li><p>Most recently verified?</p>
</li>
<li><p>Currently valid?</p>
</li>
<li><p>Not superseded?</p>
</li>
<li><p>Highest confidence?</p>
</li>
</ul>
<p>Those are different things.</p>
<p>Similarly:</p>
<p>«What does “reliable knowledge” mean?»</p>
<p>Does it mean:</p>
<ul>
<li><p>Verified?</p>
</li>
<li><p>Supported by multiple sources?</p>
</li>
<li><p>From an authoritative source?</p>
</li>
<li><p>Not contradicted?</p>
</li>
</ul>
<p>Again, different interpretations.</p>
<p>This is why I believe the first step is not inventing syntax.</p>
<p>The first step is defining the semantics of knowledge.</p>
<p>The query language should emerge from those semantics.</p>
<hr />
<p>AIKOQL is exploring the primitives first</p>
<p>At this stage, my focus is not on declaring that AIKOQL has discovered the perfect query language.</p>
<p>It hasn't.</p>
<p>The project is exploring the underlying primitives that a knowledge system may need.</p>
<p>Questions such as:</p>
<ul>
<li><p>What is a Knowledge Object?</p>
</li>
<li><p>How should knowledge state work?</p>
</li>
<li><p>How should relationships be represented?</p>
</li>
<li><p>How should evidence connect to knowledge?</p>
</li>
<li><p>How should time influence retrieval?</p>
</li>
<li><p>How should historical knowledge coexist with current knowledge?</p>
</li>
<li><p>How should query planning work across these dimensions?</p>
</li>
</ul>
<p>The answers to these questions will eventually influence the query model.</p>
<p>And those answers need to be tested against real workloads.</p>
<hr />
<p>The bigger idea</p>
<p>Traditional databases gave us a powerful abstraction:</p>
<p>«Store data and query it.»</p>
<p>AI-native infrastructure may need another abstraction:</p>
<p>«Store knowledge and query it in context.»</p>
<p>The word context is important.</p>
<p>Because knowledge is rarely useful in isolation.</p>
<p>Its meaning can depend on:</p>
<ul>
<li><p>Time</p>
</li>
<li><p>Evidence</p>
</li>
<li><p>Relationships</p>
</li>
<li><p>Source</p>
</li>
<li><p>State</p>
</li>
<li><p>History</p>
</li>
</ul>
<p>An AI system that retrieves information without these dimensions may still work.</p>
<p>But it may not understand what the information represents.</p>
<p>And that difference could become increasingly important as AI systems move from answering questions to making decisions.</p>
<hr />
<p>What I am trying to learn with AIKOQL</p>
<p>AIKOQL is ultimately an exploration.</p>
<p>Can knowledge become a first-class infrastructure primitive?</p>
<p>Can applications query more than documents and vectors?</p>
<p>Can a system understand that some knowledge is:</p>
<ul>
<li><p>Current</p>
</li>
<li><p>Historical</p>
</li>
<li><p>Verified</p>
</li>
<li><p>Contradicted</p>
</li>
<li><p>Derived</p>
</li>
<li><p>Supported</p>
</li>
</ul>
<p>Can those properties influence retrieval?</p>
<p>Can AI agents spend less time assembling context and more time reasoning with it?</p>
<p>I don't think the industry has fully answered these questions yet.</p>
<p>And I certainly don't believe AIKOQL has all the answers.</p>
<p>But I think the questions are worth building toward.</p>
<p>Because as AI systems become more persistent and autonomous, the problem may shift from:</p>
<p>«How do we give an AI model information?»</p>
<p>to:</p>
<p>«How do we manage what an AI system knows?»</p>
<p>And eventually:</p>
<p>«How does an AI system know what it should trust?»</p>
<p>That is where knowledge infrastructure becomes interesting.</p>
<hr />
<p>What comes next</p>
<p>So far, this series has explored:</p>
<ul>
<li><p>Why AI-native infrastructure may need new abstractions</p>
</li>
<li><p>Knowledge Objects</p>
</li>
<li><p>Knowledge architecture</p>
</li>
<li><p>Relationships and provenance</p>
</li>
<li><p>Knowledge lifecycle</p>
</li>
<li><p>Evidence, contradiction, and time</p>
</li>
<li><p>Querying knowledge in context</p>
</li>
</ul>
<p>The next step should be more practical.</p>
<p>In the next post, I want to explore:</p>
<p>From Documents to Knowledge: How Information Becomes a Knowledge Object</p>
<p>A document is not automatically knowledge.</p>
<p>An embedding is not automatically understanding.</p>
<p>And a chunk of text is not necessarily something an AI agent should remember forever.</p>
<p>The next article will explore the journey from:</p>
<p>Raw Information → Extraction → Knowledge Object → Evidence → Relationships → Persistent Knowledge</p>
<p>And more importantly:</p>
<p>«What should happen when that information changes?»</p>
<hr />
<p>AIKOQL is an evolving open project exploring the infrastructure needed for persistent, structured, and context-aware knowledge. The query concepts discussed here are part of the project's design exploration and will continue to evolve through implementation, testing, and real-world workloads.</p>
<p>What do you think?</p>
<p>«Should AI applications continue assembling knowledge through separate databases, vector stores, graphs, and application logic — or do you think knowledge itself should eventually become a first-class query primitive?»</p>
]]></content:encoded></item><item><title><![CDATA[Knowledge Has a Lifecycle: Evidence, Contradiction, Supersession, and Time]]></title><description><![CDATA[In most software systems, we think about data as something that changes.
A database record is inserted.
Then it is updated.
Eventually, it may be deleted.
But knowledge behaves differently.
A piece of]]></description><link>https://aikoql.hashnode.dev/knowledge-has-a-lifecycle-evidence-contradiction-supersession-and-time</link><guid isPermaLink="true">https://aikoql.hashnode.dev/knowledge-has-a-lifecycle-evidence-contradiction-supersession-and-time</guid><category><![CDATA[AI]]></category><category><![CDATA[Databases]]></category><category><![CDATA[knowledge]]></category><category><![CDATA[RAG ]]></category><category><![CDATA[ai agents]]></category><dc:creator><![CDATA[anckursingh]]></dc:creator><pubDate>Wed, 02 Sep 2026 13:53:10 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a95202018ec34dcbfdd2191/63b91d40-681b-4cd8-85a8-04d574a91b7f.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In most software systems, we think about data as something that changes.</p>
<p>A database record is inserted.</p>
<p>Then it is updated.</p>
<p>Eventually, it may be deleted.</p>
<p>But knowledge behaves differently.</p>
<p>A piece of knowledge can be correct at one point in time and incorrect at another.</p>
<p>It can be supported by evidence.</p>
<p>It can be challenged by new information.</p>
<p>It can be replaced by something more accurate.</p>
<p>It can remain historically important even after it is no longer valid.</p>
<p>For AI systems, this distinction matters.</p>
<p>Because an AI agent does not simply need information.</p>
<p>It needs to understand:</p>
<p>«What should I believe right now?»</p>
<p>That question is much harder than retrieving the most relevant document.</p>
<p>And it leads to one of the ideas I believe is central to AI-native knowledge infrastructure:</p>
<p>«Knowledge has a lifecycle.»</p>
<p>This is the direction AIKOQL is exploring.</p>
<hr />
<p>Data changes. Knowledge evolves.</p>
<p>Consider a traditional database record.</p>
<p>Production Database</p>
<p>engine = PostgreSQL</p>
<p>Later, the company migrates.</p>
<p>UPDATE database SET engine = 'CockroachDB'</p>
<p>The current state is now:</p>
<p>Production Database</p>
<p>engine = CockroachDB</p>
<p>For many applications, this is exactly what we want.</p>
<p>But imagine an AI agent investigating an incident from six months ago.</p>
<p>It asks:</p>
<p>«What database was the Payment Service using when this incident occurred?»</p>
<p>The current record cannot answer that question.</p>
<p>The answer requires history.</p>
<p>Now imagine another question:</p>
<p>«Why did the organization migrate away from PostgreSQL?»</p>
<p>That requires more than history.</p>
<p>It may require:</p>
<ul>
<li><p>Architecture decisions</p>
</li>
<li><p>Performance measurements</p>
</li>
<li><p>Migration plans</p>
</li>
<li><p>Incident reports</p>
</li>
<li><p>Evidence</p>
</li>
<li><p>Relationships between decisions and events</p>
</li>
</ul>
<p>The information is no longer simply a changing value.</p>
<p>It has become knowledge with a history.</p>
<hr />
<p>Knowledge does not simply disappear</p>
<p>Suppose we have this statement:</p>
<p>«The Payment Service uses PostgreSQL.»</p>
<p>At one point, this may be true.</p>
<p>Later, the system migrates.</p>
<p>Now:</p>
<p>«The Payment Service uses CockroachDB.»</p>
<p>The first statement is no longer current.</p>
<p>But should it be deleted?</p>
<p>Probably not.</p>
<p>It may still be useful for:</p>
<ul>
<li><p>Historical analysis</p>
</li>
<li><p>Incident investigation</p>
</li>
<li><p>Auditing</p>
</li>
<li><p>Understanding migrations</p>
</li>
<li><p>Explaining old decisions</p>
</li>
<li><p>Reconstructing system state</p>
</li>
</ul>
<p>The better representation may be:</p>
<p>Knowledge #1</p>
<p>Statement: Payment Service uses PostgreSQL</p>
<p>Valid: January 2025 → June 2026</p>
<p>State: Superseded</p>
<p>And:</p>
<p>Knowledge #2</p>
<p>Statement: Payment Service uses CockroachDB</p>
<p>Valid: June 2026 → Present</p>
<p>State: Current</p>
<p>The old knowledge was not necessarily wrong.</p>
<p>It was simply no longer the current representation of reality.</p>
<p>This is an important distinction.</p>
<p>«Superseded does not mean false.»</p>
<p>It means something newer has replaced it for the relevant context.</p>
<hr />
<p>The lifecycle of knowledge</p>
<p>One of the models I am exploring for AIKOQL looks something like this:</p>
<pre><code class="language-plaintext">            OBSERVED

                │

                ▼

            ASSERTED

                │

                ▼

            VERIFIED

          ┌─────┴─────┐
          │           │
          ▼           ▼

     CONTRADICTED   SUPERSEDED

          │           │
          └─────┬─────┘
                │
                ▼

            INVALIDATED
</code></pre>
<p>This is not necessarily a rigid state machine.</p>
<p>Real knowledge can be more complicated.</p>
<p>But these states help describe something that traditional data models often leave to the application layer.</p>
<p>Let's explore each one.</p>
<hr />
<ol>
<li>Observed: Something was detected</li>
</ol>
<p>Knowledge often begins with an observation.</p>
<p>For example:</p>
<p>CPU utilization reached 95%.</p>
<p>This might come from:</p>
<ul>
<li><p>A monitoring system</p>
</li>
<li><p>A log</p>
</li>
<li><p>A sensor</p>
</li>
<li><p>An event</p>
</li>
<li><p>A document</p>
</li>
<li><p>An AI agent</p>
</li>
</ul>
<p>At this stage, the system knows that something was observed.</p>
<p>But observation does not automatically mean interpretation.</p>
<p>Consider:</p>
<p>Observed:</p>
<p>CPU utilization reached 95%.</p>
<p>We have not yet concluded:</p>
<p>«The system is unhealthy.»</p>
<p>That is an interpretation.</p>
<p>The distinction matters.</p>
<p>An observation might be:</p>
<p>Event: Deployment completed</p>
<p>Timestamp: 10:30 AM</p>
<p>Source: CI/CD System</p>
<p>The system has captured an event.</p>
<p>It has not yet decided what the event means.</p>
<hr />
<ol>
<li>Asserted: Someone makes a claim</li>
</ol>
<p>The next stage might be an assertion.</p>
<p>For example:</p>
<p>«The deployment caused the increase in CPU utilization.»</p>
<p>This is different from the observation.</p>
<p>We now have:</p>
<p>Observation:</p>
<p>CPU utilization increased to 95%.</p>
<p>Assertion:</p>
<p>The deployment caused the increase.</p>
<p>The assertion may come from:</p>
<ul>
<li><p>A human engineer</p>
</li>
<li><p>An AI agent</p>
</li>
<li><p>An automated rule</p>
</li>
<li><p>Another system</p>
</li>
</ul>
<p>But the fact that someone asserted something does not make it true.</p>
<p>This is important for AI systems.</p>
<p>LLMs are very good at generating assertions.</p>
<p>They are not automatically evidence.</p>
<p>An AI agent might conclude:</p>
<p>«The database is the root cause.»</p>
<p>That should not immediately become verified knowledge.</p>
<p>Instead:</p>
<p>Knowledge State:</p>
<p>Asserted</p>
<p>The claim exists.</p>
<p>Its status is explicit.</p>
<hr />
<ol>
<li>Verified: Knowledge supported by evidence</li>
</ol>
<p>A claim becomes more useful when it is supported.</p>
<p>For example:</p>
<p>Assertion:</p>
<p>The deployment caused the CPU spike.</p>
<p>Now the system finds:</p>
<p>Evidence:</p>
<p>CPU increased immediately after deployment.</p>
<p>AND</p>
<p>Rollback restored normal CPU utilization.</p>
<p>The knowledge may now move toward:</p>
<p>State:</p>
<p>Verified</p>
<p>But verification itself can be contextual.</p>
<p>Who verified it?</p>
<p>What evidence was used?</p>
<p>How authoritative was the evidence?</p>
<p>Was it independently confirmed?</p>
<p>A useful knowledge representation might look like:</p>
<p>Knowledge:</p>
<p>Deployment caused CPU spike.</p>
<p>State:</p>
<p>Verified</p>
<p>Evidence:</p>
<p>Monitoring metrics Deployment event Rollback event</p>
<p>Verified By:</p>
<p>Operations Team</p>
<p>Verified At:</p>
<p>2026-09-02</p>
<p>The important idea is not simply storing a boolean:</p>
<p>verified = true</p>
<p>The system should ideally understand:</p>
<p>«Why is this knowledge considered verified?»</p>
<p>Evidence is part of the knowledge.</p>
<hr />
<p>Evidence should be connected, not copied</p>
<p>Imagine a Knowledge Object:</p>
<p>Knowledge:</p>
<p>The Payment Service has a 99.9% SLA.</p>
<p>The system could simply store:</p>
<p>evidence = "Architecture Document"</p>
<p>But that loses detail.</p>
<p>A stronger model may connect knowledge to specific evidence.</p>
<p>Knowledge Object</p>
<pre><code class="language-plaintext">  │

  ▼
</code></pre>
<p>SUPPORTED_BY</p>
<pre><code class="language-plaintext">  │

  ▼
</code></pre>
<p>Evidence Object</p>
<pre><code class="language-plaintext">  │

  ├── Source Document
  │
  ├── Section
  │
  ├── Table
  │
  └── Timestamp
</code></pre>
<p>This allows questions such as:</p>
<p>«What evidence supports this?»</p>
<p>«Is the evidence still current?»</p>
<p>«Has the source changed?»</p>
<p>«Does another source disagree?»</p>
<p>The evidence itself can therefore have a lifecycle.</p>
<p>This is where knowledge infrastructure becomes recursive.</p>
<p>Knowledge is connected to evidence.</p>
<p>Evidence has provenance.</p>
<p>Provenance can change.</p>
<p>Sources can become outdated.</p>
<p>The system needs to preserve those relationships.</p>
<hr />
<ol>
<li>Contradicted: Knowledge meets conflicting information</li>
</ol>
<p>One of the most important states for AI systems may be contradiction.</p>
<p>Imagine two sources.</p>
<p>Source A:</p>
<p>«The Payment Service uses PostgreSQL.»</p>
<p>Source B:</p>
<p>«The Payment Service uses CockroachDB.»</p>
<p>A naive retrieval system may simply return both documents.</p>
<p>The LLM receives conflicting context.</p>
<p>Then we hope the model resolves it correctly.</p>
<p>But the system itself knows something important:</p>
<p>«These statements conflict.»</p>
<p>That conflict should potentially become explicit.</p>
<p>Knowledge A</p>
<p>Payment Service USES PostgreSQL</p>
<pre><code class="language-plaintext">    │

    │ CONTRADICTS

    ▼
</code></pre>
<p>Knowledge B</p>
<p>Payment Service USES CockroachDB</p>
<p>Now contradiction is not hidden inside retrieved text.</p>
<p>It becomes part of the knowledge model.</p>
<p>This allows an AI agent to ask:</p>
<p>«Is there conflicting knowledge about this entity?»</p>
<p>Or:</p>
<p>«What information challenges this conclusion?»</p>
<p>That is a much stronger capability than simply retrieving similar chunks.</p>
<hr />
<p>Contradictions are not always errors</p>
<p>This is important.</p>
<p>A contradiction does not necessarily mean one source is wrong.</p>
<p>Consider:</p>
<p>Document A:</p>
<p>Production database is PostgreSQL.</p>
<p>Date: January 2026</p>
<p>And:</p>
<p>Document B:</p>
<p>Production database is CockroachDB.</p>
<p>Date: August 2026</p>
<p>These statements appear contradictory.</p>
<p>But they may both be historically correct.</p>
<p>The missing dimension is time.</p>
<p>This is why:</p>
<p>«Contradiction without temporal context can be misleading.»</p>
<p>The system needs to ask:</p>
<p>What was true?</p>
<p>When was it true?</p>
<p>A knowledge model that understands only content may treat these statements as conflicting.</p>
<p>A temporal knowledge model can understand:</p>
<p>January 2026:</p>
<p>PostgreSQL</p>
<p>and:</p>
<p>August 2026:</p>
<p>CockroachDB</p>
<p>as an evolution.</p>
<p>This is where contradiction and time become deeply connected.</p>
<hr />
<ol>
<li>Superseded: New knowledge replaces old knowledge</li>
</ol>
<p>Supersession is different from contradiction.</p>
<p>Consider:</p>
<p>Knowledge A:</p>
<p>Payment Service uses PostgreSQL.</p>
<p>Later:</p>
<p>Knowledge B:</p>
<p>Payment Service uses CockroachDB.</p>
<p>If Knowledge B represents a migration that replaced the previous state:</p>
<p>Knowledge B</p>
<pre><code class="language-plaintext">  │

  │ SUPERSEDES

  ▼
</code></pre>
<p>Knowledge A</p>
<p>The old knowledge remains historically useful.</p>
<p>But retrieval for current context should prefer:</p>
<p>Knowledge B</p>
<p>This creates an important rule for AI systems.</p>
<p>«Current relevance is not the same as semantic relevance.»</p>
<p>A vector search might consider both statements highly relevant.</p>
<p>But a knowledge-aware system should be able to distinguish:</p>
<p>Current Knowledge</p>
<p>from:</p>
<p>Historical Knowledge</p>
<p>The relationship between the two matters.</p>
<hr />
<ol>
<li>Invalidated: Knowledge is determined to be false or unusable</li>
</ol>
<p>Superseded knowledge may still have been correct.</p>
<p>Invalidated knowledge is different.</p>
<p>For example:</p>
<p>Assertion:</p>
<p>Database migration completed successfully.</p>
<p>Later, investigation reveals:</p>
<p>The migration did not complete.</p>
<p>The monitoring event was incorrect.</p>
<p>The original assertion may now become:</p>
<p>State:</p>
<p>Invalidated</p>
<p>The knowledge is preserved.</p>
<p>But it should not be used as reliable context.</p>
<p>This distinction is especially important for AI-generated knowledge.</p>
<p>An AI system may infer something incorrectly.</p>
<p>Instead of silently deleting the inference, we can preserve:</p>
<p>Knowledge:</p>
<p>Deployment caused database failure.</p>
<p>State:</p>
<p>Invalidated</p>
<p>Reason:</p>
<p>Root cause investigation found configuration error.</p>
<p>This creates historical traceability.</p>
<p>The system can understand:</p>
<p>«What was previously believed?»</p>
<p>and:</p>
<p>«Why was that belief rejected?»</p>
<p>That can become extremely valuable for long-running AI systems.</p>
<hr />
<p>Time is not metadata</p>
<p>One of the biggest ideas behind knowledge lifecycle is that time should not always be treated as an optional metadata field.</p>
<p>Consider:</p>
<p>created_at updated_at</p>
<p>These fields tell us when a database record changed.</p>
<p>But knowledge may require different time dimensions.</p>
<p>For example:</p>
<p>Observed At</p>
<p>When was this information observed?</p>
<p>Asserted At</p>
<p>When was the claim made?</p>
<p>Valid From</p>
<p>When did this knowledge become valid?</p>
<p>Valid Until</p>
<p>When did it stop being valid?</p>
<p>Verified At</p>
<p>When was it verified?</p>
<p>These timestamps describe different events.</p>
<p>Consider:</p>
<p>Knowledge:</p>
<p>Production database is CockroachDB.</p>
<p>Observed:</p>
<p>August 10</p>
<p>Asserted:</p>
<p>August 11</p>
<p>Verified:</p>
<p>August 15</p>
<p>Valid From:</p>
<p>August 1</p>
<p>The knowledge was verified after it became valid.</p>
<p>This is completely possible.</p>
<p>A database record's "updated_at" field cannot represent this distinction alone.</p>
<hr />
<p>Knowledge exists in time</p>
<p>A useful way to think about a Knowledge Object is:</p>
<p>Knowledge</p>
<pre><code class="language-plaintext">  +
</code></pre>
<p>Time</p>
<pre><code class="language-plaintext">  +
</code></pre>
<p>Context</p>
<p>Without time, the system might ask:</p>
<p>«Is this true?»</p>
<p>With time, it can ask:</p>
<p>«Was this true at the time relevant to my decision?»</p>
<p>That is a fundamentally better question.</p>
<p>For AI agents, this matters enormously.</p>
<p>Imagine an agent investigating:</p>
<p>Incident:</p>
<p>July 15</p>
<p>The agent should not necessarily retrieve:</p>
<p>Current Infrastructure</p>
<p>It should retrieve:</p>
<p>Infrastructure Valid On July 15</p>
<p>This changes the meaning of retrieval.</p>
<hr />
<p>Knowledge retrieval should be lifecycle-aware</p>
<p>Traditional retrieval might look like:</p>
<p>Query</p>
<p>↓</p>
<p>Semantic Search</p>
<p>↓</p>
<p>Top K Results</p>
<p>A lifecycle-aware retrieval model could become:</p>
<p>Query</p>
<p>↓</p>
<p>Semantic Relevance</p>
<p>Knowledge State</p>
<p>Temporal Validity</p>
<p>Evidence</p>
<p>Authority</p>
<p>↓</p>
<p>Contextually Relevant Knowledge</p>
<p>Now imagine a query:</p>
<p>«What database does the Payment Service use?»</p>
<p>The system might find:</p>
<p>Knowledge A</p>
<p>PostgreSQL</p>
<p>State: Superseded</p>
<p>Relevance: 0.97</p>
<p>And:</p>
<p>Knowledge B</p>
<p>CockroachDB</p>
<p>State: Verified</p>
<p>Current: Yes</p>
<p>Relevance: 0.92</p>
<p>Pure semantic ranking might prefer Knowledge A.</p>
<p>Lifecycle-aware retrieval should probably prefer Knowledge B.</p>
<p>This is one of the central reasons I believe knowledge state should be operational.</p>
<hr />
<p>Knowledge state should influence AI reasoning</p>
<p>Imagine an AI agent receives three pieces of information.</p>
<p>Knowledge A</p>
<p>State: Verified</p>
<p>Knowledge B</p>
<p>State: Asserted</p>
<p>Knowledge C</p>
<p>State: Contradicted</p>
<p>The agent should not treat them equally.</p>
<p>This does not necessarily mean:</p>
<p>Verified = absolute truth</p>
<p>But it does mean the system can communicate epistemic context.</p>
<p>The agent can reason:</p>
<p>Knowledge A:</p>
<p>Strongly supported.</p>
<p>Knowledge B:</p>
<p>Possible but unverified.</p>
<p>Knowledge C:</p>
<p>Conflicting information exists.</p>
<p>This is much more useful than giving the model three paragraphs and asking it to figure everything out.</p>
<hr />
<p>The lifecycle creates lineage</p>
<p>Once knowledge has states and transitions, history becomes valuable.</p>
<p>For example:</p>
<p>Observed</p>
<p>│</p>
<p>▼</p>
<p>Asserted</p>
<p>│</p>
<p>▼</p>
<p>Verified</p>
<p>│</p>
<p>▼</p>
<p>Superseded</p>
<p>Each transition can answer:</p>
<p>Who changed the state?</p>
<p>Why?</p>
<p>Based on what evidence?</p>
<p>When?</p>
<p>This creates knowledge lineage.</p>
<p>Knowledge Object</p>
<pre><code class="language-plaintext">   │

   ▼
</code></pre>
<p>Lifecycle History</p>
<pre><code class="language-plaintext">   │
</code></pre>
<p>┌─────┼─────┬─────┐ │ │ │ │</p>
<p>Observed Asserted Verified Superseded</p>
<p>An AI agent can potentially understand not only:</p>
<p>«What do we currently know?»</p>
<p>But:</p>
<p>«How did we arrive at this knowledge?»</p>
<p>That is a very different capability.</p>
<hr />
<p>Knowledge can have competing states</p>
<p>Real systems are rarely clean.</p>
<p>Imagine two teams independently investigating an incident.</p>
<p>Team A concludes:</p>
<p>Root Cause:</p>
<p>Database overload</p>
<p>Team B concludes:</p>
<p>Root Cause:</p>
<p>Configuration error</p>
<p>Both claims may exist.</p>
<p>Neither may be verified yet.</p>
<p>A knowledge system should not necessarily force one answer immediately.</p>
<p>Instead:</p>
<p>Claim A</p>
<p>State: Asserted</p>
<p>Claim B</p>
<p>State: Asserted</p>
<p>Relationship:</p>
<p>Potentially Contradictory</p>
<p>The system can preserve uncertainty.</p>
<p>Later evidence may verify one claim.</p>
<p>Or both may be partially correct.</p>
<p>This is another reason a knowledge lifecycle cannot always be a simple linear state machine.</p>
<p>Knowledge may branch.</p>
<p>It may conflict.</p>
<p>It may converge.</p>
<p>It may remain uncertain.</p>
<p>AI systems need infrastructure that can represent this.</p>
<hr />
<p>The lifecycle of AI-generated knowledge</p>
<p>This becomes particularly important when AI agents create knowledge.</p>
<p>Imagine an autonomous agent.</p>
<p>Agent</p>
<p>↓</p>
<p>Observes Logs</p>
<p>↓</p>
<p>Finds Pattern</p>
<p>↓</p>
<p>Creates Hypothesis</p>
<p>↓</p>
<p>Tests Hypothesis</p>
<p>↓</p>
<p>Records Result</p>
<p>The resulting knowledge might move through:</p>
<p>OBSERVED</p>
<p>The CPU increased.</p>
<p>Then:</p>
<p>ASSERTED</p>
<p>The deployment caused the increase.</p>
<p>Then:</p>
<p>VERIFIED</p>
<p>Rollback reduced CPU utilization.</p>
<p>Or:</p>
<p>INVALIDATED</p>
<p>Rollback did not affect CPU.</p>
<p>This creates a memory system that is different from chat history.</p>
<p>The agent is not simply storing messages.</p>
<p>It is storing:</p>
<ul>
<li><p>Observations</p>
</li>
<li><p>Hypotheses</p>
</li>
<li><p>Evidence</p>
</li>
<li><p>Conclusions</p>
</li>
<li><p>Failed conclusions</p>
</li>
</ul>
<p>That history can help the agent make better decisions in the future.</p>
<hr />
<p>Failed knowledge is still useful</p>
<p>This is an idea I find particularly interesting.</p>
<p>If an agent tries something and it fails, should the information disappear?</p>
<p>Suppose an agent concludes:</p>
<p>Restarting Service X fixes the issue.</p>
<p>It tries.</p>
<p>The issue remains.</p>
<p>The conclusion becomes:</p>
<p>Invalidated</p>
<p>But that failed knowledge is valuable.</p>
<p>The agent now knows:</p>
<p>«This approach was tried.»</p>
<p>«It did not solve the problem.»</p>
<p>Future reasoning can avoid repeating the same mistake.</p>
<p>This is how experience becomes useful.</p>
<p>A long-running AI system may need to remember:</p>
<p>What worked.</p>
<p>But also:</p>
<p>What did not work.</p>
<p>Knowledge lifecycle can help preserve both.</p>
<hr />
<p>From static memory to evolving knowledge</p>
<p>Traditional AI memory often focuses on persistence.</p>
<p>Conversation</p>
<p>↓</p>
<p>Store Memory</p>
<p>↓</p>
<p>Retrieve Memory</p>
<p>But persistent memory alone is not enough.</p>
<p>The memory may become outdated.</p>
<p>Incorrect.</p>
<p>Contradicted.</p>
<p>Irrelevant.</p>
<p>A knowledge lifecycle introduces another layer.</p>
<p>Experience</p>
<p>↓</p>
<p>Observation</p>
<p>↓</p>
<p>Assertion</p>
<p>↓</p>
<p>Evidence</p>
<p>↓</p>
<p>Verification</p>
<p>↓</p>
<p>Knowledge</p>
<p>↓</p>
<p>Supersession or Invalidation</p>
<p>The system does not simply remember.</p>
<p>It learns how its knowledge changes.</p>
<p>That is a much more difficult problem.</p>
<p>But it may also be a more useful one.</p>
<hr />
<p>The architecture implication</p>
<p>Once lifecycle becomes a first-class concept, it affects the entire system.</p>
<pre><code class="language-plaintext">             KNOWLEDGE OBJECT

                     │

    ┌────────────────┼────────────────┐
    │                │                │

    ▼                ▼                ▼

 CONTENT          EVIDENCE          STATE

    │                │                │

    └────────────────┼────────────────┘
                     │

                     ▼

                   TIME

                     │

                     ▼

               LINEAGE
</code></pre>
<p>This means lifecycle cannot simply be added later as:</p>
<p>status = "verified"</p>
<p>It influences:</p>
<ul>
<li><p>Storage</p>
</li>
<li><p>Indexing</p>
</li>
<li><p>Queries</p>
</li>
<li><p>Retrieval</p>
</li>
<li><p>Relationships</p>
</li>
<li><p>Transactions</p>
</li>
<li><p>History</p>
</li>
<li><p>Agent reasoning</p>
</li>
</ul>
<p>That is why I see knowledge lifecycle as infrastructure.</p>
<hr />
<p>The AIKOQL question</p>
<p>The question I am exploring is:</p>
<p>«What happens when knowledge state becomes a first-class primitive instead of application metadata?»</p>
<p>Can retrieval improve?</p>
<p>Can AI agents make better decisions?</p>
<p>Can historical context become easier to query?</p>
<p>Can contradictions become visible?</p>
<p>Can evidence influence reasoning?</p>
<p>Can invalidated knowledge prevent repeated mistakes?</p>
<p>Can superseded knowledge preserve history without contaminating current answers?</p>
<p>These are the questions that AIKOQL needs to answer through implementation and testing.</p>
<hr />
<p>Knowledge is dynamic</p>
<p>The core idea behind this post is simple:</p>
<p>«Knowledge is not static.»</p>
<p>It is:</p>
<p>Observed.</p>
<p>Then interpreted.</p>
<p>Then asserted.</p>
<p>Then supported.</p>
<p>Then challenged.</p>
<p>Then replaced.</p>
<p>Or invalidated.</p>
<p>A knowledge system that only stores the latest answer loses part of the story.</p>
<p>But for AI systems, the story may matter.</p>
<p>Because an AI agent needs more than:</p>
<p>«What do we know?»</p>
<p>It may need to ask:</p>
<p>«Why do we know it?»</p>
<p>«How certain are we?»</p>
<p>«What supports it?»</p>
<p>«What challenges it?»</p>
<p>«Was it true before?»</p>
<p>«Is it true now?»</p>
<p>«What replaced it?»</p>
<p>Those questions define the lifecycle of knowledge.</p>
<p>And they are a central part of what I am exploring with AIKOQL.</p>
<hr />
<p>What comes next</p>
<p>The next challenge is to make this lifecycle practical.</p>
<p>It is easy to define states conceptually.</p>
<p>It is much harder to design a system that can efficiently answer:</p>
<p>«What knowledge is currently valid?»</p>
<p>«What changed after this event?»</p>
<p>«Which conclusions depend on this source?»</p>
<p>«What evidence supports this claim?»</p>
<p>«Which knowledge was superseded?»</p>
<p>«What should an AI agent retrieve right now?»</p>
<p>So in the next post, I want to go deeper into a practical question:</p>
<p>Querying Knowledge: What Should an AI-Native Query Language Look Like?</p>
<p>Because once we have Knowledge Objects with:</p>
<ul>
<li><p>State</p>
</li>
<li><p>Evidence</p>
</li>
<li><p>Time</p>
</li>
<li><p>Relationships</p>
</li>
<li><p>Provenance</p>
</li>
</ul>
<p>we need a way to query them.</p>
<p>Traditional SQL is powerful.</p>
<p>Graph queries are powerful.</p>
<p>Vector search is powerful.</p>
<p>But can a query language directly express:</p>
<p>«Find the currently valid knowledge.»</p>
<p>«Show me evidence for this claim.»</p>
<p>«Exclude superseded information.»</p>
<p>«Traverse derived knowledge.»</p>
<p>«Prefer verified sources.»</p>
<p>That is the next part of the AIKOQL journey.</p>
<hr />
<p>AIKOQL is an evolving open project. The lifecycle concepts discussed here represent an architectural direction being explored and tested. The exact state model, transitions, and storage semantics may evolve as the project encounters real workloads and implementation constraints.</p>
<p>If you work with AI agents, databases, knowledge graphs, RAG systems, or long-running autonomous systems, I would love your perspective.</p>
<p>«Should AI systems explicitly model the lifecycle of knowledge, or should evidence, contradictions, and temporal validity remain the responsibility of the application layer?»</p>
]]></content:encoded></item><item><title><![CDATA[Building AIKOQL in Rust: The Architecture Behind an AI-Native Knowledge Engine]]></title><description><![CDATA[In the previous posts, I explored why I am building AIKOQL, the idea of Knowledge Objects, where AIKOQL fits in the modern data ecosystem, and how information might move from documents into structured]]></description><link>https://aikoql.hashnode.dev/building-aikoql-in-rust-the-architecture-behind-an-ai-native-knowledge-engine</link><guid isPermaLink="true">https://aikoql.hashnode.dev/building-aikoql-in-rust-the-architecture-behind-an-ai-native-knowledge-engine</guid><category><![CDATA[AI]]></category><category><![CDATA[Databases]]></category><category><![CDATA[RAG ]]></category><category><![CDATA[knowledge]]></category><category><![CDATA[ai agents]]></category><dc:creator><![CDATA[anckursingh]]></dc:creator><pubDate>Wed, 02 Sep 2026 13:26:38 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a95202018ec34dcbfdd2191/691a0c9a-32d9-469f-8895-592fd392db55.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the previous posts, I explored why I am building AIKOQL, the idea of Knowledge Objects, where AIKOQL fits in the modern data ecosystem, and how information might move from documents into structured knowledge.</p>
<p>But an idea is only useful if it can survive implementation.</p>
<p>Eventually, every abstraction reaches the same set of questions:</p>
<p>«How is it stored?»</p>
<p>«How is it indexed?»</p>
<p>«How is it queried?»</p>
<p>«How does it behave under concurrent workloads?»</p>
<p>«How does it recover from failure?»</p>
<p>«How does it evolve without losing existing data?»</p>
<p>For AIKOQL, those questions are particularly important.</p>
<p>A knowledge system cannot simply be a collection of objects in memory.</p>
<p>If AI agents are going to depend on knowledge, that knowledge needs to be:</p>
<ul>
<li><p>Durable</p>
</li>
<li><p>Queryable</p>
</li>
<li><p>Concurrent</p>
</li>
<li><p>Traceable</p>
</li>
<li><p>Evolvable</p>
</li>
<li><p>Efficient to retrieve</p>
</li>
</ul>
<p>That is why I chose to explore AIKOQL as a systems project built in Rust.</p>
<p>This post looks at the architectural direction behind AIKOQL and the principles shaping its implementation.</p>
<hr />
<p>Why Rust?</p>
<p>Choosing Rust was not primarily about following a trend.</p>
<p>AIKOQL sits in an interesting space between:</p>
<ul>
<li><p>Database systems</p>
</li>
<li><p>Storage engines</p>
</li>
<li><p>Query engines</p>
</li>
<li><p>Knowledge infrastructure</p>
</li>
<li><p>AI applications</p>
</li>
</ul>
<p>Those systems tend to care deeply about:</p>
<ul>
<li><p>Memory usage</p>
</li>
<li><p>Concurrency</p>
</li>
<li><p>Latency</p>
</li>
<li><p>Reliability</p>
</li>
<li><p>Data safety</p>
</li>
</ul>
<p>Rust provides a strong foundation for exploring these requirements.</p>
<p>Its ownership model makes memory safety a first-class concern without requiring garbage collection.</p>
<p>Its concurrency model makes it possible to build highly concurrent systems while reducing classes of data races that traditionally require careful discipline in systems programming.</p>
<p>And its performance characteristics make it suitable for workloads involving:</p>
<ul>
<li><p>Persistent storage</p>
</li>
<li><p>Indexing</p>
</li>
<li><p>Query execution</p>
</li>
<li><p>Concurrent reads and writes</p>
</li>
<li><p>Streaming</p>
</li>
<li><p>Data processing</p>
</li>
</ul>
<p>For AIKOQL, Rust is not simply an implementation language.</p>
<p>It influences how the system is designed.</p>
<p>The goal is to build a knowledge engine that can eventually handle knowledge as a long-lived infrastructure concern rather than as temporary context passed between AI calls.</p>
<hr />
<p>AIKOQL is a systems problem</p>
<p>It is tempting to think of an AI knowledge system as:</p>
<p>Document ↓ Embedding ↓ Vector Database ↓ LLM</p>
<p>But the problem becomes significantly more complicated when knowledge has its own lifecycle.</p>
<p>Consider a single piece of knowledge.</p>
<p>The Payment Service depends on the Transaction Database.</p>
<p>If AIKOQL stores this as a Knowledge Object, several additional questions emerge.</p>
<p>Knowledge Object</p>
<p>Content: Payment Service depends on Transaction Database</p>
<pre><code class="language-plaintext">      +
</code></pre>
<p>Identity</p>
<pre><code class="language-plaintext">      +
</code></pre>
<p>Relationships</p>
<pre><code class="language-plaintext">      +
</code></pre>
<p>Provenance</p>
<pre><code class="language-plaintext">      +
</code></pre>
<p>Evidence</p>
<pre><code class="language-plaintext">      +
</code></pre>
<p>Temporal Context</p>
<pre><code class="language-plaintext">      +
</code></pre>
<p>Knowledge State</p>
<pre><code class="language-plaintext">      +
</code></pre>
<p>Lineage</p>
<p>Now the system must potentially support queries such as:</p>
<p>«What does the Payment Service currently depend on?»</p>
<p>«Show me the source supporting this relationship.»</p>
<p>«Was this relationship ever invalidated?»</p>
<p>«What knowledge was derived from this source?»</p>
<p>«What other knowledge contradicts it?»</p>
<p>«Which knowledge became outdated after a system migration?»</p>
<p>This is no longer simply a document retrieval problem.</p>
<p>It becomes a storage and query architecture problem.</p>
<hr />
<p>The architectural direction</p>
<p>At a high level, I think of AIKOQL as several cooperating layers.</p>
<pre><code class="language-plaintext">                CLIENTS &amp; AI AGENTS

                       │

                       ▼

                 AIKOQL QUERY LAYER
                       │
                       ▼
                QUERY PARSING &amp; PLANNING
                       │
                       ▼
                  EXECUTION ENGINE
                       │
        ┌──────────────┼──────────────┐
        │              │              │
        ▼              ▼              ▼

   KNOWLEDGE       INDEXING       TRANSACTION
    OPERATIONS      OPERATIONS      OPERATIONS

        │              │              │
        └──────────────┼──────────────┘
                       │
                       ▼

               STORAGE &amp; DURABILITY
                       │
                       ▼

                 RUST FOUNDATION
</code></pre>
<p>This is a conceptual architecture rather than a claim that every layer is complete.</p>
<p>The implementation is evolving.</p>
<p>But these layers represent the engineering direction I believe AIKOQL needs.</p>
<hr />
<p>Layer 1: The Knowledge Model</p>
<p>At the center of AIKOQL is the Knowledge Object.</p>
<p>A traditional storage engine might focus primarily on records.</p>
<p>A document store might focus on documents.</p>
<p>A graph database might focus on nodes and edges.</p>
<p>AIKOQL is exploring a different first-class abstraction:</p>
<p>«The Knowledge Object.»</p>
<p>Conceptually:</p>
<pre><code class="language-plaintext">                KNOWLEDGE OBJECT

              ┌─────────────────┐
              │                 │
              │     Identity    │
              │                 │
              ├─────────────────┤
              │     Content     │
              ├─────────────────┤
              │  Relationships  │
              ├─────────────────┤
              │   Provenance    │
              ├─────────────────┤
              │    Evidence     │
              ├─────────────────┤
              │ Temporal Context│
              ├─────────────────┤
              │ Knowledge State │
              ├─────────────────┤
              │     Lineage     │
              │                 │
              └─────────────────┘
</code></pre>
<p>The important architectural question is:</p>
<p>«How do we store these dimensions efficiently without forcing every query to understand every piece of metadata?»</p>
<p>A query for a Knowledge Object's identity should not necessarily require a deep traversal through provenance.</p>
<p>A relationship query should not need to scan unrelated content.</p>
<p>A temporal query should be able to operate on temporal information directly.</p>
<p>This is why the storage and indexing architecture becomes important.</p>
<hr />
<p>Knowledge is multidimensional</p>
<p>One of the reasons AIKOQL is technically interesting is that Knowledge Objects are not naturally one-dimensional.</p>
<p>A single Knowledge Object may need to participate in several access patterns.</p>
<p>For example:</p>
<p>Knowledge Object │ ├── Lookup by ID │ ├── Lookup by entity │ ├── Traverse relationships │ ├── Search by time │ ├── Retrieve provenance │ ├── Filter by state │ └── Search semantically</p>
<p>A single storage structure is unlikely to optimize all of these operations equally well.</p>
<p>This creates a familiar systems problem.</p>
<p>«How should the data be represented for the primary access patterns of the system?»</p>
<p>The answer may involve multiple indexes and specialized representations.</p>
<p>Conceptually:</p>
<pre><code class="language-plaintext">                KNOWLEDGE OBJECT
                       │
      ┌────────────────┼────────────────┐
      │                │                │
      ▼                ▼                ▼

  Object Index    Relationship Index   Temporal Index

      │                │                │

      └────────────────┼────────────────┘
                       │
                Additional Indexes
                       │
         ┌─────────────┼─────────────┐
         │             │             │
         ▼             ▼             ▼

     State Index   Provenance     Semantic
                     Index         Index
</code></pre>
<p>The goal is not to create an index for every possible query.</p>
<p>The challenge is to understand which access patterns are fundamental to knowledge workloads.</p>
<hr />
<p>Storage is more than persistence</p>
<p>At the lowest level, AIKOQL needs a reliable way to persist knowledge.</p>
<p>But storage is not simply:</p>
<p>Write bytes to disk.</p>
<p>A database-like system must eventually consider:</p>
<ul>
<li><p>Durability</p>
</li>
<li><p>Atomicity</p>
</li>
<li><p>Recovery</p>
</li>
<li><p>Consistency</p>
</li>
<li><p>Crash safety</p>
</li>
<li><p>Snapshots</p>
</li>
<li><p>Historical state</p>
</li>
</ul>
<p>Imagine an AI agent creates a new piece of knowledge.</p>
<p>The operation might involve more than one update.</p>
<p>Create Knowledge Object</p>
<pre><code class="language-plaintext">    │

    ├── Persist Object
    │
    ├── Update Object Index
    │
    ├── Create Relationships
    │
    ├── Update Relationship Index
    │
    └── Record Provenance
</code></pre>
<p>What happens if the system crashes halfway through?</p>
<p>We do not want:</p>
<p>Knowledge Object: EXISTS</p>
<p>Relationship: MISSING</p>
<p>Provenance: MISSING</p>
<p>when those pieces are expected to form a consistent operation.</p>
<p>This is where transaction semantics become important.</p>
<hr />
<p>Transactions and knowledge consistency</p>
<p>Knowledge systems can have complicated relationships.</p>
<p>Consider:</p>
<p>Knowledge A</p>
<pre><code class="language-plaintext">  │

  ▼
</code></pre>
<p>DERIVED_FROM</p>
<pre><code class="language-plaintext">  │

  ▼
</code></pre>
<p>Knowledge B</p>
<p>Now imagine a transaction creates both objects and the relationship between them.</p>
<p>Ideally:</p>
<p>BEGIN</p>
<p>Create Knowledge A</p>
<p>Create Knowledge B</p>
<p>Create Relationship</p>
<p>COMMIT</p>
<p>The system should not expose a partially completed state as if it were valid knowledge.</p>
<p>This is one reason I believe database principles remain important for AI-native infrastructure.</p>
<p>AI workloads may be new.</p>
<p>But:</p>
<ul>
<li><p>Atomicity</p>
</li>
<li><p>Consistency</p>
</li>
<li><p>Isolation</p>
</li>
<li><p>Durability</p>
</li>
</ul>
<p>are still valuable properties.</p>
<p>AI does not eliminate the need for reliable systems.</p>
<p>In many cases, it makes reliability even more important.</p>
<hr />
<p>Concurrency is fundamental</p>
<p>AIKOQL is also being designed with concurrent workloads in mind.</p>
<p>Imagine an enterprise knowledge system receiving:</p>
<ul>
<li><p>New documents</p>
</li>
<li><p>Knowledge updates</p>
</li>
<li><p>Agent experiences</p>
</li>
<li><p>User queries</p>
</li>
<li><p>Background indexing operations</p>
</li>
<li><p>Relationship updates</p>
</li>
</ul>
<p>at the same time.</p>
<p>Conceptually:</p>
<pre><code class="language-plaintext">            ┌──────────────┐
            │   AI Agent   │
            └──────┬───────┘
                   │
                   ▼

            ┌──────────────┐
            │    Query     │
            └──────┬───────┘
                   │
                   │
</code></pre>
<p>┌───────────────┐ ▼ ┌────────────────┐ │ Ingestion │ ──▶ AIKOQL ◀── Knowledge API │ └───────────────┘ │ └────────────────┘ │ ▼</p>
<pre><code class="language-plaintext">            ┌──────────────┐
            │   Storage    │
            └──────────────┘
</code></pre>
<p>Multiple operations may be interacting with the same knowledge.</p>
<p>One process may be:</p>
<ul>
<li>Reading an object</li>
</ul>
<p>while another is:</p>
<ul>
<li>Updating its state</li>
</ul>
<p>while another is:</p>
<ul>
<li>Adding a relationship</li>
</ul>
<p>while another is:</p>
<ul>
<li>Building an index</li>
</ul>
<p>Concurrency therefore cannot be treated as an afterthought.</p>
<p>It needs to influence the architecture from the beginning.</p>
<p>Rust provides useful primitives for building this safely, but language safety alone does not solve database consistency.</p>
<p>The architecture still needs to answer:</p>
<p>«What can happen concurrently?»</p>
<p>«What needs isolation?»</p>
<p>«What can be eventually consistent?»</p>
<p>«What operations require atomicity?»</p>
<p>These are systems design questions, not language questions.</p>
<hr />
<p>Querying knowledge requires a query model</p>
<p>Storage is only useful if applications can access what they store.</p>
<p>For AIKOQL, that leads to another interesting challenge.</p>
<p>What should a query language for knowledge look like?</p>
<p>Traditional SQL is excellent at querying structured data.</p>
<p>Graph query languages are optimized around traversals.</p>
<p>Search engines optimize relevance.</p>
<p>Vector systems optimize similarity.</p>
<p>Knowledge workloads may require combinations.</p>
<p>For example:</p>
<p>Find knowledge about:</p>
<p>Payment Service</p>
<p>WHERE:</p>
<p>State = Verified</p>
<p>AND:</p>
<p>Valid At = Current Time</p>
<p>AND:</p>
<p>Source Authority &gt;= High</p>
<p>ORDER BY:</p>
<p>Relevance</p>
<p>Or:</p>
<p>Find all knowledge:</p>
<p>DERIVED_FROM</p>
<p>this Architecture Document</p>
<p>WHERE:</p>
<p>Knowledge State != Superseded</p>
<p>Or:</p>
<p>Find semantically related knowledge</p>
<p>BUT:</p>
<p>Exclude Contradicted Knowledge</p>
<p>AND:</p>
<p>Prefer Verified Evidence</p>
<p>This is where AIKOQL's query model becomes interesting.</p>
<p>The goal is not necessarily to replace existing query languages.</p>
<p>The question is:</p>
<p>«Can knowledge concepts become first-class query primitives?»</p>
<p>Instead of manually joining multiple metadata structures in the application layer, could a query directly express:</p>
<ul>
<li><p>Knowledge state</p>
</li>
<li><p>Temporal validity</p>
</li>
<li><p>Provenance</p>
</li>
<li><p>Evidence</p>
</li>
<li><p>Relationships</p>
</li>
<li><p>Semantic relevance</p>
</li>
</ul>
<p>That is one of the architectural directions I am exploring.</p>
<hr />
<p>From query to execution</p>
<p>A query is only the beginning.</p>
<p>Internally, the system needs to transform a request into operations.</p>
<p>Conceptually:</p>
<pre><code class="language-plaintext">            AIKOQL QUERY

                 │

                 ▼

               PARSER

                 │

                 ▼

             QUERY MODEL

                 │

                 ▼

                PLANNER

                 │

      ┌──────────┼──────────┐
      │          │          │
      ▼          ▼          ▼

  Object      Relationship  Temporal
  Lookup       Traversal    Filtering

      │          │          │

      └──────────┼──────────┘
                 │

                 ▼

             EXECUTION

                 │

                 ▼

               RESULTS
</code></pre>
<p>The planner eventually becomes responsible for deciding:</p>
<p>«Which indexes should be used?»</p>
<p>«Which operations should happen first?»</p>
<p>«Can filters be pushed down?»</p>
<p>«Can the system avoid unnecessary traversal?»</p>
<p>«Can multiple operations execute efficiently?»</p>
<p>These are classic query engine problems.</p>
<p>But the workload is shaped by the Knowledge Object model.</p>
<hr />
<p>Relationships are not an afterthought</p>
<p>One architectural principle behind AIKOQL is that relationships should be treated as operational data.</p>
<p>Consider:</p>
<p>Knowledge A</p>
<pre><code class="language-plaintext"> │

 ├── DERIVED_FROM ───▶ Knowledge B
 │
 ├── CONTRADICTS ────▶ Knowledge C
 │
 └── SUPERSEDES ─────▶ Knowledge D
</code></pre>
<p>These are not all equivalent relationships.</p>
<p>Each relationship has different semantics.</p>
<p>For example:</p>
<p>DERIVED_FROM</p>
<p>This can establish lineage.</p>
<p>CONTRADICTS</p>
<p>This can influence knowledge state and retrieval.</p>
<p>SUPERSEDES</p>
<p>This can influence temporal interpretation.</p>
<p>A relationship-aware architecture therefore needs to preserve more than:</p>
<p>Node A → Node B</p>
<p>It may need:</p>
<p>Relationship</p>
<p>Type: SUPERSEDES</p>
<p>Source: Knowledge A</p>
<p>Target: Knowledge B</p>
<p>Created At: Timestamp</p>
<p>Evidence: Reference</p>
<p>State: Active</p>
<p>That makes relationship storage and indexing an important architectural concern.</p>
<hr />
<p>Temporal knowledge changes the storage problem</p>
<p>One of the most interesting aspects of knowledge infrastructure is time.</p>
<p>Consider these two statements:</p>
<p>January 2025:</p>
<p>The production database is PostgreSQL.</p>
<p>and:</p>
<p>June 2026:</p>
<p>The production database is CockroachDB.</p>
<p>Both statements may be historically correct.</p>
<p>The question becomes:</p>
<p>«Which one is true now?»</p>
<p>A traditional storage system might simply update the record.</p>
<p>Before:</p>
<p>PostgreSQL</p>
<pre><code class="language-plaintext">    ↓
</code></pre>
<p>UPDATE</p>
<pre><code class="language-plaintext">    ↓
</code></pre>
<p>CockroachDB</p>
<p>But if the historical information matters, the system needs to preserve more context.</p>
<p>Knowledge 1</p>
<p>Value: PostgreSQL</p>
<p>Valid: January 2025 → June 2026</p>
<p>State: Superseded</p>
<p>Knowledge 2</p>
<p>Value: CockroachDB</p>
<p>Valid: June 2026 → Present</p>
<p>State: Current</p>
<p>Now queries can become temporal.</p>
<p>What was the production database in March 2026?</p>
<p>and:</p>
<p>What is the production database now?</p>
<p>may legitimately return different answers.</p>
<p>This is one reason temporal indexes and historical state become architectural concerns rather than simple metadata fields.</p>
<hr />
<p>Provenance is also infrastructure</p>
<p>Provenance is often treated as metadata.</p>
<p>But for AIKOQL, I believe provenance can become part of the operational model.</p>
<p>Consider:</p>
<p>Knowledge Object</p>
<pre><code class="language-plaintext">  │

  ▼
</code></pre>
<p>Derived From</p>
<pre><code class="language-plaintext">  │

  ▼
</code></pre>
<p>Document Fragment</p>
<pre><code class="language-plaintext">  │

  ▼
</code></pre>
<p>Document Section</p>
<pre><code class="language-plaintext">  │

  ▼
</code></pre>
<p>Original Source</p>
<p>This lineage allows the system to answer:</p>
<p>«Where did this knowledge come from?»</p>
<p>But it also creates additional possibilities.</p>
<p>If the source changes:</p>
<p>Original Source Updated</p>
<pre><code class="language-plaintext">      │

      ▼
</code></pre>
<p>Find Derived Knowledge</p>
<pre><code class="language-plaintext">      │

      ▼
</code></pre>
<p>Re-evaluate Knowledge</p>
<p>If a source is invalidated:</p>
<p>Source Invalidated</p>
<pre><code class="language-plaintext">      │

      ▼
</code></pre>
<p>Find Dependent Knowledge</p>
<pre><code class="language-plaintext">      │

      ▼
</code></pre>
<p>Mark for Review</p>
<p>This makes provenance useful beyond explainability.</p>
<p>It becomes part of knowledge maintenance.</p>
<p>And that means provenance needs efficient representation and traversal.</p>
<hr />
<p>Knowledge state is a systems concern</p>
<p>AI systems often operate with uncertainty.</p>
<p>A piece of extracted information may be:</p>
<p>Observed</p>
<p>but not:</p>
<p>Verified</p>
<p>A previously verified statement may later become:</p>
<p>Superseded</p>
<p>Or:</p>
<p>Contradicted</p>
<p>Or:</p>
<p>Invalidated</p>
<p>This creates a lifecycle.</p>
<pre><code class="language-plaintext">         OBSERVED

             │

             ▼

         ASSERTED

             │

             ▼

         VERIFIED

             │

      ┌──────┴──────┐
      │             │
      ▼             ▼

 SUPERSEDED    CONTRADICTED

      │             │
      └──────┬──────┘
             │
             ▼

        HISTORICAL
</code></pre>
<p>The exact state model is still evolving.</p>
<p>But the important architectural principle is this:</p>
<p>«Knowledge state should influence how knowledge is stored, queried, and retrieved.»</p>
<p>An AI system asking:</p>
<p>What is the current verified architecture?</p>
<p>should not receive superseded information simply because it happens to be semantically similar.</p>
<p>That requires state-aware retrieval.</p>
<hr />
<p>Durability and recovery</p>
<p>A knowledge system that cannot recover reliably is not useful infrastructure.</p>
<p>Eventually, AIKOQL needs mechanisms for dealing with:</p>
<ul>
<li><p>Process crashes</p>
</li>
<li><p>Partial writes</p>
</li>
<li><p>Corruption</p>
</li>
<li><p>Recovery</p>
</li>
<li><p>Restart</p>
</li>
<li><p>Historical state</p>
</li>
</ul>
<p>Conceptually, this leads to familiar database techniques:</p>
<p>Write Operation</p>
<pre><code class="language-plaintext">   │

   ▼
</code></pre>
<p>Durable Record</p>
<pre><code class="language-plaintext">   │

   ▼
</code></pre>
<p>Apply Changes</p>
<pre><code class="language-plaintext">   │

   ▼
</code></pre>
<p>Checkpoint</p>
<pre><code class="language-plaintext">   │

   ▼
</code></pre>
<p>Recover if Required</p>
<p>The exact implementation and mechanisms can evolve.</p>
<p>But the principle is clear.</p>
<p>A Knowledge Object should not disappear because an application process restarts.</p>
<p>If AI agents are going to build long-term knowledge, persistence must be a fundamental capability.</p>
<hr />
<p>Why the architecture needs layers</p>
<p>One reason I am deliberately thinking about AIKOQL in layers is extensibility.</p>
<p>AI knowledge infrastructure is still evolving rapidly.</p>
<p>New requirements will emerge.</p>
<p>New AI workloads will appear.</p>
<p>New retrieval methods will become useful.</p>
<p>A tightly coupled architecture makes experimentation difficult.</p>
<p>A layered architecture allows the system to evolve.</p>
<p>Conceptually:</p>
<pre><code class="language-plaintext">    APPLICATIONS &amp; AGENTS
             │
             ▼
          AIKOQL API
             │
             ▼
         QUERY ENGINE
             │
             ▼
      KNOWLEDGE OPERATIONS
             │
    ┌────────┼────────┐
    │        │        │
    ▼        ▼        ▼

  Objects  Relations  Time

    │        │        │
    └────────┼────────┘
             │
             ▼

         STORAGE CORE
             │
             ▼

        RUST RUNTIME
</code></pre>
<p>Each layer should ideally have clear responsibilities.</p>
<p>That makes it easier to evolve:</p>
<ul>
<li><p>Storage implementations</p>
</li>
<li><p>Indexes</p>
</li>
<li><p>Query operators</p>
</li>
<li><p>Knowledge representations</p>
</li>
<li><p>Ingestion systems</p>
</li>
<li><p>APIs</p>
</li>
</ul>
<p>without rewriting everything above them.</p>
<hr />
<p>Performance is not just about speed</p>
<p>When people talk about systems programming, performance often means:</p>
<p>«How many operations per second?»</p>
<p>That matters.</p>
<p>But for AIKOQL, performance also means:</p>
<p>Predictability</p>
<p>Can the system behave consistently under load?</p>
<p>Efficiency</p>
<p>Can knowledge be stored without excessive duplication?</p>
<p>Concurrency</p>
<p>Can multiple agents and applications interact safely?</p>
<p>Scalability</p>
<p>Can the architecture grow beyond a single workload?</p>
<p>Latency</p>
<p>Can relevant knowledge be retrieved quickly enough for AI applications?</p>
<p>Recovery</p>
<p>Can the system return to a consistent state after failure?</p>
<p>These properties are interconnected.</p>
<p>A fast system that loses knowledge during a crash is not reliable.</p>
<p>A strongly consistent system that cannot support concurrent workloads may not scale.</p>
<p>A flexible system that requires scanning everything for every query will eventually hit performance limits.</p>
<p>Architecture is about balancing these constraints.</p>
<hr />
<p>AIKOQL is being built through experimentation</p>
<p>I do not want to present the architecture as finished.</p>
<p>It is not.</p>
<p>AIKOQL is an evolving systems project.</p>
<p>Some ideas will survive implementation.</p>
<p>Others will change when tested against:</p>
<ul>
<li><p>Real workloads</p>
</li>
<li><p>Concurrency</p>
</li>
<li><p>Storage constraints</p>
</li>
<li><p>Query performance</p>
</li>
<li><p>Memory pressure</p>
</li>
<li><p>Failure scenarios</p>
</li>
</ul>
<p>That is exactly why implementation and testing are important.</p>
<p>An architecture diagram is easy to draw.</p>
<p>A storage engine is much harder to build.</p>
<p>A query language is easy to design.</p>
<p>An optimizer is much harder.</p>
<p>A Knowledge Object model can look elegant conceptually.</p>
<p>But it needs to prove itself against real data.</p>
<p>The engineering journey is therefore not about defending an initial design.</p>
<p>It is about testing assumptions.</p>
<hr />
<p>The role of benchmarking</p>
<p>As AIKOQL evolves, I believe benchmarking will become an important part of the project.</p>
<p>Not simply:</p>
<p>«How fast is AIKOQL?»</p>
<p>But:</p>
<p>«Which workloads is AIKOQL actually good at?»</p>
<p>For example:</p>
<p>Object lookup</p>
<p>How efficiently can the system retrieve Knowledge Objects?</p>
<p>Relationship traversal</p>
<p>How does it perform when traversing knowledge relationships?</p>
<p>Temporal queries</p>
<p>How efficiently can historical knowledge be queried?</p>
<p>Concurrent workloads</p>
<p>How does the system behave under simultaneous reads and writes?</p>
<p>Ingestion</p>
<p>How efficiently can knowledge be created from incoming information?</p>
<p>Storage growth</p>
<p>How does storage behave as knowledge history increases?</p>
<p>These tests will help separate:</p>
<p>Interesting architecture</p>
<p>from:</p>
<p>Useful infrastructure</p>
<p>And that distinction matters.</p>
<hr />
<p>The bigger architectural idea</p>
<p>At its core, AIKOQL is exploring whether AI systems need a different kind of infrastructure layer.</p>
<p>Not simply:</p>
<p>Storage</p>
<p>but:</p>
<p>Persistent Knowledge Infrastructure</p>
<p>A system that can eventually understand:</p>
<p>What do we know?</p>
<p>Where did we learn it?</p>
<p>Why do we believe it?</p>
<p>When was it valid?</p>
<p>What contradicts it?</p>
<p>What replaced it?</p>
<p>What was derived from it?</p>
<p>That is a more complicated problem than storing documents.</p>
<p>It is also a more complicated problem than vector search.</p>
<p>And it is a more complicated problem than graph traversal alone.</p>
<p>The architecture of AIKOQL is an attempt to bring these dimensions together into a system that AI applications can query and build upon.</p>
<hr />
<p>Where Rust fits into that vision</p>
<p>Rust provides the systems foundation.</p>
<pre><code class="language-plaintext">                AIKOQL

                   │

                   ▼

            Knowledge Engine

                   │

      ┌────────────┼────────────┐
      │            │            │
      ▼            ▼            ▼

   Storage       Querying    Concurrency

      │            │            │

      └────────────┼────────────┘
                   │
                   ▼

                 RUST
</code></pre>
<p>Rust does not automatically make AIKOQL:</p>
<ul>
<li><p>Fast</p>
</li>
<li><p>Correct</p>
</li>
<li><p>Scalable</p>
</li>
<li><p>Durable</p>
</li>
</ul>
<p>Architecture still determines those properties.</p>
<p>But Rust provides a strong environment for exploring them.</p>
<p>Its focus on:</p>
<ul>
<li><p>Memory safety</p>
</li>
<li><p>Concurrency safety</p>
</li>
<li><p>Zero-cost abstractions</p>
</li>
<li><p>Explicit ownership</p>
</li>
<li><p>Performance</p>
</li>
</ul>
<p>aligns well with the kind of infrastructure AIKOQL is trying to become.</p>
<hr />
<p>The road ahead</p>
<p>The architecture is only one part of the project.</p>
<p>The next challenge is proving that these abstractions create real value.</p>
<p>That means testing AIKOQL against actual workloads.</p>
<p>Not just asking:</p>
<p>«Does the API work?»</p>
<p>But:</p>
<p>«Does the Knowledge Object model make certain problems easier?»</p>
<p>«Can knowledge state improve retrieval?»</p>
<p>«Can provenance improve trust and explainability?»</p>
<p>«Can relationships improve AI reasoning?»</p>
<p>«Can historical knowledge be managed efficiently?»</p>
<p>«Can the system support real concurrent workloads?»</p>
<p>Those are the questions that will determine whether AIKOQL becomes useful infrastructure.</p>
<p>And those answers cannot come from architecture diagrams.</p>
<p>They have to come from implementation.</p>
<p>Testing.</p>
<p>Failures.</p>
<p>Iteration.</p>
<p>And real workloads.</p>
<hr />
<p>What comes next</p>
<p>In the next post, I want to move into one of the most interesting problems for AI systems:</p>
<p>Knowledge Has a Lifecycle: Evidence, Contradiction, Supersession, and Time</p>
<p>Most databases store the current state of data.</p>
<p>But knowledge is different.</p>
<p>Something can be:</p>
<ul>
<li><p>True today</p>
</li>
<li><p>False tomorrow</p>
</li>
<li><p>Valid historically</p>
</li>
<li><p>Contradicted by new evidence</p>
</li>
<li><p>Superseded by better information</p>
</li>
</ul>
<p>For AI agents, understanding those differences may be essential.</p>
<p>Because retrieving information is one problem.</p>
<p>Knowing whether that information is still valid is another.</p>
<p>And that is where the lifecycle of knowledge becomes important.</p>
<hr />
<p>AIKOQL is an evolving open project. The architectural concepts discussed here reflect the current engineering direction and are being continuously tested and refined as the implementation develops. The goal is not to claim that every component is complete, but to openly explore what infrastructure an AI-native knowledge system may require.</p>
<p>If you build databases, storage engines, AI infrastructure, query engines, or agent systems, I would love your perspective.</p>
<p>«What do you think is the hardest systems problem in building persistent knowledge infrastructure for AI: storage, querying, consistency, provenance, or something else entirely?»</p>
]]></content:encoded></item><item><title><![CDATA[From Documents to Knowledge Objects: Rethinking AI Data Ingestion]]></title><description><![CDATA[In the previous posts, I introduced why I started building AIKOQL, what a Knowledge Object is, and where I believe AIKOQL fits alongside relational databases, document stores, vector databases, and gr]]></description><link>https://aikoql.hashnode.dev/from-documents-to-knowledge-objects-rethinking-ai-data-ingestion</link><guid isPermaLink="true">https://aikoql.hashnode.dev/from-documents-to-knowledge-objects-rethinking-ai-data-ingestion</guid><category><![CDATA[Artificial Intelligence]]></category><category><![CDATA[AI]]></category><category><![CDATA[knowledge]]></category><category><![CDATA[Databases]]></category><dc:creator><![CDATA[anckursingh]]></dc:creator><pubDate>Tue, 01 Sep 2026 19:10:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a95202018ec34dcbfdd2191/5f730c96-2ba1-4dde-a1d0-d2ad88e7c287.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the previous posts, I introduced why I started building AIKOQL, what a Knowledge Object is, and where I believe AIKOQL fits alongside relational databases, document stores, vector databases, and graphs.</p>
<p>But there is a practical question behind all of this:</p>
<blockquote>
<p><strong>Where do Knowledge Objects come from?</strong></p>
</blockquote>
<p>For most AI systems today, the answer starts with ingestion.</p>
<p>Documents are uploaded.</p>
<p>Text is extracted.</p>
<p>The content is split into chunks.</p>
<p>Embeddings are generated.</p>
<p>The chunks are stored in a vector database.</p>
<p>And when a user asks a question, the system retrieves the most similar chunks.</p>
<p>This approach has made Retrieval-Augmented Generation possible at scale.</p>
<p>It is also useful.</p>
<p>But I believe there is an important problem hiding inside this pipeline.</p>
<blockquote>
<p><strong>A document is not just text.</strong></p>
</blockquote>
<p>And if we destroy its structure during ingestion, we may also destroy some of the meaning required to turn information into knowledge.</p>
<p>That is one of the problems AIKOQL is exploring.</p>
<hr />
<h1>The traditional AI ingestion pipeline</h1>
<p>A simplified ingestion pipeline often looks like this:</p>
<pre><code class="language-text">Document

   ↓

Extract Text

   ↓

Split Into Chunks

   ↓

Generate Embeddings

   ↓

Vector Database

   ↓

Retrieve Top K Chunks

   ↓

LLM
</code></pre>
<p>This approach works surprisingly well for many use cases.</p>
<p>But consider what can happen during the process.</p>
<p>Imagine a technical document containing:</p>
<ul>
<li><p>Headings</p>
</li>
<li><p>Paragraphs</p>
</li>
<li><p>Tables</p>
</li>
<li><p>Diagrams</p>
</li>
<li><p>Charts</p>
</li>
<li><p>Images</p>
</li>
<li><p>Formulas</p>
</li>
<li><p>Code</p>
</li>
<li><p>References</p>
</li>
<li><p>Footnotes</p>
</li>
</ul>
<p>After text extraction and chunking, much of that structure may disappear.</p>
<p>A table becomes text.</p>
<p>A diagram becomes a caption.</p>
<p>A chart becomes an image with little or no semantic representation.</p>
<p>A formula becomes an isolated string.</p>
<p>A heading may become separated from the content it describes.</p>
<p>A relationship between two sections may disappear.</p>
<p>The result is still searchable.</p>
<p>But is it still the same knowledge?</p>
<p>That is the question.</p>
<hr />
<h1>Documents are more than text</h1>
<p>Consider a simple architecture document.</p>
<p>It contains the statement:</p>
<blockquote>
<p>The Payment Service depends on the Transaction Database.</p>
</blockquote>
<p>That statement might appear inside a diagram.</p>
<p>The diagram might show:</p>
<pre><code class="language-text">Payment Service
       │
       │ DEPENDS ON
       ▼
Transaction Database
</code></pre>
<p>If we flatten the document into plain text, we might end up with something like:</p>
<pre><code class="language-text">Payment Service Transaction Database
</code></pre>
<p>The entities survive.</p>
<p>The relationship may not.</p>
<p>Now imagine a table:</p>
<table>
<thead>
<tr>
<th>Service</th>
<th>Owner</th>
<th>SLA</th>
</tr>
</thead>
<tbody><tr>
<td>Payment Service</td>
<td>Payments Team</td>
<td>99.9%</td>
</tr>
</tbody></table>
<p>If the table is split across chunks, the relationship between:</p>
<pre><code class="language-text">Payment Service
</code></pre>
<p>and:</p>
<pre><code class="language-text">99.9%
</code></pre>
<p>can become ambiguous.</p>
<p>The value still exists.</p>
<p>But its meaning depends on its position inside the table.</p>
<p>This is one of the fundamental problems with treating all documents as flat text.</p>
<blockquote>
<p><strong>Meaning often comes from structure.</strong></p>
</blockquote>
<hr />
<h1>The problem with arbitrary chunking</h1>
<p>Chunking is one of the most common techniques used in AI data ingestion.</p>
<p>But chunk boundaries are often determined by:</p>
<ul>
<li><p>Character limits</p>
</li>
<li><p>Token limits</p>
</li>
<li><p>Fixed sizes</p>
</li>
<li><p>Sliding windows</p>
</li>
</ul>
<p>For example:</p>
<pre><code class="language-text">Chunk 1
──────────────

The Payment Service handles customer transactions.
It communicates with the Transaction Database.

Chunk 2
──────────────

Database writes are replicated across regions.
The service must retry failed transactions.
</code></pre>
<p>This may work.</p>
<p>But now consider:</p>
<pre><code class="language-text">Chunk 1
──────────────

The Payment Service handles customer transactions.
It communicates with the Transaction...

Chunk 2
──────────────

Database. Writes are replicated across regions.
</code></pre>
<p>The semantic boundary has been broken.</p>
<p>The chunking algorithm successfully created two chunks.</p>
<p>But it may have failed to preserve knowledge.</p>
<p>This is the distinction I think is important:</p>
<blockquote>
<p><strong>Chunking optimizes for retrieval size. Knowledge extraction should optimize for meaning.</strong></p>
</blockquote>
<p>Those are not always the same thing.</p>
<hr />
<h1>AIKOQL starts with structure</h1>
<p>The direction I am exploring in AIKOQL is to treat ingestion as a process of progressively understanding the source.</p>
<p>Instead of:</p>
<pre><code class="language-text">Document
   ↓
Text
   ↓
Chunks
</code></pre>
<p>The conceptual pipeline becomes:</p>
<pre><code class="language-text">Source
   ↓
Structured Parsing
   ↓
Knowledge Fragments
   ↓
Semantic Analysis
   ↓
Knowledge Candidates
   ↓
Knowledge Objects
</code></pre>
<p>The important difference is that the system should try to preserve structure before deciding how information should be represented for retrieval or reasoning.</p>
<hr />
<h1>Step 1: Understand the source</h1>
<p>AI systems do not receive information from only one format.</p>
<p>Knowledge may exist in:</p>
<ul>
<li><p>PDF documents</p>
</li>
<li><p>DOCX files</p>
</li>
<li><p>Markdown</p>
</li>
<li><p>HTML pages</p>
</li>
<li><p>Tables</p>
</li>
<li><p>Images</p>
</li>
<li><p>Diagrams</p>
</li>
<li><p>Charts</p>
</li>
<li><p>Formulas</p>
</li>
<li><p>APIs</p>
</li>
<li><p>Databases</p>
</li>
<li><p>Events</p>
</li>
<li><p>Logs</p>
</li>
<li><p>External systems</p>
</li>
</ul>
<p>These sources have different structures.</p>
<p>A table is not a paragraph.</p>
<p>A chart is not an image.</p>
<p>A diagram is not simply decorative content.</p>
<p>An API response is not the same as a document.</p>
<p>The first question during ingestion should therefore be:</p>
<blockquote>
<p><strong>What kind of information are we looking at?</strong></p>
</blockquote>
<p>Before extracting meaning, the system should understand the boundaries of the source.</p>
<p>Conceptually:</p>
<pre><code class="language-text">Source

   ↓

Identify Format

   ├── Document
   ├── Table
   ├── Diagram
   ├── Chart
   ├── Image
   ├── Formula
   ├── API
   └── Event
</code></pre>
<p>This is where structured parsing becomes important.</p>
<hr />
<h1>Step 2: Build a structural representation</h1>
<p>A document has an internal structure.</p>
<p>For example:</p>
<pre><code class="language-text">Document
│
├── Title
│
├── Section: Architecture
│   │
│   ├── Paragraph
│   │
│   ├── Diagram
│   │
│   └── Table
│
├── Section: Deployment
│   │
│   ├── Paragraph
│   │
│   └── Configuration
│
└── References
</code></pre>
<p>Representing this structure allows the ingestion system to understand boundaries.</p>
<p>This can be thought of as a document tree or an abstract syntax representation of the source.</p>
<p>Conceptually:</p>
<pre><code class="language-text">Document AST
│
├── Section
│   ├── Paragraph
│   ├── Table
│   └── Diagram
│
├── Section
│   ├── Paragraph
│   └── Formula
│
└── Metadata
</code></pre>
<p>The exact implementation can evolve.</p>
<p>But the principle is important:</p>
<blockquote>
<p><strong>Do not flatten structure before you understand it.</strong></p>
</blockquote>
<p>Once structure is destroyed, it is difficult to reconstruct reliably.</p>
<hr />
<h1>Step 3: Create Knowledge Fragments</h1>
<p>After understanding the structure of the source, AIKOQL can treat meaningful parts of the source as different kinds of fragments.</p>
<p>For example:</p>
<pre><code class="language-text">Knowledge Fragments
│
├── Text Fragment
│
├── Table Fragment
│
├── Diagram Fragment
│
├── Chart Fragment
│
├── Image Fragment
│
└── Formula Fragment
</code></pre>
<p>These fragments are not necessarily final Knowledge Objects.</p>
<p>They are meaningful units extracted from the original source.</p>
<p>That distinction is important.</p>
<p>A fragment answers:</p>
<blockquote>
<p><strong>What meaningful part of the source did we find?</strong></p>
</blockquote>
<p>A Knowledge Object answers:</p>
<blockquote>
<p><strong>What knowledge does this information represent?</strong></p>
</blockquote>
<p>There may be a transformation between the two.</p>
<hr />
<h1>Text Fragments</h1>
<p>A text fragment might contain:</p>
<pre><code class="language-text">The Payment Service processes customer transactions.
</code></pre>
<p>But the fragment should ideally retain context.</p>
<p>For example:</p>
<pre><code class="language-text">Document:
Payments Architecture

Section:
Transaction Processing

Heading:
Payment Service

Position:
Paragraph 3
</code></pre>
<p>Now the system has more than text.</p>
<p>It has context.</p>
<p>The same sentence can mean different things depending on where it appeared.</p>
<hr />
<h1>Table Fragments</h1>
<p>Tables contain relationships that are often lost when converted into plain text.</p>
<p>Consider:</p>
<table>
<thead>
<tr>
<th>Service</th>
<th>Owner</th>
<th>SLA</th>
</tr>
</thead>
<tbody><tr>
<td>Payment Service</td>
<td>Payments Team</td>
<td>99.9%</td>
</tr>
</tbody></table>
<p>A table fragment should preserve:</p>
<pre><code class="language-text">Table
│
├── Columns
│   ├── Service
│   ├── Owner
│   └── SLA
│
└── Rows
    └── Payment Service
        ├── Payments Team
        └── 99.9%
</code></pre>
<p>The relationship between the values is part of the knowledge.</p>
<p>If we only store:</p>
<pre><code class="language-text">Payment Service
Payments Team
99.9%
</code></pre>
<p>the information survives.</p>
<p>But the structure that explains the information may not.</p>
<hr />
<h1>Diagram Fragments</h1>
<p>Diagrams are particularly interesting for AI systems.</p>
<p>A diagram can represent:</p>
<ul>
<li><p>Dependencies</p>
</li>
<li><p>Relationships</p>
</li>
<li><p>Architecture</p>
</li>
<li><p>Processes</p>
</li>
<li><p>Data flows</p>
</li>
<li><p>Hierarchies</p>
</li>
</ul>
<p>Consider:</p>
<pre><code class="language-text">Application
     │
     ▼
API Gateway
     │
     ▼
Payment Service
     │
     ▼
Transaction Database
</code></pre>
<p>The diagram does not only contain entity names.</p>
<p>It contains relationships.</p>
<p>The knowledge is closer to:</p>
<pre><code class="language-text">Application
   │
   └── communicates through
           │
           ▼
      API Gateway
           │
           └── routes to
                 │
                 ▼
          Payment Service
                 │
                 └── stores data in
                        │
                        ▼
               Transaction Database
</code></pre>
<p>This is a fundamentally richer representation.</p>
<p>For AIKOQL, diagrams are therefore interesting not simply as images to describe, but as potential sources of entities and relationships.</p>
<hr />
<h1>Chart Fragments</h1>
<p>Charts contain information that often disappears during traditional text extraction.</p>
<p>A chart may represent:</p>
<ul>
<li><p>Trends</p>
</li>
<li><p>Changes</p>
</li>
<li><p>Comparisons</p>
</li>
<li><p>Thresholds</p>
</li>
<li><p>Events</p>
</li>
<li><p>Correlations</p>
</li>
</ul>
<p>Imagine a chart showing:</p>
<pre><code class="language-text">CPU Usage

90% ────────────────▲
                    │ Deployment
                    │
40% ────────────────┘
</code></pre>
<p>The raw image contains information.</p>
<p>But the knowledge may be:</p>
<blockquote>
<p>CPU utilization increased significantly after the deployment.</p>
</blockquote>
<p>That is not necessarily written anywhere in the document.</p>
<p>It is represented visually.</p>
<p>A knowledge ingestion system should eventually be able to distinguish between:</p>
<pre><code class="language-text">The image exists.
</code></pre>
<p>and:</p>
<pre><code class="language-text">The image represents information.
</code></pre>
<p>This is why multimodal ingestion becomes important.</p>
<hr />
<h1>Formula Fragments</h1>
<p>Technical and scientific knowledge often exists inside formulas.</p>
<p>For example:</p>
<pre><code class="language-text">Revenue = Price × Quantity
</code></pre>
<p>A formula is not simply a sequence of characters.</p>
<p>It represents:</p>
<ul>
<li><p>Variables</p>
</li>
<li><p>Relationships</p>
</li>
<li><p>Operations</p>
</li>
<li><p>Constraints</p>
</li>
</ul>
<p>Flattening the formula into plain text may make it searchable.</p>
<p>But semantic understanding requires more.</p>
<p>The same principle applies to:</p>
<ul>
<li><p>Mathematical models</p>
</li>
<li><p>Engineering formulas</p>
</li>
<li><p>Financial equations</p>
</li>
<li><p>Scientific expressions</p>
</li>
</ul>
<p>For AI systems that work with technical knowledge, preserving these structures may become increasingly important.</p>
<hr />
<h1>Step 4: Preserve provenance</h1>
<p>One of the principles I consider essential for AIKOQL is provenance.</p>
<p>If an AI system retrieves a piece of knowledge, it should ideally be possible to answer:</p>
<blockquote>
<p><strong>Where did this come from?</strong></p>
</blockquote>
<p>For a document, provenance might look like:</p>
<pre><code class="language-text">Knowledge Object

      │

      ▼

Source Document

      │

      ▼

Section

      │

      ▼

Element

      │

      ├── Paragraph
      ├── Table
      ├── Diagram
      └── Chart

      │

      ▼

Knowledge Fragment

      │

      ▼

Knowledge Object
</code></pre>
<p>This creates a chain.</p>
<p>Conceptually:</p>
<pre><code class="language-text">Knowledge Object
      │
      ▼
Knowledge Fragment
      │
      ▼
Source Element
      │
      ▼
Document Section
      │
      ▼
Original Source
</code></pre>
<p>This means a piece of knowledge does not become detached from its origin during ingestion.</p>
<p>That is important for several reasons.</p>
<hr />
<h2>Trust</h2>
<p>If an AI says:</p>
<blockquote>
<p>"The Payment Service has a 99.9% SLA."</p>
</blockquote>
<p>We should be able to ask:</p>
<blockquote>
<p>Where did that information come from?</p>
</blockquote>
<hr />
<h2>Verification</h2>
<p>A user should be able to inspect the original source.</p>
<hr />
<h2>Updates</h2>
<p>If the original document changes, the system should be able to understand which knowledge may be affected.</p>
<hr />
<h2>Explainability</h2>
<p>An AI agent should eventually be able to explain:</p>
<blockquote>
<p>I reached this conclusion based on these sources.</p>
</blockquote>
<hr />
<h2>Knowledge lineage</h2>
<p>Derived knowledge should not become disconnected from the information that produced it.</p>
<hr />
<h1>Step 5: Semantic analysis</h1>
<p>After the structure has been preserved, the next challenge is understanding meaning.</p>
<p>This is where semantic analysis begins.</p>
<p>The system can look for:</p>
<ul>
<li><p>Entities</p>
</li>
<li><p>Concepts</p>
</li>
<li><p>Relationships</p>
</li>
<li><p>Events</p>
</li>
<li><p>Attributes</p>
</li>
<li><p>Measurements</p>
</li>
<li><p>Changes</p>
</li>
<li><p>Dependencies</p>
</li>
</ul>
<p>For example, consider:</p>
<blockquote>
<p>The Payment Service depends on the Transaction Database.</p>
</blockquote>
<p>Semantic analysis might identify:</p>
<pre><code class="language-text">Entity:
Payment Service

Relationship:
DEPENDS_ON

Entity:
Transaction Database
</code></pre>
<p>Now consider:</p>
<blockquote>
<p>The database migration was completed on June 12.</p>
</blockquote>
<p>The system may identify:</p>
<pre><code class="language-text">Event:
Database Migration

Status:
Completed

Time:
June 12
</code></pre>
<p>The important point is that semantic analysis should operate on meaningful fragments that still retain their original context.</p>
<p>Otherwise, we risk extracting knowledge from text while losing the structure that explains what the text actually means.</p>
<hr />
<h1>From fragments to Knowledge Objects</h1>
<p>At this point, the ingestion pipeline can start producing knowledge candidates.</p>
<p>For example:</p>
<pre><code class="language-text">Knowledge Candidate

Subject:
Payment Service

Relationship:
DEPENDS_ON

Object:
Transaction Database

Source:
Architecture Document

Evidence:
Diagram

Confidence:
0.87
</code></pre>
<p>This is still not necessarily final knowledge.</p>
<p>The system may need to:</p>
<ul>
<li><p>Validate the extraction</p>
</li>
<li><p>Compare it with other knowledge</p>
</li>
<li><p>Detect contradictions</p>
</li>
<li><p>Attach evidence</p>
</li>
<li><p>Determine authority</p>
</li>
<li><p>Assign an epistemic state</p>
</li>
</ul>
<p>Eventually, the candidate may become a Knowledge Object.</p>
<p>Conceptually:</p>
<pre><code class="language-text">Knowledge Fragment

       │

       ▼

Semantic Analysis

       │

       ▼

Knowledge Candidate

       │

       ├── Validate
       ├── Enrich
       ├── Connect
       ├── Compare
       └── Verify

       │

       ▼

Knowledge Object
</code></pre>
<p>This distinction is important because AI-generated extraction should not automatically become trusted knowledge.</p>
<p>An LLM may extract something incorrectly.</p>
<p>A source may be outdated.</p>
<p>Two documents may contradict each other.</p>
<p>The ingestion pipeline should preserve uncertainty rather than pretending that extraction is always correct.</p>
<hr />
<h1>Knowledge creation is not the same as text extraction</h1>
<p>This is perhaps the most important distinction in the entire pipeline.</p>
<p>Traditional ingestion often asks:</p>
<blockquote>
<p>Can we extract the content?</p>
</blockquote>
<p>AIKOQL is exploring a different question:</p>
<blockquote>
<p><strong>Can we preserve enough structure and context to understand the content as knowledge?</strong></p>
</blockquote>
<p>These are not the same problem.</p>
<p>Consider:</p>
<pre><code class="language-text">Text Extraction

Document
   ↓
Text
</code></pre>
<p>Compared with:</p>
<pre><code class="language-text">Knowledge Extraction

Document
   ↓
Structure
   ↓
Meaningful Fragments
   ↓
Context
   ↓
Semantic Analysis
   ↓
Evidence
   ↓
Knowledge
</code></pre>
<p>The second pipeline is more complex.</p>
<p>But knowledge is more complex than text.</p>
<hr />
<h1>Embeddings still matter</h1>
<p>This does not mean embeddings or vector databases become irrelevant.</p>
<p>They remain extremely useful.</p>
<p>Embeddings can help with:</p>
<ul>
<li><p>Semantic search</p>
</li>
<li><p>Similarity</p>
</li>
<li><p>Clustering</p>
</li>
<li><p>Retrieval</p>
</li>
<li><p>Knowledge discovery</p>
</li>
</ul>
<p>But in this model, embeddings become one representation of knowledge rather than the knowledge itself.</p>
<p>Conceptually:</p>
<pre><code class="language-text">Knowledge Object

      │

      ├── Content
      │
      ├── Provenance
      │
      ├── Relationships
      │
      ├── Temporal Context
      │
      ├── Knowledge State
      │
      └── Semantic Representation
              │
              ▼
           Embedding
</code></pre>
<p>This is an important architectural distinction.</p>
<p>A vector can help us find knowledge.</p>
<p>But the Knowledge Object provides the context required to understand what was found.</p>
<hr />
<h1>The ingestion pipeline should preserve meaning</h1>
<p>The direction I am exploring can be summarized in one principle:</p>
<blockquote>
<p><strong>Preserve meaning before optimizing retrieval.</strong></p>
</blockquote>
<p>That means:</p>
<h3>Preserve structure</h3>
<p>Do not flatten tables, diagrams, and documents too early.</p>
<h3>Preserve boundaries</h3>
<p>A meaningful section should not necessarily be split because it exceeds an arbitrary token count.</p>
<h3>Preserve provenance</h3>
<p>Every piece of extracted knowledge should remain connected to its source.</p>
<h3>Preserve context</h3>
<p>Headings, sections, relationships, and surrounding information may affect meaning.</p>
<h3>Preserve modality</h3>
<p>Text, tables, diagrams, images, and formulas should not all be treated as identical inputs.</p>
<h3>Preserve uncertainty</h3>
<p>Extracted information should not automatically be considered verified knowledge.</p>
<hr />
<h1>Why this matters for AI agents</h1>
<p>AI agents increasingly need more than search results.</p>
<p>They need context.</p>
<p>Imagine an agent receives:</p>
<pre><code class="language-text">The Transaction Database is PostgreSQL.
</code></pre>
<p>Without context, the agent may assume it is true.</p>
<p>But what if the Knowledge Object tells the agent:</p>
<pre><code class="language-text">Knowledge:
The Transaction Database is PostgreSQL.

Status:
Superseded

Valid Until:
June 2026

Source:
Architecture Document v1

Replaced By:
Knowledge Object #247
</code></pre>
<p>Now the agent can make a better decision.</p>
<p>Similarly:</p>
<pre><code class="language-text">Knowledge:
The Payment Service depends on the Transaction Database.

Source:
Architecture Diagram

Evidence:
System Design Document

Confidence:
High

Current State:
Verified
</code></pre>
<p>The agent has more than text.</p>
<p>It has knowledge with context.</p>
<p>That is the outcome I am exploring with AIKOQL.</p>
<hr />
<h1>The real challenge: knowing what not to flatten</h1>
<p>There is no universal rule that says:</p>
<blockquote>
<p>Every table should become a Knowledge Object.</p>
</blockquote>
<p>Or:</p>
<blockquote>
<p>Every paragraph should become a Knowledge Object.</p>
</blockquote>
<p>Or:</p>
<blockquote>
<p>Every diagram should become a graph.</p>
</blockquote>
<p>The ingestion pipeline needs to make decisions.</p>
<p>Some information may become:</p>
<ul>
<li><p>A Knowledge Object</p>
</li>
<li><p>A Knowledge Fragment</p>
</li>
<li><p>Evidence</p>
</li>
<li><p>Metadata</p>
</li>
<li><p>A semantic representation</p>
</li>
<li><p>A relationship</p>
</li>
<li><p>A historical record</p>
</li>
</ul>
<p>This is where the problem becomes difficult.</p>
<p>And interesting.</p>
<p>The ingestion system is not simply converting one format into another.</p>
<p>It is deciding:</p>
<blockquote>
<p><strong>What parts of the source represent meaningful knowledge?</strong></p>
</blockquote>
<p>That is one of the core engineering challenges behind AIKOQL.</p>
<hr />
<h1>From raw data to knowledge</h1>
<p>The complete conceptual pipeline currently looks something like this:</p>
<pre><code class="language-text">                         RAW DATA

     ┌─────────────────────────────────────┐
     │                                     │
     │  Documents    Tables     Diagrams   │
     │                                     │
     │  Charts       Images     Formulas   │
     │                                     │
     │  APIs         Databases  Events     │
     │                                     │
     └──────────────────┬──────────────────┘
                        │
                        ▼

                  STRUCTURED PARSING

                        │
                        ▼

                 KNOWLEDGE FRAGMENTS

          ┌─────────────┼─────────────┐
          │             │             │
          ▼             ▼             ▼

        Text          Tables       Diagrams

          │             │             │
          └─────────────┼─────────────┘
                        │
                        ▼

                  SEMANTIC ANALYSIS

          ┌─────────────┼─────────────┐
          │             │             │
          ▼             ▼             ▼

       Entities    Relationships    Events

                        │
                        ▼

                 KNOWLEDGE CANDIDATES

                        │
                        ▼

             VALIDATION &amp; ENRICHMENT

                        │
                        ▼

                 KNOWLEDGE OBJECTS

        ┌───────────────┼────────────────┐
        │               │                │
        ▼               ▼                ▼

    Provenance      Relationships      Evidence

        │               │                │

        └───────────────┼────────────────┘
                        │
                        ▼

                 AI-NATIVE KNOWLEDGE

                        │
            ┌───────────┼───────────┐
            │           │           │
            ▼           ▼           ▼

         Retrieval    Reasoning    Agents
</code></pre>
<p>This is the bridge I believe AIKOQL is trying to build.</p>
<p>From raw data.</p>
<p>To structured information.</p>
<p>From information.</p>
<p>To contextual knowledge.</p>
<p>And from knowledge.</p>
<p>To AI systems that can reason, retrieve, remember, and explain.</p>
<hr />
<h1>The challenge ahead</h1>
<p>Of course, this is not easy.</p>
<p>A pipeline like this introduces difficult questions.</p>
<p>How accurately can we extract relationships from diagrams?</p>
<p>How do we represent ambiguous information?</p>
<p>How should conflicting sources be handled?</p>
<p>When should a Knowledge Candidate become trusted knowledge?</p>
<p>How should confidence be calculated?</p>
<p>How do we preserve provenance without creating excessive storage overhead?</p>
<p>How do we process large documents efficiently?</p>
<p>How do we update knowledge when the original source changes?</p>
<p>How do we prevent an incorrect AI extraction from contaminating the knowledge base?</p>
<p>These are not problems I believe have a single perfect answer.</p>
<p>They are engineering problems that need experimentation, testing, and evidence.</p>
<p>And that is exactly why I am building AIKOQL in the open.</p>
<hr />
<h1>The bigger idea</h1>
<p>The traditional AI pipeline often focuses on this:</p>
<blockquote>
<p><strong>How quickly can we retrieve relevant text?</strong></p>
</blockquote>
<p>AIKOQL is exploring a broader question:</p>
<blockquote>
<p><strong>How do we preserve and operate on knowledge without losing the context that makes information meaningful?</strong></p>
</blockquote>
<p>That means thinking beyond:</p>
<ul>
<li><p>Chunk size</p>
</li>
<li><p>Embedding models</p>
</li>
<li><p>Top K retrieval</p>
</li>
</ul>
<p>And starting to think about:</p>
<ul>
<li><p>Structure</p>
</li>
<li><p>Meaning</p>
</li>
<li><p>Provenance</p>
</li>
<li><p>Evidence</p>
</li>
<li><p>Context</p>
</li>
<li><p>Relationships</p>
</li>
<li><p>Time</p>
</li>
<li><p>Knowledge state</p>
</li>
</ul>
<p>Because an AI system should not simply retrieve information.</p>
<p>Ideally, it should understand what that information represents.</p>
<hr />
<h1>What comes next</h1>
<p>In the next post, I want to go deeper into the infrastructure behind these ideas:</p>
<h1><strong>Building AIKOQL in Rust: The Architecture Behind an AI-Native Knowledge Engine</strong></h1>
<p>Because a Knowledge Object model and ingestion pipeline are only useful if the underlying system can:</p>
<ul>
<li><p>Store knowledge efficiently</p>
</li>
<li><p>Preserve history</p>
</li>
<li><p>Manage relationships</p>
</li>
<li><p>Support transactions</p>
</li>
<li><p>Handle concurrent workloads</p>
</li>
<li><p>Execute queries</p>
</li>
<li><p>Maintain provenance</p>
</li>
<li><p>Evolve without losing existing knowledge</p>
</li>
</ul>
<p>That brings us to the systems engineering side of AIKOQL.</p>
<p>The abstractions are important.</p>
<p>But eventually, every abstraction has to survive contact with storage engines, memory, concurrency, transactions, and real workloads.</p>
<p>And that is where the next part of the journey begins.</p>
<hr />
<p><em>AIKOQL is an evolving open project. The ingestion architecture and concepts described here are actively being developed and tested. The implementation may evolve as the system encounters real documents, multimodal data, performance constraints, and production workloads.</em></p>
<p><strong>If you work with RAG, document processing, vector databases, multimodal AI, knowledge graphs, or AI agents, I would love your perspective.</strong></p>
<blockquote>
<p><strong>Do you think traditional chunking is sufficient for AI knowledge systems, or do we need ingestion pipelines that preserve structure and provenance as first-class concepts?</strong></p>
</blockquote>
]]></content:encoded></item><item><title><![CDATA[Rows, Documents, Vectors, Graphs, and Knowledge Objects: Where Does AIKOQL Fit?]]></title><description><![CDATA[In the first two posts of this series, I introduced why I started building AIKOQL and the idea behind the Knowledge Object.
But there is an obvious question that follows.

Why do we need another abstr]]></description><link>https://aikoql.hashnode.dev/rows-documents-vectors-graphs-and-knowledge-objects-where-does-aikoql-fit</link><guid isPermaLink="true">https://aikoql.hashnode.dev/rows-documents-vectors-graphs-and-knowledge-objects-where-does-aikoql-fit</guid><category><![CDATA[RAG ]]></category><category><![CDATA[AI]]></category><category><![CDATA[Artificial Intelligence]]></category><category><![CDATA[knowledge]]></category><category><![CDATA[Databases]]></category><dc:creator><![CDATA[anckursingh]]></dc:creator><pubDate>Mon, 31 Aug 2026 16:49:20 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a95202018ec34dcbfdd2191/0294d8f9-1ec8-4f23-8910-2ffe0b4e7bbb.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the first two posts of this series, I introduced why I started building AIKOQL and the idea behind the Knowledge Object.</p>
<p>But there is an obvious question that follows.</p>
<blockquote>
<p><strong>Why do we need another abstraction at all?</strong></p>
</blockquote>
<p>We already have relational databases.</p>
<p>We have document databases.</p>
<p>We have vector databases.</p>
<p>We have graph databases.</p>
<p>Each of these technologies solves important problems.</p>
<p>So where exactly does AIKOQL fit?</p>
<p>The short answer is:</p>
<blockquote>
<p><strong>AIKOQL is not trying to replace them.</strong></p>
</blockquote>
<p>The more interesting answer is that each database abstraction represents data differently because each was designed to solve a different class of problems.</p>
<p>AIKOQL is exploring whether AI systems introduce another set of requirements that existing abstractions do not always represent naturally.</p>
<p>To understand that, let's start with the abstractions we already use.</p>
<hr />
<h1>Different abstractions solve different problems</h1>
<p>There is no universally perfect database model.</p>
<p>A relational database is excellent at some things.</p>
<p>A document database is excellent at others.</p>
<p>A vector database solves a different problem.</p>
<p>A graph database provides another perspective.</p>
<p>The mistake is assuming that one model should replace all the others.</p>
<p>Instead, we should ask:</p>
<blockquote>
<p><strong>What does each abstraction make easy?</strong></p>
</blockquote>
<p>And equally important:</p>
<blockquote>
<p><strong>What does each abstraction leave to the application layer?</strong></p>
</blockquote>
<hr />
<h1>1. Rows: structure, transactions, and consistency</h1>
<p>Relational databases represent information as structured data.</p>
<p>For example:</p>
<pre><code class="language-text">Users

+----+--------+-------------------+
| ID | Name   | Email             |
+----+--------+-------------------+
| 1  | Alice  | alice@example.com |
| 2  | Bob    | bob@example.com   |
+----+--------+-------------------+
</code></pre>
<p>This model is incredibly powerful.</p>
<p>Relational databases are excellent when you need:</p>
<ul>
<li><p>Structured schemas</p>
</li>
<li><p>Strong consistency</p>
</li>
<li><p>Transactions</p>
</li>
<li><p>Constraints</p>
</li>
<li><p>SQL queries</p>
</li>
<li><p>Joins</p>
</li>
<li><p>Reliable business data</p>
</li>
</ul>
<p>For a huge number of applications, a relational database is exactly the right choice.</p>
<p>But imagine asking the database:</p>
<blockquote>
<p>Which information about this system is currently valid?</p>
</blockquote>
<p>Or:</p>
<blockquote>
<p>Which knowledge is supported by the most authoritative evidence?</p>
</blockquote>
<p>Or:</p>
<blockquote>
<p>What conclusions depend on this piece of information?</p>
</blockquote>
<p>Those questions are not impossible to answer with relational databases.</p>
<p>You can build tables for provenance.</p>
<p>You can create temporal models.</p>
<p>You can store confidence scores.</p>
<p>You can create dependency relationships.</p>
<p>But these concepts are not necessarily first-class parts of the data abstraction.</p>
<p>The application has to define what they mean.</p>
<hr />
<h1>2. Documents: flexible and expressive information</h1>
<p>Document databases take a different approach.</p>
<p>Instead of forcing information into fixed rows and columns, data can be represented as documents.</p>
<p>For example:</p>
<pre><code class="language-json">{
  "service": "payments",
  "database": {
    "engine": "PostgreSQL",
    "version": "16"
  },
  "owners": [
    "platform-team"
  ]
}
</code></pre>
<p>This is useful for:</p>
<ul>
<li><p>Flexible schemas</p>
</li>
<li><p>Nested data</p>
</li>
<li><p>Rapid application development</p>
</li>
<li><p>Semi-structured information</p>
</li>
<li><p>Evolving data models</p>
</li>
</ul>
<p>Documents are a natural way to represent rich application data.</p>
<p>But a document still primarily answers:</p>
<blockquote>
<p><strong>What information was stored?</strong></p>
</blockquote>
<p>It does not automatically represent:</p>
<ul>
<li><p>Whether the information is currently valid</p>
</li>
<li><p>Where each statement originated</p>
</li>
<li><p>What evidence supports it</p>
</li>
<li><p>Whether another source contradicts it</p>
</li>
<li><p>How authoritative the source is</p>
</li>
<li><p>What knowledge was derived from it</p>
</li>
</ul>
<p>Again, these things can be added.</p>
<p>But they usually become application-level conventions.</p>
<hr />
<h1>3. Vectors: semantic similarity</h1>
<p>Vector databases introduced another important capability.</p>
<p>Instead of retrieving information through exact values, vectors allow systems to retrieve information based on semantic similarity.</p>
<p>For example:</p>
<pre><code class="language-text">Query:

"How do I restart the payment service?"

        ↓

Vector Search

        ↓

Semantically Similar Documents
</code></pre>
<p>This changed how we build retrieval systems.</p>
<p>Vector search is particularly useful for:</p>
<ul>
<li><p>Semantic search</p>
</li>
<li><p>Retrieval-Augmented Generation</p>
</li>
<li><p>Similarity search</p>
</li>
<li><p>Unstructured information</p>
</li>
<li><p>AI applications</p>
</li>
</ul>
<p>But semantic similarity is not the same thing as knowledge.</p>
<p>Imagine two documents.</p>
<p>Document A:</p>
<blockquote>
<p>"The production database runs on PostgreSQL."</p>
</blockquote>
<p>Document B:</p>
<blockquote>
<p>"The production database previously ran on PostgreSQL."</p>
</blockquote>
<p>Semantically, these statements are very similar.</p>
<p>But temporally, they mean very different things.</p>
<p>A vector search may retrieve both.</p>
<p>The application or LLM must then determine:</p>
<blockquote>
<p>Which one is current?</p>
</blockquote>
<p>Now imagine another statement:</p>
<blockquote>
<p>"According to the approved architecture decision, the production database now runs on CockroachDB."</p>
</blockquote>
<p>This introduces another dimension.</p>
<p>The system must consider:</p>
<ul>
<li><p>Semantic relevance</p>
</li>
<li><p>Temporal validity</p>
</li>
<li><p>Authority</p>
</li>
<li><p>Evidence</p>
</li>
<li><p>Knowledge state</p>
</li>
</ul>
<p>Similarity alone is not enough.</p>
<p>This does not make vector databases less useful.</p>
<p>It simply means:</p>
<blockquote>
<p><strong>Similarity is one signal. Knowledge requires more context.</strong></p>
</blockquote>
<hr />
<h1>4. Graphs: relationships and connected information</h1>
<p>Graph databases focus on relationships.</p>
<p>For example:</p>
<pre><code class="language-text">Service
   │
   ├── DEPENDS_ON ────▶ Database
   │
   ├── OWNED_BY ──────▶ Team
   │
   └── AFFECTED_BY ───▶ Incident
</code></pre>
<p>Graphs are extremely powerful when relationships are central to the problem.</p>
<p>They are useful for:</p>
<ul>
<li><p>Relationship traversal</p>
</li>
<li><p>Network analysis</p>
</li>
<li><p>Knowledge graphs</p>
</li>
<li><p>Recommendations</p>
</li>
<li><p>Dependency analysis</p>
</li>
<li><p>Connected entities</p>
</li>
</ul>
<p>Graphs answer an important question:</p>
<blockquote>
<p><strong>How are things connected?</strong></p>
</blockquote>
<p>But a relationship alone does not necessarily tell us:</p>
<blockquote>
<p>Is this relationship still valid?</p>
</blockquote>
<blockquote>
<p>Where did it come from?</p>
</blockquote>
<blockquote>
<p>Who asserted it?</p>
</blockquote>
<blockquote>
<p>Is it verified?</p>
</blockquote>
<blockquote>
<p>Was it superseded?</p>
</blockquote>
<blockquote>
<p>What evidence supports it?</p>
</blockquote>
<p>A graph can represent those concepts.</p>
<p>But once again, the meaning of those concepts often needs to be defined by the application.</p>
<hr />
<h1>The AI problem: combining multiple kinds of context</h1>
<p>This is where the architecture of modern AI applications becomes interesting.</p>
<p>A typical AI system may look like this:</p>
<pre><code class="language-text">                 ┌──────────────────┐
                 │   Relational DB  │
                 │                  │
                 └────────┬─────────┘
                          │
                 ┌────────▼─────────┐
                 │  Document Store  │
                 └────────┬─────────┘
                          │
                 ┌────────▼─────────┐
                 │    Vector DB     │
                 └────────┬─────────┘
                          │
                 ┌────────▼─────────┐
                 │     Graph DB     │
                 └────────┬─────────┘
                          │
                          ▼
                   Application Logic
                          │
                          ▼
                     AI / LLM Agent
</code></pre>
<p>The application becomes responsible for combining everything.</p>
<p>It decides:</p>
<ul>
<li><p>Which database to query</p>
</li>
<li><p>Which results are relevant</p>
</li>
<li><p>Which information is current</p>
</li>
<li><p>Which source is authoritative</p>
</li>
<li><p>Which information should be trusted</p>
</li>
<li><p>Which relationships matter</p>
</li>
<li><p>Which historical information should be ignored</p>
</li>
<li><p>Which contradictions need to be resolved</p>
</li>
</ul>
<p>The LLM then receives the final context.</p>
<p>This works.</p>
<p>But it raises a question:</p>
<blockquote>
<p><strong>Should all of this knowledge interpretation live outside the data layer?</strong></p>
</blockquote>
<p>That is one of the questions AIKOQL is exploring.</p>
<hr />
<h1>The Knowledge Object: adding meaning to information</h1>
<p>AIKOQL introduces the idea of a Knowledge Object as a potential abstraction above raw information.</p>
<p>Conceptually:</p>
<pre><code class="language-text">Knowledge Object

        Content
           │
           ▼

      +----------+
      | Knowledge|
      |  Object  |
      +----------+
           │
     ┌─────┼──────────────┐
     │     │              │
     ▼     ▼              ▼

Provenance  Time      Relationships
Evidence    State     Derivation
Authority   Confidence Lifecycle
</code></pre>
<p>A Knowledge Object is not defined only by its content.</p>
<p>It can also carry context about that content.</p>
<p>For example:</p>
<pre><code class="language-text">Knowledge:
"The production database runs on PostgreSQL."

Context:

Identity:
production.database.engine

Source:
Architecture Document

Authority:
Approved Architecture Decision

Evidence:
Infrastructure Configuration

Valid From:
January 2025

Valid Until:
June 2026

Current State:
Superseded

Superseded By:
knowledge-object-xyz
</code></pre>
<p>Now consider what an AI agent can ask.</p>
<p>Instead of:</p>
<blockquote>
<p>Find documents mentioning PostgreSQL.</p>
</blockquote>
<p>It could eventually ask:</p>
<blockquote>
<p>What is the current production database?</p>
</blockquote>
<p>The system now has the opportunity to consider:</p>
<ul>
<li><p>Relevance</p>
</li>
<li><p>Time</p>
</li>
<li><p>Knowledge state</p>
</li>
<li><p>Authority</p>
</li>
<li><p>Evidence</p>
</li>
</ul>
<p>That is the difference I am exploring.</p>
<hr />
<h1>AIKOQL is not another vector database</h1>
<p>This is an important clarification.</p>
<p>AIKOQL is not trying to say:</p>
<blockquote>
<p>"Vector search is obsolete."</p>
</blockquote>
<p>Vector search remains extremely useful.</p>
<p>But vector search primarily helps answer:</p>
<blockquote>
<p>What information is semantically related?</p>
</blockquote>
<p>A Knowledge Object explores additional questions:</p>
<blockquote>
<p>Is this information current?</p>
</blockquote>
<blockquote>
<p>Is it verified?</p>
</blockquote>
<blockquote>
<p>Where did it come from?</p>
</blockquote>
<blockquote>
<p>What supports it?</p>
</blockquote>
<blockquote>
<p>What contradicts it?</p>
</blockquote>
<blockquote>
<p>What knowledge was derived from it?</p>
</blockquote>
<blockquote>
<p>Can an AI agent reuse it?</p>
</blockquote>
<p>Semantic retrieval can be part of a knowledge system.</p>
<p>But semantic retrieval alone does not define knowledge.</p>
<hr />
<h1>AIKOQL is not another graph database</h1>
<p>Relationships are also important.</p>
<p>Knowledge Objects can have relationships.</p>
<p>For example:</p>
<pre><code class="language-text">Knowledge A

    │
    ├── DERIVED_FROM ─────▶ Knowledge B
    │
    ├── CONTRADICTS ──────▶ Knowledge C
    │
    └── SUPERSEDES ───────▶ Knowledge D
</code></pre>
<p>But AIKOQL is exploring relationships with additional meaning.</p>
<p>If Knowledge B becomes invalid, what happens to Knowledge A?</p>
<p>If Knowledge D was superseded, should the system return it as current knowledge?</p>
<p>If Knowledge C contradicts another verified statement, should both remain visible?</p>
<p>Relationships become operational.</p>
<p>They are not only used for traversal.</p>
<p>They can influence how knowledge is interpreted.</p>
<hr />
<h1>AIKOQL is not trying to replace relational databases</h1>
<p>This is probably the most important point.</p>
<p>AIKOQL does not need to become the system of record for everything.</p>
<p>You should still use the best storage system for the workload.</p>
<p>For example:</p>
<pre><code class="language-text">Financial transactions
        ↓
Relational Database

Large analytical queries
        ↓
Columnar Database

Application documents
        ↓
Document Store

Semantic similarity
        ↓
Vector Search

Highly connected entities
        ↓
Graph Database
</code></pre>
<p>AIKOQL is exploring a different role.</p>
<p>Conceptually:</p>
<pre><code class="language-text">                 Existing Data Systems
                         │
         ┌───────────────┼───────────────┐
         │               │               │
         ▼               ▼               ▼

     Relational       Documents        Vectors
         │               │               │
         └───────────────┼───────────────┘
                         │
                         ▼

                  Knowledge Layer
                         │
                  ┌──────▼──────┐
                  │   AIKOQL    │
                  │             │
                  │ Knowledge   │
                  │   Objects   │
                  └──────┬──────┘
                         │
              ┌──────────┼──────────┐
              │          │          │
              ▼          ▼          ▼

           Agents     Retrieval   Reasoning
</code></pre>
<p>This is the architectural space I find interesting.</p>
<p>AIKOQL does not necessarily need to replace the systems underneath.</p>
<p>It can explore becoming a knowledge-aware layer that gives AI systems richer context.</p>
<hr />
<h1>Where Knowledge Objects fit</h1>
<p>The simplest way I currently think about the data ecosystem is this:</p>
<h2>Rows answer:</h2>
<blockquote>
<p>What structured data do we have?</p>
</blockquote>
<h2>Documents answer:</h2>
<blockquote>
<p>What information was written or stored?</p>
</blockquote>
<h2>Vectors answer:</h2>
<blockquote>
<p>What information is semantically related?</p>
</blockquote>
<h2>Graphs answer:</h2>
<blockquote>
<p>How are entities connected?</p>
</blockquote>
<h2>Knowledge Objects explore:</h2>
<blockquote>
<p>What does this information mean in context?</p>
</blockquote>
<p>And that context can include:</p>
<ul>
<li><p>Identity</p>
</li>
<li><p>Provenance</p>
</li>
<li><p>Evidence</p>
</li>
<li><p>Authority</p>
</li>
<li><p>Epistemic state</p>
</li>
<li><p>Temporal validity</p>
</li>
<li><p>Relationships</p>
</li>
<li><p>Derivation</p>
</li>
<li><p>Lineage</p>
</li>
<li><p>Confidence</p>
</li>
<li><p>Lifecycle</p>
</li>
</ul>
<p>This is the central hypothesis behind AIKOQL.</p>
<hr />
<h1>A different retrieval question</h1>
<p>Traditional retrieval often looks like this:</p>
<pre><code class="language-text">Query

   ↓

Search

   ↓

Top K Results

   ↓

LLM
</code></pre>
<p>But a knowledge-aware system may eventually need something more like:</p>
<pre><code class="language-text">Query

   ↓

Semantic Relevance

   +

Authority

   +

Temporal Validity

   +

Evidence

   +

Knowledge State

   +

Relationships

   ↓

Contextual Knowledge

   ↓

AI Agent
</code></pre>
<p>The difference is subtle but important.</p>
<p>The goal is not simply:</p>
<blockquote>
<p>Retrieve the most similar information.</p>
</blockquote>
<p>The goal becomes:</p>
<blockquote>
<p><strong>Retrieve the most relevant knowledge for this decision.</strong></p>
</blockquote>
<p>That may eventually require different signals depending on the workload.</p>
<p>A customer support agent might prioritize current information.</p>
<p>A research system might prioritize evidence.</p>
<p>A compliance system might prioritize provenance.</p>
<p>An autonomous agent might need to understand confidence and uncertainty.</p>
<p>This is why I don't think there will be one universal retrieval strategy.</p>
<p>The Knowledge Object can potentially provide the information required to make those decisions.</p>
<hr />
<h1>The role of AIKOQL in an existing architecture</h1>
<p>One of the most important design principles for AIKOQL is interoperability.</p>
<p>AIKOQL should not assume that it owns all the data.</p>
<p>Real organizations already have:</p>
<ul>
<li><p>PostgreSQL</p>
</li>
<li><p>MySQL</p>
</li>
<li><p>ClickHouse</p>
</li>
<li><p>Elasticsearch</p>
</li>
<li><p>Object storage</p>
</li>
<li><p>Data warehouses</p>
</li>
<li><p>Vector databases</p>
</li>
<li><p>APIs</p>
</li>
<li><p>Documents</p>
</li>
<li><p>Event streams</p>
</li>
</ul>
<p>Replacing all of this infrastructure is unrealistic.</p>
<p>The more interesting problem is:</p>
<blockquote>
<p>How can knowledge be built from information that already exists?</p>
</blockquote>
<p>Conceptually:</p>
<pre><code class="language-text">Existing Data

     │

     ▼

┌───────────────────┐
│ Relational Data   │
├───────────────────┤
│ Documents         │
├───────────────────┤
│ Files             │
├───────────────────┤
│ APIs              │
├───────────────────┤
│ Events            │
└─────────┬─────────┘
          │
          ▼

    Knowledge Extraction

          │
          ▼

    Knowledge Objects

          │
          ▼

   Knowledge-Aware AI
</code></pre>
<p>That is a much more realistic position than claiming:</p>
<blockquote>
<p>Move everything into AIKOQL.</p>
</blockquote>
<p>The goal is to work with existing infrastructure.</p>
<hr />
<h1>Knowledge-aware does not mean knowledge is always correct</h1>
<p>Another important distinction.</p>
<p>A Knowledge Object does not mean the system magically knows the truth.</p>
<p>Knowledge can be:</p>
<ul>
<li><p>Incomplete</p>
</li>
<li><p>Conflicting</p>
</li>
<li><p>Outdated</p>
</li>
<li><p>Unverified</p>
</li>
<li><p>Inferred</p>
</li>
<li><p>Incorrect</p>
</li>
</ul>
<p>AIKOQL is therefore exploring explicit knowledge state.</p>
<p>For example:</p>
<pre><code class="language-text">Observed

      ↓

Asserted

      ↓

Verified
</code></pre>
<p>Or:</p>
<pre><code class="language-text">Knowledge

   ├── Contradicted
   │
   ├── Superseded
   │
   └── Invalidated
</code></pre>
<p>The goal is not to pretend uncertainty does not exist.</p>
<p>The goal is to make uncertainty visible.</p>
<p>For AI systems, this may be more important than storing another confidence score in a metadata field.</p>
<p>An AI agent should eventually be able to distinguish between:</p>
<blockquote>
<p>"This is verified."</p>
</blockquote>
<p>and:</p>
<blockquote>
<p>"This was observed but has not been verified."</p>
</blockquote>
<p>and:</p>
<blockquote>
<p>"This information was previously valid but has been superseded."</p>
</blockquote>
<p>Those distinctions are part of the Knowledge Object model.</p>
<hr />
<h1>From data to knowledge infrastructure</h1>
<p>The direction I am currently exploring looks something like this:</p>
<pre><code class="language-text">                    DATA
                     │
                     ▼
             ┌───────────────┐
             │     Rows      │
             │   Documents   │
             │    Vectors    │
             │    Graphs     │
             └───────┬───────┘
                     │
                     ▼

               INFORMATION
                     │
                     ▼

             ┌───────────────┐
             │    AIKOQL     │
             │               │
             │   Knowledge   │
             │    Objects    │
             └───────┬───────┘
                     │
                     ▼

                KNOWLEDGE
                     │
          ┌──────────┼──────────┐
          │          │          │
          ▼          ▼          ▼

       Retrieval   Memory   Reasoning
          │          │          │
          └──────────┼──────────┘
                     │
                     ▼

              AI Applications
</code></pre>
<p>This is not a finished architecture.</p>
<p>It is a direction.</p>
<p>And like everything else in AIKOQL, it needs to survive real implementation and testing.</p>
<hr />
<h1>Where I think AIKOQL can provide value</h1>
<p>I currently see the strongest potential for AIKOQL in workloads where AI systems need more than retrieval.</p>
<p>For example:</p>
<h3>AI Agents</h3>
<p>Agents need persistent memory.</p>
<p>But memory is not simply a chat history.</p>
<p>An agent may need:</p>
<ul>
<li><p>Facts</p>
</li>
<li><p>Observations</p>
</li>
<li><p>Experiences</p>
</li>
<li><p>Derived conclusions</p>
</li>
<li><p>Historical knowledge</p>
</li>
</ul>
<p>A Knowledge Object can provide a structured way to represent these different categories.</p>
<hr />
<h3>Enterprise Knowledge Systems</h3>
<p>Organizations have information spread across:</p>
<ul>
<li><p>Documents</p>
</li>
<li><p>Wikis</p>
</li>
<li><p>Databases</p>
</li>
<li><p>APIs</p>
</li>
<li><p>Internal tools</p>
</li>
</ul>
<p>AIKOQL is exploring whether knowledge can preserve:</p>
<ul>
<li><p>Provenance</p>
</li>
<li><p>Authority</p>
</li>
<li><p>Evidence</p>
</li>
<li><p>Temporal validity</p>
</li>
</ul>
<p>while making it available to AI systems.</p>
<hr />
<h3>Long-Running AI Workflows</h3>
<p>Autonomous systems may need to remember why they made a decision.</p>
<p>They may need to revisit previous conclusions.</p>
<p>They may need to invalidate conclusions when new information appears.</p>
<p>This requires more than storing messages.</p>
<p>It requires lineage.</p>
<hr />
<h3>Explainable AI Systems</h3>
<p>When an AI system produces a conclusion, users increasingly ask:</p>
<blockquote>
<p>Why?</p>
</blockquote>
<p>Knowledge lineage could potentially help answer:</p>
<ul>
<li><p>What information contributed to this?</p>
</li>
<li><p>Where did it come from?</p>
</li>
<li><p>Was it verified?</p>
</li>
<li><p>What other knowledge did the system rely on?</p>
</li>
</ul>
<p>This is an important direction for AI infrastructure.</p>
<hr />
<h1>The important question is not replacement</h1>
<p>The wrong question is:</p>
<blockquote>
<p>Can AIKOQL replace PostgreSQL?</p>
</blockquote>
<p>Or:</p>
<blockquote>
<p>Can AIKOQL replace ClickHouse?</p>
</blockquote>
<p>Or:</p>
<blockquote>
<p>Can AIKOQL replace a vector database?</p>
</blockquote>
<p>Those comparisons may be useful when testing specific workloads, but they are not the central question.</p>
<p>The better question is:</p>
<blockquote>
<p><strong>What becomes possible when knowledge itself has a first-class lifecycle?</strong></p>
</blockquote>
<p>Can an AI system reason more reliably?</p>
<p>Can it distinguish historical information from current knowledge?</p>
<p>Can it trace derived conclusions?</p>
<p>Can it identify contradictions?</p>
<p>Can it reuse validated experience?</p>
<p>Can it explain why it retrieved something?</p>
<p>Those are the questions I am building AIKOQL to explore.</p>
<hr />
<h1>Where does AIKOQL fit?</h1>
<p>My current answer is simple:</p>
<blockquote>
<p><strong>AIKOQL is not trying to replace rows, documents, vectors, or graphs.</strong></p>
</blockquote>
<p>Each of those abstractions solves a real problem.</p>
<p>AIKOQL is exploring what happens when we add another layer:</p>
<blockquote>
<p><strong>Knowledge with context, provenance, state, time, relationships, and lineage.</strong></p>
</blockquote>
<p>Rows store structured facts.</p>
<p>Documents store flexible information.</p>
<p>Vectors help discover semantic similarity.</p>
<p>Graphs represent relationships.</p>
<p>Knowledge Objects explore how information can become operational knowledge for AI systems.</p>
<p>That distinction is still being tested.</p>
<p>And I expect my understanding of it to evolve as AIKOQL evolves.</p>
<p>But this is the space I believe is worth exploring.</p>
<hr />
<h1>What comes next</h1>
<p>In the next post, I want to move from the abstraction itself to one of the hardest practical problems:</p>
<h1><strong>From Documents to Knowledge Objects: Rethinking AI Data Ingestion</strong></h1>
<p>Because if Knowledge Objects are going to be useful, we need to answer:</p>
<blockquote>
<p>Where do they come from?</p>
</blockquote>
<p>Documents are not just text.</p>
<p>They contain:</p>
<ul>
<li><p>Tables</p>
</li>
<li><p>Diagrams</p>
</li>
<li><p>Charts</p>
</li>
<li><p>Images</p>
</li>
<li><p>Formulas</p>
</li>
<li><p>Structured sections</p>
</li>
<li><p>Relationships</p>
</li>
</ul>
<p>Flattening everything into plain text can destroy meaning.</p>
<p>So the next part of the AIKOQL journey will explore how information moves from raw data and multimodal documents toward structured knowledge.</p>
<p>The real challenge is not just storing knowledge.</p>
<p>It is understanding how to create it without losing the context that made the information meaningful in the first place.</p>
<hr />
<p><em>AIKOQL is an evolving open project. The architecture and ideas described here are being actively tested and may change as the system encounters real workloads, benchmarks, and engineering constraints.</em></p>
<p><strong>If you work with databases, vector search, graphs, RAG, AI agents, or knowledge systems, I would love your perspective.</strong></p>
<blockquote>
<p><strong>Do you think AI systems need a knowledge-aware layer, or should these capabilities remain in the application layer built on top of existing databases?</strong></p>
</blockquote>
]]></content:encoded></item><item><title><![CDATA[What Is a Knowledge Object? Rethinking Data for AI Systems]]></title><description><![CDATA[In my previous post, I introduced the question behind AIKOQL:

What should data infrastructure look like when AI agents become first-class users of that infrastructure?

That question naturally leads ]]></description><link>https://aikoql.hashnode.dev/what-is-a-knowledge-object-rethinking-data-for-ai-systems</link><guid isPermaLink="true">https://aikoql.hashnode.dev/what-is-a-knowledge-object-rethinking-data-for-ai-systems</guid><dc:creator><![CDATA[anckursingh]]></dc:creator><pubDate>Mon, 31 Aug 2026 16:29:49 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a95202018ec34dcbfdd2191/8856c30b-bc11-4516-84d5-649f6baa4d89.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In my previous post, I introduced the question behind AIKOQL:</p>
<blockquote>
<p><strong>What should data infrastructure look like when AI agents become first-class users of that infrastructure?</strong></p>
</blockquote>
<p>That question naturally leads to another one.</p>
<p>If AI systems need something more than rows, documents, vectors, and disconnected retrieval results—</p>
<blockquote>
<p><strong>What exactly are they operating on?</strong></p>
</blockquote>
<p>My current answer is a <strong>Knowledge Object</strong>.</p>
<p>But a Knowledge Object is not simply a new name for a JSON document.</p>
<p>It is also not just a vector with metadata.</p>
<p>And it is not simply a graph node.</p>
<p>A Knowledge Object is my attempt to represent something that AI systems actually need to work with:</p>
<blockquote>
<p><strong>A piece of knowledge together with the information required to understand whether it is valid, where it came from, how it relates to other knowledge, how it changed, and whether an AI system should trust or reuse it.</strong></p>
</blockquote>
<p>That distinction is becoming increasingly important as AI applications move from simple retrieval toward persistent memory, reasoning, autonomous workflows, and long-running agents.</p>
<h2>The problem with storing information without its knowledge context</h2>
<p>Let's start with a simple example.</p>
<p>Imagine a system stores the following fact:</p>
<blockquote>
<p>"The production database runs on PostgreSQL."</p>
</blockquote>
<p>That looks straightforward.</p>
<p>A traditional database can store it easily.</p>
<p>A document store can store it.</p>
<p>A vector database can embed it.</p>
<p>A graph database can connect it to other entities.</p>
<p>But an AI agent needs to know more.</p>
<p>For example:</p>
<ul>
<li><p>Who made this statement?</p>
</li>
<li><p>Where did the information come from?</p>
</li>
<li><p>Is it an observation or an official assertion?</p>
</li>
<li><p>Is there evidence supporting it?</p>
</li>
<li><p>When was it true?</p>
</li>
<li><p>Is it still true?</p>
</li>
<li><p>Has a newer configuration replaced it?</p>
</li>
<li><p>Did another source contradict it?</p>
</li>
<li><p>Was this knowledge derived from other knowledge?</p>
</li>
<li><p>How confident should the system be?</p>
</li>
<li><p>What other knowledge depends on this fact?</p>
</li>
</ul>
<p>Now imagine the production database changes from PostgreSQL to another system.</p>
<p>The old statement does not necessarily become meaningless.</p>
<p>It becomes <strong>historical knowledge</strong>.</p>
<p>An AI agent may still need to understand that:</p>
<blockquote>
<p>PostgreSQL was the production database during a particular period.</p>
</blockquote>
<p>That is where the difference between <strong>data</strong> and <strong>knowledge</strong> becomes interesting.</p>
<p>The content may remain the same.</p>
<p>But its meaning changes depending on:</p>
<ul>
<li><p>time</p>
</li>
<li><p>evidence</p>
</li>
<li><p>authority</p>
</li>
<li><p>relationships</p>
</li>
<li><p>history</p>
</li>
<li><p>epistemic state</p>
</li>
</ul>
<p>This is the space I am exploring with Knowledge Objects in AIKOQL.</p>
<hr />
<h1>A Knowledge Object is more than content</h1>
<p>At the simplest conceptual level, we can think about a Knowledge Object like this:</p>
<pre><code class="language-text">Knowledge Object
│
├── Identity
├── Content / Properties
├── Relationships
│
├── Provenance
│   ├── Evidence
│   ├── Source
│   ├── Authority
│   └── Scope
│
├── Knowledge State
│   ├── Epistemic Status
│   ├── Confidence
│   └── Validity
│
├── Lineage
│   ├── Derivation
│   ├── Sources
│   └── Reasoning History
│
└── Lifecycle
    ├── Observe
    ├── Assert
    ├── Verify
    ├── Contradict
    ├── Supersede
    ├── Merge
    └── Invalidate
</code></pre>
<p>This is not just a conceptual diagram.</p>
<p>These ideas increasingly reflect the direction of AIKOQL's implementation.</p>
<p>The important point is this:</p>
<blockquote>
<p><strong>A Knowledge Object does not only store what is known. It attempts to preserve how that knowledge came to exist and what its current state means.</strong></p>
</blockquote>
<hr />
<h1>1. Identity: knowledge needs a stable identity</h1>
<p>Every Knowledge Object needs to be addressable.</p>
<p>That sounds obvious, but identity becomes much more important once knowledge evolves.</p>
<p>Consider these statements:</p>
<blockquote>
<p>"The API uses version 1."</p>
</blockquote>
<p>Later:</p>
<blockquote>
<p>"The API uses version 2."</p>
</blockquote>
<p>Are these two unrelated pieces of information?</p>
<p>Or are they two points in the lifecycle of the same underlying subject?</p>
<p>AIKOQL needs to distinguish between:</p>
<ul>
<li><p>identity</p>
</li>
<li><p>versions</p>
</li>
<li><p>history</p>
</li>
<li><p>replacement</p>
</li>
<li><p>relationships</p>
</li>
</ul>
<p>A Knowledge Object should not force an AI system to treat every update as completely unrelated information.</p>
<p>The system should be able to understand continuity.</p>
<hr />
<h1>2. Content is only one part of the object</h1>
<p>The obvious part of a Knowledge Object is its content.</p>
<p>For example:</p>
<pre><code class="language-text">Subject: Production Database
Property: Database Engine
Value: PostgreSQL
</code></pre>
<p>Or:</p>
<pre><code class="language-json">{
  "service": "payments",
  "database": "PostgreSQL"
}
</code></pre>
<p>This is familiar territory.</p>
<p>Traditional databases already do this extremely well.</p>
<p>But content alone does not tell us whether the information should be trusted or used.</p>
<p>A row can contain a value.</p>
<p>A document can contain a statement.</p>
<p>A vector can represent semantic similarity.</p>
<p>None of those abstractions automatically answer:</p>
<blockquote>
<p><strong>Why should an AI believe this right now?</strong></p>
</blockquote>
<p>That is where a Knowledge Object starts becoming more interesting.</p>
<hr />
<h1>3. Evidence: where did this knowledge come from?</h1>
<p>Knowledge without provenance is dangerous for AI systems.</p>
<p>Imagine an AI agent retrieves this:</p>
<blockquote>
<p>"The deployment was rolled back."</p>
</blockquote>
<p>Without provenance, the agent does not know whether this information came from:</p>
<ul>
<li><p>an official incident report</p>
</li>
<li><p>a production event</p>
</li>
<li><p>a Slack message</p>
</li>
<li><p>an old document</p>
</li>
<li><p>a user comment</p>
</li>
<li><p>another AI model</p>
</li>
<li><p>an inferred conclusion</p>
</li>
</ul>
<p>These sources are not equivalent.</p>
<p>AIKOQL is increasingly treating evidence and provenance as first-class parts of knowledge.</p>
<p>The system can preserve information about the source and supporting evidence instead of treating the extracted statement as detached text.</p>
<p>This becomes even more important for document ingestion.</p>
<p>A statement extracted from a table should not necessarily lose the fact that it came from:</p>
<blockquote>
<p>Document → Page → Table → Row → Cell</p>
</blockquote>
<p>Similarly, information extracted from a diagram, image, formula, or structured document should preserve its origin.</p>
<p>The current direction of AIKOQL's ingestion pipeline reflects this idea.</p>
<p>The system is evolving toward multimodal ingestion that can preserve structured source information, including tables, diagrams, charts, formulas, images, and document fragments.</p>
<p>The goal is not simply:</p>
<blockquote>
<p>"Extract text and create embeddings."</p>
</blockquote>
<p>The goal is closer to:</p>
<blockquote>
<p><strong>Preserve knowledge boundaries and provenance before projecting information into retrieval or reasoning systems.</strong></p>
</blockquote>
<p>That distinction matters.</p>
<hr />
<h1>4. Authority: not all knowledge should have equal weight</h1>
<p>Imagine two pieces of information.</p>
<p>An engineer writes:</p>
<blockquote>
<p>"We might migrate the authentication system next month."</p>
</blockquote>
<p>Later, an approved architecture decision states:</p>
<blockquote>
<p>"The authentication migration is scheduled for Q4."</p>
</blockquote>
<p>Both statements may be relevant.</p>
<p>But they do not carry the same authority.</p>
<p>This is one of the problems that simple retrieval systems often push into application logic.</p>
<p>The retrieval system finds both.</p>
<p>The LLM receives both.</p>
<p>Then the model is expected to decide what to trust.</p>
<p>But what if authority becomes part of the knowledge itself?</p>
<p>A Knowledge Object can carry information about the authority of the source that produced it.</p>
<p>This creates an opportunity for knowledge-aware retrieval.</p>
<p>Instead of simply asking:</p>
<blockquote>
<p>"What is semantically similar?"</p>
</blockquote>
<p>A system can eventually ask:</p>
<blockquote>
<p>"What is relevant, current, supported by evidence, and authoritative enough for this decision?"</p>
</blockquote>
<p>That is a fundamentally different retrieval question.</p>
<hr />
<h1>5. Knowledge has an epistemic state</h1>
<p>One of the most important ideas currently being developed in AIKOQL is that knowledge should not always be represented as simply:</p>
<pre><code class="language-text">exists
</code></pre>
<p>A statement can exist in different epistemic states.</p>
<p>For example, information may be:</p>
<ul>
<li><p>observed</p>
</li>
<li><p>asserted</p>
</li>
<li><p>inferred</p>
</li>
<li><p>verified</p>
</li>
<li><p>contradicted</p>
</li>
<li><p>superseded</p>
</li>
</ul>
<p>The exact lifecycle and legal transitions matter.</p>
<p>Consider these two statements:</p>
<blockquote>
<p>"Service A is experiencing latency."</p>
</blockquote>
<p>and:</p>
<blockquote>
<p>"Service A is experiencing latency."</p>
</blockquote>
<p>The text is identical.</p>
<p>But imagine the first statement is:</p>
<pre><code class="language-text">Observed from telemetry
</code></pre>
<p>And the second is:</p>
<pre><code class="language-text">Verified by an incident engineer
</code></pre>
<p>The content may be identical.</p>
<p>The knowledge state is not.</p>
<p>For AI systems, that difference can matter enormously.</p>
<p>A Knowledge Object should allow the system to understand not only:</p>
<blockquote>
<p>What is being claimed?</p>
</blockquote>
<p>But also:</p>
<blockquote>
<p><strong>What is the current epistemic status of that claim?</strong></p>
</blockquote>
<p>This is one of the places where I think the Knowledge Object abstraction becomes more useful than simply storing documents or embeddings.</p>
<hr />
<h1>6. Knowledge exists in time</h1>
<p>Most databases are good at storing timestamps.</p>
<p>But timestamps alone do not necessarily represent the temporal meaning of knowledge.</p>
<p>Consider:</p>
<blockquote>
<p>"The production database is PostgreSQL."</p>
</blockquote>
<p>This statement might be valid from:</p>
<pre><code class="language-text">January 2025 → June 2026
</code></pre>
<p>After that, it may be replaced.</p>
<p>The historical statement should not necessarily disappear.</p>
<p>The AI system should be able to answer different questions:</p>
<blockquote>
<p>What is the current production database?</p>
</blockquote>
<blockquote>
<p>What was the production database in March 2026?</p>
</blockquote>
<blockquote>
<p>How did the database architecture evolve?</p>
</blockquote>
<p>These are different questions.</p>
<p>AIKOQL is exploring temporal knowledge as part of the Knowledge Object model.</p>
<p>This means distinguishing between:</p>
<ul>
<li><p>current knowledge</p>
</li>
<li><p>historical knowledge</p>
</li>
<li><p>validity intervals</p>
</li>
<li><p>superseded knowledge</p>
</li>
<li><p>transaction history</p>
</li>
</ul>
<p>The objective is to make temporal meaning available to the knowledge layer instead of forcing every application to rebuild that interpretation independently.</p>
<hr />
<h1>7. Knowledge can be derived from other knowledge</h1>
<p>AI systems do more than store information.</p>
<p>They derive conclusions.</p>
<p>Imagine an agent knows:</p>
<blockquote>
<p>CPU utilization is above 95%.</p>
</blockquote>
<p>And:</p>
<blockquote>
<p>Request latency increased by 300%.</p>
</blockquote>
<p>And:</p>
<blockquote>
<p>The issue began after a deployment.</p>
</blockquote>
<p>The agent may derive:</p>
<blockquote>
<p>The latest deployment may be contributing to the production incident.</p>
</blockquote>
<p>That conclusion should not simply become another disconnected string.</p>
<p>Ideally, the system should know:</p>
<pre><code class="language-text">Derived Knowledge
        │
        ├── Premise: CPU utilization
        ├── Premise: Latency increase
        ├── Premise: Deployment event
        │
        └── Derivation
             ├── Operation
             ├── Actor
             ├── Model / Reasoning Context
             ├── Timestamp
             └── Reason
</code></pre>
<p>This creates lineage.</p>
<p>Now the system can answer:</p>
<blockquote>
<p>Why does the agent believe this?</p>
</blockquote>
<p>And potentially:</p>
<blockquote>
<p>Which knowledge objects contributed to this conclusion?</p>
</blockquote>
<p>This is extremely important for AI systems.</p>
<p>A generated answer is useful.</p>
<p>A generated answer that can trace its knowledge lineage is much more useful.</p>
<p>AIKOQL is therefore evolving toward treating derivation as first-class knowledge structure rather than simply storing a loose graph edge.</p>
<hr />
<h1>8. Confidence should have context</h1>
<p>Confidence is often represented as a number.</p>
<p>For example:</p>
<pre><code class="language-text">0.87
</code></pre>
<p>But a number without context can be misleading.</p>
<p>Where did that confidence come from?</p>
<p>Was it:</p>
<ul>
<li><p>calculated from multiple sources?</p>
</li>
<li><p>inherited from evidence?</p>
</li>
<li><p>assigned by a model?</p>
</li>
<li><p>verified by a human?</p>
</li>
<li><p>updated after new confirmations?</p>
</li>
</ul>
<p>A Knowledge Object can preserve confidence together with context.</p>
<p>For example:</p>
<pre><code class="language-text">Confidence
│
├── Score
├── Confirmations
└── Last Verified
</code></pre>
<p>The important idea is not that AIKOQL has solved confidence.</p>
<p>Confidence is a difficult problem.</p>
<p>The more important principle is:</p>
<blockquote>
<p><strong>Confidence should not become detached metadata with no explanation of how the system arrived there.</strong></p>
</blockquote>
<hr />
<h1>9. Knowledge changes through operations, not just CRUD</h1>
<p>This is perhaps the biggest conceptual shift.</p>
<p>Traditional applications often think about data like this:</p>
<pre><code class="language-text">Create
Read
Update
Delete
</code></pre>
<p>Knowledge behaves differently.</p>
<p>Imagine these operations:</p>
<pre><code class="language-text">Observe
Assert
Verify
Contradict
Supersede
Merge
Invalidate
</code></pre>
<p>These are not just different names for CRUD.</p>
<p>They represent different semantic actions.</p>
<p>For example:</p>
<h3>Verify</h3>
<p>Verification should not necessarily mean:</p>
<pre><code class="language-text">UPDATE status = verified
</code></pre>
<p>A verification event may need to:</p>
<ul>
<li><p>add evidence</p>
</li>
<li><p>update confidence</p>
</li>
<li><p>record who verified the information</p>
</li>
<li><p>preserve historical state</p>
</li>
</ul>
<h3>Contradict</h3>
<p>A contradiction should not necessarily destroy either claim.</p>
<p>Two conflicting pieces of knowledge may both need to remain available until a resolution is made.</p>
<h3>Supersede</h3>
<p>A newer knowledge object may replace an older one while preserving the historical relationship.</p>
<h3>Invalidate</h3>
<p>Invalidation may also affect knowledge derived from the invalidated object.</p>
<p>This is where knowledge begins to behave more like a lifecycle than a database record.</p>
<hr />
<h1>10. Relationships turn information into a knowledge network</h1>
<p>A Knowledge Object should not exist in isolation.</p>
<p>Consider:</p>
<pre><code class="language-text">Service
   │
   ├── depends on ───────▶ Database
   │
   ├── deployed by ──────▶ Deployment
   │
   └── affected by ──────▶ Incident
</code></pre>
<p>Relationships provide structure.</p>
<p>But relationships also create consequences.</p>
<p>Imagine a piece of knowledge is invalidated.</p>
<p>What happens to conclusions derived from it?</p>
<p>If:</p>
<pre><code class="language-text">A ──DERIVED_FROM──▶ B
</code></pre>
<p>And B becomes invalid or stale, the system should at least be able to identify that A may now require attention.</p>
<p>This is one reason lineage and relationships matter together.</p>
<p>Knowledge should not simply form a graph for visualization.</p>
<p>Relationships can become part of the operational behavior of the system.</p>
<hr />
<h1>A Knowledge Object is not a replacement for every database abstraction</h1>
<p>It is important to clarify something.</p>
<p>A Knowledge Object does not mean:</p>
<blockquote>
<p>Rows are obsolete.</p>
</blockquote>
<p>They are not.</p>
<p>Documents are not obsolete.</p>
<p>Vectors are not obsolete.</p>
<p>Graphs are not obsolete.</p>
<p>Each abstraction is useful.</p>
<p>The question AIKOQL is exploring is whether AI systems need an additional layer that can combine several knowledge concerns:</p>
<pre><code class="language-text">Content
      +
Relationships
      +
Evidence
      +
Authority
      +
Time
      +
Epistemic State
      +
Derivation
      +
Confidence
      +
Lifecycle
</code></pre>
<p>The Knowledge Object is an attempt to make these concerns explicit.</p>
<p>Not necessarily to replace existing storage technologies.</p>
<p>But to create a more natural abstraction for knowledge-aware systems.</p>
<hr />
<h1>The ingestion problem: where do Knowledge Objects come from?</h1>
<p>One question naturally follows:</p>
<blockquote>
<p>If Knowledge Objects are so rich, how do we create them?</p>
</blockquote>
<p>This is another area where AIKOQL is evolving.</p>
<p>Documents are not simply text.</p>
<p>A technical document may contain:</p>
<ul>
<li><p>headings</p>
</li>
<li><p>paragraphs</p>
</li>
<li><p>tables</p>
</li>
<li><p>diagrams</p>
</li>
<li><p>charts</p>
</li>
<li><p>images</p>
</li>
<li><p>formulas</p>
</li>
<li><p>structured relationships</p>
</li>
</ul>
<p>Flattening everything into plain text can destroy useful information.</p>
<p>The current AIKOQL ingestion work is moving toward preserving modality and structure through the pipeline.</p>
<p>Conceptually:</p>
<pre><code class="language-text">Document
    │
    ▼
Structured AST
    │
    ▼
Knowledge Fragments
    │
    ├── Text
    ├── Tables
    ├── Diagrams
    ├── Charts
    ├── Images
    └── Formulas
    │
    ▼
Semantic Analysis
    │
    ▼
Knowledge Candidates
    │
    ▼
Knowledge Objects
</code></pre>
<p>One of the principles here is that retrieval chunks should be projections of meaningful knowledge boundaries rather than arbitrary fragments created purely because a chunk reached a token limit.</p>
<p>A table, for example, should not lose half its structure simply because a retrieval chunker reached its size threshold.</p>
<p>The same principle applies to provenance.</p>
<p>The eventual Knowledge Object should be able to preserve meaningful information about where the knowledge originated.</p>
<hr />
<h1>What about agent memory?</h1>
<p>Knowledge Objects also create an interesting opportunity for AI agents.</p>
<p>Agents do not only need factual knowledge.</p>
<p>They accumulate experience.</p>
<p>For example:</p>
<blockquote>
<p>"When deploying service X, the migration must run before restarting workers."</p>
</blockquote>
<p>That might not be a permanent global fact.</p>
<p>It could be an experience learned by an agent.</p>
<p>The experience may have:</p>
<ul>
<li><p>conditions for reuse</p>
</li>
<li><p>an outcome</p>
</li>
<li><p>confidence</p>
</li>
<li><p>a time-to-live</p>
</li>
<li><p>sharing constraints</p>
</li>
</ul>
<p>AIKOQL is exploring agent experience as a type of knowledge that can be recorded, matched, and reused.</p>
<p>This is important because agent memory should probably not be treated as one large conversation transcript.</p>
<p>An agent needs to distinguish between:</p>
<pre><code class="language-text">Facts
</code></pre>
<pre><code class="language-text">Observations
</code></pre>
<pre><code class="language-text">Derived conclusions
</code></pre>
<pre><code class="language-text">Historical knowledge
</code></pre>
<pre><code class="language-text">Reusable experiences
</code></pre>
<p>A Knowledge Object model provides one possible foundation for representing these categories.</p>
<hr />
<h1>The real test is not the data model</h1>
<p>A Knowledge Object can sound elegant on a whiteboard.</p>
<p>That does not make it useful.</p>
<p>The real question is:</p>
<blockquote>
<p><strong>Does this abstraction produce better behavior when an AI system encounters changing, conflicting, incomplete, or long-lived knowledge?</strong></p>
</blockquote>
<p>That is where testing becomes important.</p>
<p>The current AIKOQL work is increasingly focused on questions such as:</p>
<ul>
<li><p>Can the system distinguish current knowledge from superseded knowledge?</p>
</li>
<li><p>Can it preserve historical context?</p>
</li>
<li><p>Can conflicting knowledge remain visible instead of being silently overwritten?</p>
</li>
<li><p>Can an agent trace why a conclusion exists?</p>
</li>
<li><p>Can invalidation propagate through derived knowledge?</p>
</li>
<li><p>Can provenance help explain the source of an answer?</p>
</li>
<li><p>Can reusable agent experiences be selected without leaking expired or unauthorized information?</p>
</li>
<li><p>Can the system admit that knowledge is unknown rather than confidently returning irrelevant context?</p>
</li>
</ul>
<p>These are much more important questions than simply asking:</p>
<blockquote>
<p>How fast can we insert another record?</p>
</blockquote>
<p>Performance still matters.</p>
<p>But for AI knowledge infrastructure, correctness of knowledge state may matter just as much.</p>
<hr />
<h1>My current definition of a Knowledge Object</h1>
<p>After the recent evolution of AIKOQL, this is how I would currently define it:</p>
<blockquote>
<p><strong>A Knowledge Object is a persistent representation of knowledge that combines content with its identity, provenance, evidence, authority, temporal validity, epistemic state, relationships, derivation, confidence, and lifecycle.</strong></p>
</blockquote>
<p>That definition may evolve.</p>
<p>And that is intentional.</p>
<p>AIKOQL is still being built and tested.</p>
<p>But I believe this direction is becoming clearer.</p>
<p>A row tells us:</p>
<blockquote>
<p>What data was stored.</p>
</blockquote>
<p>A document tells us:</p>
<blockquote>
<p>What information was written.</p>
</blockquote>
<p>A vector helps us find:</p>
<blockquote>
<p>What information is semantically related.</p>
</blockquote>
<p>A graph helps us understand:</p>
<blockquote>
<p>How entities are connected.</p>
</blockquote>
<p>A Knowledge Object is exploring a different question:</p>
<blockquote>
<p><strong>What does this information mean, why should we trust it, when was it valid, where did it come from, and what knowledge depends on it?</strong></p>
</blockquote>
<p>For AI systems, I think those questions will become increasingly important.</p>
<hr />
<h1>What comes next</h1>
<p>The Knowledge Object is only useful if we can understand how it interacts with the systems that already exist.</p>
<p>So in the next post, I want to explore a question that I expect many engineers will ask:</p>
<h1><strong>Rows, Documents, Vectors, Graphs, and Knowledge Objects: Where Does AIKOQL Fit?</strong></h1>
<p>Because AIKOQL should not be positioned as:</p>
<blockquote>
<p>"Another database that replaces everything."</p>
</blockquote>
<p>That is neither realistic nor the goal.</p>
<p>The more interesting question is:</p>
<blockquote>
<p><strong>What workloads emerge when an AI system needs knowledge to have memory, provenance, time, evidence, authority, and lifecycle?</strong></p>
</blockquote>
<p>That is the problem space I am continuing to explore.</p>
<p>And I am building AIKOQL in the open because I believe the best way to test these ideas is to expose them to engineers who disagree with them.</p>
<p>If you work with databases, AI agents, RAG systems, graphs, knowledge systems, or Rust infrastructure, I would love to hear your perspective.</p>
<p><strong>Do you think AI systems need a first-class Knowledge Object abstraction—or can existing data models solve this problem without introducing a new one?</strong></p>
]]></content:encoded></item><item><title><![CDATA[Why I am building  AIKOQL: Exploring what a database looks like in an AI-Native world]]></title><description><![CDATA[Artificial intelligence is changing the way we build software.
We now have AI agents that can reason, use tools, generate code, search for information, and interact with applications. But as AI capabi]]></description><link>https://aikoql.hashnode.dev/why-i-am-building-aikoql-exploring-what-a-database-looks-like-in-an-ai-native-world</link><guid isPermaLink="true">https://aikoql.hashnode.dev/why-i-am-building-aikoql-exploring-what-a-database-looks-like-in-an-ai-native-world</guid><category><![CDATA[ai agents]]></category><category><![CDATA[RAG ]]></category><category><![CDATA[Rust]]></category><category><![CDATA[knowledge graph]]></category><dc:creator><![CDATA[anckursingh]]></dc:creator><pubDate>Mon, 31 Aug 2026 09:02:18 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a95202018ec34dcbfdd2191/99f16133-b993-4b05-98a9-e5f76ae5a9e6.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Artificial intelligence is changing the way we build software.</p>
<p>We now have AI agents that can reason, use tools, generate code, search for information, and interact with applications. But as AI capabilities evolve, I keep coming back to one question:</p>
<p>«Is the data infrastructure we use today designed for the way AI systems need to understand and work with knowledge?»</p>
<p>That question is one of the reasons I started building AIKOQL — AI Knowledge Object Query Language.</p>
<p>This is not a story about replacing PostgreSQL, ClickHouse, or every database that already exists.</p>
<p>It is an exploration.</p>
<p>An exploration into whether the rise of AI agents and intelligent applications will eventually require us to rethink some of the primitives used to store, organize, retrieve, and operate on knowledge.</p>
<p>The problem I keep seeing</p>
<p>Modern AI applications rarely work with just one type of data.</p>
<p>An application might need:</p>
<ul>
<li><p>A relational database for structured data</p>
</li>
<li><p>Object storage for files</p>
</li>
<li><p>A vector database for semantic retrieval</p>
</li>
<li><p>A cache for fast access</p>
</li>
<li><p>A graph model for relationships</p>
</li>
<li><p>An LLM for reasoning and interpretation</p>
</li>
</ul>
<p>Each system solves a specific problem.</p>
<p>And that is not necessarily a bad thing.</p>
<p>But when we start building AI agents that need persistent memory, contextual understanding, semantic retrieval, entity relationships, and access to different types of information, the architecture can quickly become fragmented.</p>
<p>The AI system itself becomes responsible for stitching everything together.</p>
<p>The agent retrieves vectors from one system.</p>
<p>Structured information from another.</p>
<p>Documents from somewhere else.</p>
<p>Relationships may need to be reconstructed.</p>
<p>Context needs to be assembled.</p>
<p>Memory needs to be managed.</p>
<p>And then the LLM is asked to make sense of everything.</p>
<p>This made me wonder:</p>
<p>«What if knowledge itself could become a first-class primitive?»</p>
<p>The question behind AIKOQL</p>
<p>AIKOQL started with a simple hypothesis:</p>
<p>«What would a data system look like if it were designed with AI systems and knowledge-oriented workloads as a primary consideration?»</p>
<p>Not just rows.</p>
<p>Not just documents.</p>
<p>Not just vectors.</p>
<p>But something that could potentially represent knowledge as an object with structure, meaning, relationships, metadata, and context.</p>
<p>That is where the idea of the Knowledge Object comes in.</p>
<p>I am still exploring what that abstraction should ultimately look like.</p>
<p>And I think that is an important distinction.</p>
<p>AIKOQL is not being built around the assumption that I already know the final answer.</p>
<p>It is being built around a set of questions that I believe are worth investigating.</p>
<p>For example:</p>
<ul>
<li><p>Can knowledge be represented as a first-class database primitive?</p>
</li>
<li><p>Can structured, unstructured, and semantic information coexist more naturally?</p>
</li>
<li><p>Can relationships between pieces of knowledge become easier to model and query?</p>
</li>
<li><p>Can AI agents interact with persistent knowledge without developers constantly stitching together multiple systems?</p>
</li>
<li><p>Can retrieval become more contextual and knowledge-oriented?</p>
</li>
<li><p>Can we design infrastructure that feels native to AI agents rather than being adapted to them?</p>
</li>
</ul>
<p>I don't yet claim to have solved all of these problems.</p>
<p>But I believe they are interesting enough to build and experiment with.</p>
<p>AI-native does not mean traditional databases are obsolete</p>
<p>One thing I want to be clear about from the beginning:</p>
<p>AIKOQL is not an attempt to declare traditional databases obsolete.</p>
<p>Relational databases are incredibly powerful.</p>
<p>Columnar databases are exceptional for analytical workloads.</p>
<p>Search engines solve information retrieval problems extremely well.</p>
<p>Vector databases introduced an important capability for semantic similarity.</p>
<p>Each category exists because different workloads have different requirements.</p>
<p>The question I am exploring is not:</p>
<p>«"Can one database replace everything?"»</p>
<p>The more interesting question is:</p>
<p>«Are there emerging AI workloads that do not fit naturally into the abstractions we use today?»</p>
<p>AI agents are a good example.</p>
<p>An agent may need to remember interactions, understand entities, maintain context, retrieve relevant knowledge, connect related information, and reason over what it finds.</p>
<p>That does not necessarily mean existing databases cannot support these workloads.</p>
<p>Of course they can.</p>
<p>But supporting a workload and being designed around a workload are two different things.</p>
<p>AIKOQL is an attempt to explore that gap.</p>
<p>Why build it in Rust?</p>
<p>AIKOQL is being built in Rust because I want to work at the infrastructure level.</p>
<p>Databases and storage engines require careful control over:</p>
<ul>
<li><p>Memory</p>
</li>
<li><p>Concurrency</p>
</li>
<li><p>Data layouts</p>
</li>
<li><p>Performance</p>
</li>
<li><p>Reliability</p>
</li>
<li><p>Storage</p>
</li>
<li><p>Execution</p>
</li>
</ul>
<p>Rust provides an interesting combination of systems-level control and memory safety.</p>
<p>That does not automatically make AIKOQL fast.</p>
<p>Performance still needs to be proven through architecture, implementation, testing, and benchmarking.</p>
<p>But Rust gives me a strong foundation for experimenting with these ideas.</p>
<p>The goal is not simply to write another database in Rust.</p>
<p>The goal is to understand what the architecture of an AI-native knowledge system should look like.</p>
<p>And Rust gives me the right environment to experiment at that level.</p>
<p>Where AIKOQL is today</p>
<p>AIKOQL is still an evolving project.</p>
<p>The architecture is being tested.</p>
<p>The assumptions are being challenged.</p>
<p>The implementation is growing.</p>
<p>Benchmarks and database-oriented workloads are being explored.</p>
<p>LLM integration and testing are also in progress.</p>
<p>There will probably be things I believe today that I will change my mind about later.</p>
<p>And honestly, I think that is part of the value of building this project publicly.</p>
<p>Infrastructure is full of trade-offs.</p>
<p>A design that looks elegant on paper may fail under real workloads.</p>
<p>A feature that sounds useful may introduce unacceptable complexity.</p>
<p>A benchmark may expose an architectural bottleneck.</p>
<p>A new use case may completely change how the system should be designed.</p>
<p>I want AIKOQL to evolve based on experimentation and evidence rather than assumptions.</p>
<p>Why I am building in the open</p>
<p>Building something like a database or knowledge infrastructure system alone can become an echo chamber.</p>
<p>You can become convinced that your abstraction is brilliant without anyone seriously challenging it.</p>
<p>I don't want that.</p>
<p>That is why I want to document this journey publicly.</p>
<p>I want to share:</p>
<ul>
<li><p>Architecture decisions</p>
</li>
<li><p>Design experiments</p>
</li>
<li><p>Benchmarks</p>
</li>
<li><p>Failures</p>
</li>
<li><p>Performance problems</p>
</li>
<li><p>Trade-offs</p>
</li>
<li><p>Ideas that worked</p>
</li>
<li><p>Ideas that did not work</p>
</li>
</ul>
<p>My hope is that this attracts conversations with people who are interested in similar problems.</p>
<p>Rust developers.</p>
<p>Database engineers.</p>
<p>AI infrastructure engineers.</p>
<p>Distributed systems engineers.</p>
<p>Researchers.</p>
<p>People building AI agents.</p>
<p>People working on memory systems.</p>
<p>People who simply think the current way we build AI infrastructure can be improved.</p>
<p>I don't expect everyone to agree with the direction.</p>
<p>In fact, disagreement is useful.</p>
<p>Good infrastructure is built by challenging assumptions.</p>
<p>What I want to explore next</p>
<p>Over the coming weeks, I plan to write more about the ideas and engineering decisions behind AIKOQL.</p>
<p>Some of the topics I want to explore include:</p>
<ul>
<li><p>What exactly is a Knowledge Object?</p>
</li>
<li><p>How should knowledge be represented and stored?</p>
</li>
<li><p>AI agents and persistent memory</p>
</li>
<li><p>Structured data versus semantic information</p>
</li>
<li><p>Where vector databases fit into AI infrastructure</p>
</li>
<li><p>Storage and execution architecture</p>
</li>
<li><p>Why I am experimenting with Rust</p>
</li>
<li><p>Database benchmarking and performance testing</p>
</li>
<li><p>How AIKOQL compares conceptually with existing database systems</p>
</li>
<li><p>The architectural decisions that survive testing—and the ones that don't</p>
</li>
</ul>
<p>This project may evolve significantly.</p>
<p>That is intentional.</p>
<p>The goal is not to defend an idea at all costs.</p>
<p>The goal is to find out whether the idea can survive contact with real engineering.</p>
<p>The journey starts here</p>
<p>AIKOQL is my attempt to explore a question that I think will become increasingly important as AI systems become more autonomous:</p>
<p>«What should data infrastructure look like when AI agents are first-class users of that infrastructure?»</p>
<p>I don't know whether the answer will be a new type of database.</p>
<p>A new abstraction.</p>
<p>A layer on top of existing databases.</p>
<p>Or something entirely different.</p>
<p>But I believe the question is worth exploring.</p>
<p>So I am building.</p>
<p>Testing.</p>
<p>Benchmarking.</p>
<p>Breaking things.</p>
<p>Rebuilding them.</p>
<p>And documenting the journey along the way.</p>
<p>If you are interested in databases, Rust, AI infrastructure, agent memory, storage systems, or knowledge representation, I would love to hear your perspective.</p>
<p>What do you think is missing from today's data infrastructure for AI agents?</p>
<p>Let's explore it together.</p>
<hr />
<p>AIKOQL is an open project under active development. The ideas, architecture, and implementation described in this blog will evolve as the project is tested against real workloads and use cases.</p>
]]></content:encoded></item></channel></rss>