<?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>We nearly published a 2x regression that didn't exist</title>
      <dc:creator>Himadri</dc:creator>
      <pubDate>Mon, 24 Aug 2026 07:02:47 +0000</pubDate>
      <link>https://dev.to/samyama-ai/we-nearly-published-a-2x-regression-that-didnt-exist-3bii</link>
      <guid>https://dev.to/samyama-ai/we-nearly-published-a-2x-regression-that-didnt-exist-3bii</guid>
      <description>&lt;p&gt;We were about to ship a performance write-up claiming three queries had gotten 2-4x slower. All three numbers were wrong, and the reason is one every benchmark author should worry about: the &lt;em&gt;same binary&lt;/em&gt;, on the &lt;em&gt;same machine&lt;/em&gt;, running the &lt;em&gt;same query&lt;/em&gt;, gave different answers depending on what time of day we ran it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The measurement that didn't add up
&lt;/h2&gt;

&lt;p&gt;While checking a change to &lt;a href="https://github.com/samyama-ai/samyama-graph" rel="noopener noreferrer"&gt;Samyama Graph&lt;/a&gt;, we timed LDBC SNB Interactive query IC9 on one commit, one dataset, one 16-core workstation, four hours apart:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;when&lt;/th&gt;
&lt;th&gt;commit&lt;/th&gt;
&lt;th&gt;IC9 median&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;morning&lt;/td&gt;
&lt;td&gt;&lt;code&gt;b2a3557&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;2,822 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;evening&lt;/td&gt;
&lt;td&gt;&lt;code&gt;b2a3557&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;4,912 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Same binary. &lt;strong&gt;1.74x slower&lt;/strong&gt;, four hours later. &lt;code&gt;ps&lt;/code&gt; showed the benchmark pinned at 100% of one core and nothing else on the box above 9%. No other process explains that gap.&lt;/p&gt;

&lt;p&gt;So we ran it again — same binary, minutes apart this time, nothing changed in between:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;run&lt;/th&gt;
&lt;th&gt;IC9 median&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;2,011 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2,490 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;24% apart. Back to back.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why we almost missed it
&lt;/h2&gt;

&lt;p&gt;We had a real change on &lt;code&gt;main&lt;/code&gt; to compare against a baseline on an older commit. Baseline was measured in the morning; the new code was measured that evening. Read naively, the evening numbers said IC10 had gotten 2x slower, IC11 4x, IC12 3x.&lt;/p&gt;

&lt;p&gt;None of those regressions existed. The host itself had drifted between the two sittings — thermal throttling, frequency scaling, background load, whatever the cause, the machine at 6pm was not the machine at 9am. We re-ran everything back to back, on one sitting, and the picture reversed:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;query&lt;/th&gt;
&lt;th&gt;before (&lt;code&gt;b2a3557&lt;/code&gt;)&lt;/th&gt;
&lt;th&gt;after (&lt;code&gt;main&lt;/code&gt;)&lt;/th&gt;
&lt;th&gt;ratio&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;IC9&lt;/td&gt;
&lt;td&gt;4,912 ms&lt;/td&gt;
&lt;td&gt;2,490 ms&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.97x faster&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IC10&lt;/td&gt;
&lt;td&gt;340 ms&lt;/td&gt;
&lt;td&gt;352 ms&lt;/td&gt;
&lt;td&gt;~1.0x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IC11&lt;/td&gt;
&lt;td&gt;382 ms&lt;/td&gt;
&lt;td&gt;400 ms&lt;/td&gt;
&lt;td&gt;~1.0x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IC12&lt;/td&gt;
&lt;td&gt;428 ms&lt;/td&gt;
&lt;td&gt;483 ms&lt;/td&gt;
&lt;td&gt;~1.1x — inside the 24% band&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The change was a genuine ~2x win on IC9 and a wash everywhere else. The "2-4x regressions" were the host, not the code.&lt;/p&gt;

&lt;p&gt;We only caught it because a 4x regression from a small change looked implausible enough to re-measure. A smaller, real regression sitting inside that same noise band would not have raised anyone's eyebrows, and would have shipped.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this means for anyone reading benchmark numbers
&lt;/h2&gt;

&lt;p&gt;Two things, and they cut in opposite directions:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A regression can hide inside the noise.&lt;/strong&gt; If your benchmark's run-to-run variance is 24%, any real regression under ~25% is statistically invisible next to it. A nightly CI gate set to fire on a 25% threshold would page on noise some nights and miss a real 20% regression every other night.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;An improvement can be manufactured by timing alone.&lt;/strong&gt; Measure a baseline in the morning and a new version in the evening on a drifting host, and you can produce whatever ratio you want without touching a line of code. This is true whether the drift is accidental or not — which is exactly why "before" and "after" have to come from one sitting.&lt;/p&gt;

&lt;p&gt;Neither of these is specific to our engine, our benchmark suite, or Rust. It's a property of measuring wall-clock time on a shared physical machine, and it will bite any project that compares two numbers taken hours apart and calls the difference a result.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we changed
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;A calibration line in every run.&lt;/strong&gt; Each benchmark now times a short, fixed, CPU-bound operation at the start and the end, and reports it alongside load average and mean core frequency. Two runs whose calibration numbers disagree were taken on hosts running at different speeds, whatever the milliseconds of the actual queries say. If a single run's own opening and closing calibration differ by more than 10%, the run says so — its numbers aren't even internally comparable to each other.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A rule for before/after claims.&lt;/strong&gt; A performance comparison needs both numbers from one back-to-back session on one machine — not "the same machine," the same &lt;em&gt;sitting&lt;/em&gt;. Quote the ratio, not the absolute milliseconds, when the point is an improvement: a ratio measured back to back survives a slow host; an absolute number doesn't survive being read next to one taken elsewhere.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cross-engine ratios get the same treatment.&lt;/strong&gt; If a "we're 3x faster than X" claim has our number from one session and the competitor's from another, the ratio isn't a ratio — it's two unrelated numbers divided by each other. Same machine, same sitting, or the comparison doesn't get published.&lt;/p&gt;

&lt;p&gt;The full account, including the four numbers that started this, is in the original issue: &lt;a href="https://github.com/samyama-ai/samyama-graph/issues/529" rel="noopener noreferrer"&gt;samyama-ai/samyama-graph#529&lt;/a&gt;. The benchmark suite and the LDBC SNB reproducer that surfaced this are in the &lt;a href="https://github.com/samyama-ai/samyama-graph" rel="noopener noreferrer"&gt;repository&lt;/a&gt; — &lt;code&gt;cargo bench --bench ldbc_benchmark&lt;/code&gt;, documented in &lt;a href="https://github.com/samyama-ai/samyama-graph/blob/main/docs/BENCHMARKS.md" rel="noopener noreferrer"&gt;docs/BENCHMARKS.md&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We'd rather publish this than the regression that wasn't real.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>database</category>
      <category>performance</category>
      <category>opensource</category>
    </item>
    <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;Samyama Graph is open source on GitHub:&lt;br&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;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>
