Yatagarasu 0.8.0
dotnet add package Yatagarasu --version 0.8.0
NuGet\Install-Package Yatagarasu -Version 0.8.0
<PackageReference Include="Yatagarasu" Version="0.8.0" />
<PackageVersion Include="Yatagarasu" Version="0.8.0" />
<PackageReference Include="Yatagarasu" />
paket add Yatagarasu --version 0.8.0
#r "nuget: Yatagarasu, 0.8.0"
#:package Yatagarasu@0.8.0
#addin nuget:?package=Yatagarasu&version=0.8.0
#tool nuget:?package=Yatagarasu&version=0.8.0
Yatagarasu
日本語のREADMEは README_ja.md をご覧ください。
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
| Product | Versions 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. |
-
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.