Yatagarasu 0.8.0

dotnet add package Yatagarasu --version 0.8.0
                    
NuGet\Install-Package Yatagarasu -Version 0.8.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Yatagarasu" Version="0.8.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Yatagarasu" Version="0.8.0" />
                    
Directory.Packages.props
<PackageReference Include="Yatagarasu" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Yatagarasu --version 0.8.0
                    
#r "nuget: Yatagarasu, 0.8.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Yatagarasu@0.8.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Yatagarasu&version=0.8.0
                    
Install as a Cake Addin
#tool nuget:?package=Yatagarasu&version=0.8.0
                    
Install as a Cake Tool

Yatagarasu

日本語のREADMEは README_ja.md をご覧ください。

CI AOT publish smoke OS portability

Yatagarasu is an embedded graph database engine for .NET with integrated vector and full-text search. It stores property graphs and role-aware n-ary Nexus relationships in a single file and provides source-generated typed mapping, fluent graph traversal, transactional persistence, KNN search, and BM25 search.

The core engine is implemented in pure C#, has no third-party package or unmanaged dependency, and supports NativeAOT.

Features

  • Embedded, in-process operation with no server process
  • Single-file property graph storage
  • Type-safe mapping generated from [Vertex], [Edge], [Nexus], and [Property] models
  • Role-aware n-ary Nexus relationships with typed workspace APIs
  • Fluent graph traversal and declarative pattern matching
  • Single Writer with concurrent Snapshot Readers
  • Redo-only WAL recovery and durable commits
  • B+Tree scalar indexes with opt-in unique string constraints
  • KNN vector search with immutable HNSW segments
  • BM25 full-text search with immutable index segments
  • Hybrid retrieval for local RAG backends

Quick start

Define a typed graph model.

using Yatagarasu.Api;

[Vertex]
public partial class Person
{
    [Indexed(Unique = true)]
    [Property]
    public string Name { get; set; } = "";

    [Property]
    public int Age { get; set; }
}

[Edge<Person, Person>]
public partial class Knows
{
    [Property]
    public string Since { get; set; } = "";
}

Write and query it through a typed workspace. Successful write callbacks commit automatically.

using Yatagarasu;

using var graph = GraphWorkspace.Open("people.yata");
graph.Write(write =>
{
    var people = write.Set<Person>();
    var alice = write.Add(people, new Person { Name = "Alice", Age = 30 });
    var bob = write.Add(people, new Person { Name = "Bob", Age = 25 });
    write.Connect(alice, new Knows { Since = "2026" }, bob);
});

IReadOnlyList<Person> known = graph.Read(read =>
    read.Raw.Query.Vertices<Person>()
        .Has(p => p.Name, "Alice")
        .Out<Person>(Knows.GraphType)
        .Where(p => p.Age < 30)
        .ToList());

The Yatagarasu package includes the model attributes and source generator. Projects with ImplicitUsings enabled receive the Yatagarasu and Yatagarasu.Api namespaces automatically.

This source tree targets 0.8.0 and remains pre-1.0. See the release notes.

Name

Yatagarasu is the three-legged guiding crow of Japanese mythology. Its three legs represent the graph, vector, and full-text engines, while its role as Emperor Jimmu's guide reflects the product's purpose: guiding applications to the information they need.

Local RAG

Yatagarasu.Rag provides Document and Chunk ingestion, chunking, re-ingestion, metadata filtering, vector and BM25 fusion, and graph expansion for surrounding context and parent documents.

Embedding generation stays in the calling application and is injected through IChunkEmbedder. Corpus-level ingestion profiles prevent mixed embedding semantics, while selected metadata keys can be promoted to scalar indexes.

See the RAG sample and the local RAG cookbook.

Reference performance

Operation Measured result
Vertex insert, amortized in one transaction ~3.5–4 µs/op
Vertex insert with properties ~6 µs/op
Edge insert ~7 µs/op
Durable single-operation commit ~1.0 ms/commit
One-hop scan, degree 100, adjacency segment ~0.35 µs
One-hop fluent query, degree 100 ~4.2 µs/query
BulkLoader, 100,000 edges ~11.8× regular batched transactions
HNSW true recall@10, N=10,000, dim=384 0.950

Results were measured in process on an AMD Ryzen 7 5700X with .NET 10. They are reference values rather than cross-machine guarantees. See the benchmark summary for details.

Limitations

Constraint Behavior
Single writer One write transaction runs at a time; readers continue on independent snapshots
In-process only One process opens a database file exclusively; no network protocol is included
No automatic physical format migration Databases with an incompatible format must be rebuilt from source data
Derived vector rebuild Exact scan is used while immutable HNSW state is unavailable or being rebuilt

See the known limits for the complete contract.

Documentation

Document Contents
Getting Started Installation and first database
API reference Approved public types and members
As-built specification Current storage and execution contracts
0.7.0 rename guide Package, namespace, and .yata migration

Samples

Samples are available under samples/, including CRUD, typed models, Nexus relationships, traversal, pattern matching, vector search, RAG, hosting, observability, and migrations.

License

MIT License

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on Yatagarasu:

Package Downloads
Yatagarasu.Hosting

Yatagarasu グラフデータベースと Microsoft.Extensions.Hosting / DependencyInjection の統合。Options バインディング・DI 登録・ロギング連携で、汎用ホスト上のアプリに Yatagarasu を組み込めるようにする。

Yatagarasu.Rag

Yatagarasu 上のローカル RAG スキーマ層。文書取込・チャンキング・再取込・ハイブリッド検索 (ベクトル + BM25 全文検索) + グラフ展開を提供し、外部依存なし・単一ファイルでローカル RAG バックエンドを構築できる。

Yatagarasu.OpenTelemetry

Yatagarasu グラフデータベースの OpenTelemetry 計装登録。Yatagarasu が発行する traces / metrics を OpenTelemetry に接続する拡張で、実 exporter (Console / Prometheus / Jaeger 等) はアプリ側で選択する。

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.8.0 125 9/9/2026
0.7.0 133 8/24/2026