<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Samyama.AI</title>
    <description>The latest articles on DEV Community by Samyama.AI (samyama-ai).</description>
    <link>https://dev.to/samyama-ai</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F14093%2F6e93a067-1e82-46e1-8c80-df3d8094fc4b.png</url>
      <title>DEV Community: Samyama.AI</title>
      <link>https://dev.to/samyama-ai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/samyama-ai"/>
    <language>en</language>
    <item>
      <title>Your GraphRAG stack is two databases. It should be one.</title>
      <dc:creator>Himadri</dc:creator>
      <pubDate>Tue, 21 Jul 2026 11:00:00 +0000</pubDate>
      <link>https://dev.to/samyama-ai/your-graphrag-stack-is-two-databases-it-should-be-one-31c6</link>
      <guid>https://dev.to/samyama-ai/your-graphrag-stack-is-two-databases-it-should-be-one-31c6</guid>
      <description>&lt;p&gt;Most GraphRAG systems today are built with at least two storage layers.&lt;/p&gt;

&lt;p&gt;One system stores vectors.&lt;br&gt;&lt;br&gt;
Another system stores relationships.&lt;/p&gt;

&lt;p&gt;The vector database answers questions like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which chunks, entities, documents, or concepts are semantically close to this query?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The graph database answers questions like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How are these entities connected, and what paths explain the relationship?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That architecture works, but it creates an important problem:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The join between semantic retrieval and graph reasoning happens outside the database.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Usually, that join happens in application code, orchestration code, or an agent workflow. The application retrieves vector matches, sends those IDs to a graph database, performs a traversal, gets more nodes, and then asks an LLM to assemble the final answer.&lt;/p&gt;

&lt;p&gt;It works.&lt;/p&gt;

&lt;p&gt;But it is not ideal.&lt;/p&gt;

&lt;p&gt;Because once the join moves outside the database, the query planner loses control.&lt;/p&gt;

&lt;p&gt;The system can no longer optimize vector search, graph traversal, filtering, ranking, and graph algorithms together. Each layer only sees part of the problem.&lt;/p&gt;

&lt;p&gt;That is the architectural problem we are exploring with &lt;strong&gt;Samyama Graph&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Samyama Graph is a Rust-native graph-vector database designed for GraphRAG, knowledge graphs, AI agent memory, and large-scale relationship analytics.&lt;/p&gt;

&lt;p&gt;It brings together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenCypher-style graph querying&lt;/li&gt;
&lt;li&gt;Vector search&lt;/li&gt;
&lt;li&gt;Graph algorithms&lt;/li&gt;
&lt;li&gt;Redis-compatible access&lt;/li&gt;
&lt;li&gt;A single-binary Rust runtime&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The idea is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Graph traversal and vector search should not always live in separate systems. For many GraphRAG workloads, they belong in the same engine.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  Why GraphRAG needs more than vector search
&lt;/h2&gt;

&lt;p&gt;Vector search is very good at semantic similarity.&lt;/p&gt;

&lt;p&gt;It can find text, entities, or documents that “feel close” to a query. That is extremely useful for RAG.&lt;/p&gt;

&lt;p&gt;But vector search alone does not understand relationships.&lt;/p&gt;

&lt;p&gt;For example, if a user asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which clinical trials are connected to a drug, a pathway, and a condition through supporting biomedical literature?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A vector search system may retrieve relevant documents. But it does not naturally answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which drug is connected to which condition?&lt;/li&gt;
&lt;li&gt;Which pathway links them?&lt;/li&gt;
&lt;li&gt;Which paper supports the relationship?&lt;/li&gt;
&lt;li&gt;Which clinical trial is related?&lt;/li&gt;
&lt;li&gt;Which path through the knowledge graph explains the answer?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those are graph questions.&lt;/p&gt;

&lt;p&gt;A graph can represent entities and relationships directly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Drug -&amp;gt; targets -&amp;gt; Protein
Protein -&amp;gt; participates_in -&amp;gt; Pathway
Pathway -&amp;gt; associated_with -&amp;gt; Condition
Condition -&amp;gt; studied_in -&amp;gt; ClinicalTrial
Paper -&amp;gt; supports -&amp;gt; Relationship
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is where GraphRAG becomes more powerful than basic RAG.&lt;/p&gt;

&lt;p&gt;Instead of retrieving only similar text, the system can retrieve relevant entities and then reason over relationships.&lt;/p&gt;




&lt;h2&gt;
  
  
  The common GraphRAG architecture
&lt;/h2&gt;

&lt;p&gt;A common GraphRAG architecture looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User query
   ↓
Embedding model
   ↓
Vector database
   ↓
Application code / agent logic
   ↓
Graph database
   ↓
Application code / reranking
   ↓
LLM response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is practical, but it adds complexity.&lt;/p&gt;

&lt;p&gt;The application has to decide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How many vector results to fetch&lt;/li&gt;
&lt;li&gt;Which IDs to send into the graph&lt;/li&gt;
&lt;li&gt;How far to traverse&lt;/li&gt;
&lt;li&gt;Which paths matter&lt;/li&gt;
&lt;li&gt;How to combine graph scores and vector scores&lt;/li&gt;
&lt;li&gt;How to avoid duplicated, irrelevant, or weakly connected context&lt;/li&gt;
&lt;li&gt;How to explain why the final context was selected&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Over time, the orchestration layer becomes a custom query engine.&lt;/p&gt;

&lt;p&gt;But it is not really a query engine. It usually has no cost model, no unified optimizer, and no deep understanding of the data layout across both retrieval modes.&lt;/p&gt;

&lt;p&gt;That is the design smell.&lt;/p&gt;

&lt;p&gt;If the application is doing the join between vector search and graph traversal, the database is no longer solving the full retrieval problem.&lt;/p&gt;




&lt;h2&gt;
  
  
  A different design bet
&lt;/h2&gt;

&lt;p&gt;Samyama Graph takes a different approach.&lt;/p&gt;

&lt;p&gt;Instead of treating graph and vector as separate stores, it explores what happens when both are part of the same database engine.&lt;/p&gt;

&lt;p&gt;The goal is to support workflows where developers can combine:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;semantic retrieval&lt;/li&gt;
&lt;li&gt;graph pattern matching&lt;/li&gt;
&lt;li&gt;relationship traversal&lt;/li&gt;
&lt;li&gt;graph algorithms&lt;/li&gt;
&lt;li&gt;structured filtering&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;inside one system.&lt;/p&gt;

&lt;p&gt;In practice, this matters because GraphRAG is rarely just “find the nearest chunks.”&lt;/p&gt;

&lt;p&gt;A useful GraphRAG query often looks more like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Find semantically relevant concepts, then expand through trusted relationships, filter by entity type, rank by graph structure, and return an explainable path.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is a graph-vector problem.&lt;/p&gt;

&lt;p&gt;Not just a vector problem.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why one engine can be useful
&lt;/h2&gt;

&lt;p&gt;Keeping graph traversal and vector search closer together has several advantages.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Less orchestration code
&lt;/h3&gt;

&lt;p&gt;When vector and graph live separately, a lot of glue code is needed.&lt;/p&gt;

&lt;p&gt;Developers have to write custom logic to move IDs, scores, metadata, and filters between systems.&lt;/p&gt;

&lt;p&gt;A single engine can reduce that surface area.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Better explainability
&lt;/h3&gt;

&lt;p&gt;GraphRAG systems should not only return an answer.&lt;/p&gt;

&lt;p&gt;They should help explain why that answer was retrieved.&lt;/p&gt;

&lt;p&gt;Graphs are naturally explainable because they can show paths:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Question
 -&amp;gt; matched entity
 -&amp;gt; related concept
 -&amp;gt; supporting source
 -&amp;gt; final answer context
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is especially important in domains like healthcare, finance, cybersecurity, compliance, and enterprise knowledge management.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Better fit for relationship-heavy data
&lt;/h3&gt;

&lt;p&gt;Some data is naturally connected:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;biomedical knowledge&lt;/li&gt;
&lt;li&gt;clinical trials&lt;/li&gt;
&lt;li&gt;fraud networks&lt;/li&gt;
&lt;li&gt;infrastructure dependencies&lt;/li&gt;
&lt;li&gt;software architecture&lt;/li&gt;
&lt;li&gt;supply chain relationships&lt;/li&gt;
&lt;li&gt;enterprise knowledge graphs&lt;/li&gt;
&lt;li&gt;agent memory&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For these workloads, relationships are not optional metadata. They are the core of the problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Cleaner developer experience
&lt;/h3&gt;

&lt;p&gt;A single graph-vector database can make the stack easier to reason about.&lt;/p&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which database owns this part of retrieval?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;developers can ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What graph-vector query should I run?&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Why Rust?
&lt;/h2&gt;

&lt;p&gt;Samyama Graph is written in Rust.&lt;/p&gt;

&lt;p&gt;Rust is a good fit for database infrastructure because it gives strong control over memory, performance, and concurrency without requiring a garbage-collected runtime.&lt;/p&gt;

&lt;p&gt;For a graph-vector database, that matters.&lt;/p&gt;

&lt;p&gt;Graph workloads can be memory-intensive. Vector search can be compute-heavy. Combining both in one engine requires careful attention to performance and predictable execution.&lt;/p&gt;

&lt;p&gt;Rust gives us a strong foundation for that direction.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Samyama Graph supports today
&lt;/h2&gt;

&lt;p&gt;Samyama Graph currently focuses on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenCypher-style graph querying&lt;/li&gt;
&lt;li&gt;HNSW-based vector search&lt;/li&gt;
&lt;li&gt;Graph algorithms&lt;/li&gt;
&lt;li&gt;Redis-compatible protocol access&lt;/li&gt;
&lt;li&gt;Single-binary deployment&lt;/li&gt;
&lt;li&gt;Docker-based local setup&lt;/li&gt;
&lt;li&gt;Knowledge graph and GraphRAG-style workloads&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is not trying to be every database at once.&lt;/p&gt;

&lt;p&gt;The goal is to be useful for developers who need connected-data reasoning and semantic retrieval in the same system.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where it falls short today
&lt;/h2&gt;

&lt;p&gt;Samyama Graph is still growing, and we want to be transparent about that.&lt;/p&gt;

&lt;p&gt;A few important limitations today:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenCypher support is not yet complete&lt;/li&gt;
&lt;li&gt;The product and ecosystem are still evolving&lt;/li&gt;
&lt;li&gt;Examples, integrations, and tutorials are being expanded&lt;/li&gt;
&lt;li&gt;Some larger benchmark-style claims need more public reproducibility support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We believe open-source infrastructure earns trust when it is clear about both strengths and current gaps.&lt;/p&gt;




&lt;h2&gt;
  
  
  What can you build with Samyama Graph?
&lt;/h2&gt;

&lt;p&gt;Samyama Graph is useful when your application needs both connected-data reasoning and semantic retrieval.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GraphRAG systems that combine vector search with graph traversal&lt;/li&gt;
&lt;li&gt;Knowledge graph applications for enterprise, research, healthcare, and operations data&lt;/li&gt;
&lt;li&gt;AI agent memory where entities, tools, actions, and context are stored as a graph&lt;/li&gt;
&lt;li&gt;Biomedical and clinical graphs across papers, trials, pathways, drugs, and conditions&lt;/li&gt;
&lt;li&gt;Fraud and investigation graphs for relationship discovery and pattern analysis&lt;/li&gt;
&lt;li&gt;Infrastructure and dependency graphs for impact analysis and root-cause exploration&lt;/li&gt;
&lt;li&gt;Large-scale graph analytics using built-in graph algorithms&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Try it locally
&lt;/h2&gt;

&lt;p&gt;You can run Samyama Graph with Docker:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; 6379:6379 &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:8080 ghcr.io/samyama-ai/samyama-graph:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then connect with a Redis client:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;redis-cli &lt;span class="nt"&gt;-p&lt;/span&gt; 6379
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a simple graph:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;GRAPH.QUERY mydb &lt;span class="s2"&gt;"CREATE (a:Person {name: 'Alice'})-[:KNOWS]-&amp;gt;(b:Person {name: 'Bob'})"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Query it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;GRAPH.QUERY mydb &lt;span class="s2"&gt;"MATCH (a)-[:KNOWS]-&amp;gt;(b) RETURN a.name, b.name"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Why we are building this
&lt;/h2&gt;

&lt;p&gt;We believe the next generation of AI applications will need more than text retrieval.&lt;/p&gt;

&lt;p&gt;They will need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;semantic search&lt;/li&gt;
&lt;li&gt;structured relationships&lt;/li&gt;
&lt;li&gt;graph traversal&lt;/li&gt;
&lt;li&gt;explainable paths&lt;/li&gt;
&lt;li&gt;memory over entities and events&lt;/li&gt;
&lt;li&gt;ranking across both similarity and structure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is why we are building Samyama Graph.&lt;/p&gt;

&lt;p&gt;Not as “just another vector database.”&lt;/p&gt;

&lt;p&gt;Not as “just another graph database.”&lt;/p&gt;

&lt;p&gt;But as a graph-vector database for developers building GraphRAG, knowledge graph, and AI infrastructure systems.&lt;/p&gt;




&lt;h2&gt;
  
  
  Open source
&lt;/h2&gt;

&lt;p&gt;Samyama Graph is open source on GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/samyama-ai/samyama-graph" rel="noopener noreferrer"&gt;https://github.com/samyama-ai/samyama-graph&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If this project is useful to your GraphRAG, knowledge graph, or AI infrastructure work, a GitHub star helps more developers discover it.&lt;/p&gt;

&lt;p&gt;We would also welcome feedback, issues, examples, and contributions from developers working on graph databases, vector search, Rust infrastructure, RAG, and AI agents.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>database</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
