Rag.NET.Raptor
1.0.0
dotnet add package Rag.NET.Raptor --version 1.0.0
NuGet\Install-Package Rag.NET.Raptor -Version 1.0.0
<PackageReference Include="Rag.NET.Raptor" Version="1.0.0" />
<PackageVersion Include="Rag.NET.Raptor" Version="1.0.0" />
<PackageReference Include="Rag.NET.Raptor" />
paket add Rag.NET.Raptor --version 1.0.0
#r "nuget: Rag.NET.Raptor, 1.0.0"
#:package Rag.NET.Raptor@1.0.0
#addin nuget:?package=Rag.NET.Raptor&version=1.0.0
#tool nuget:?package=Rag.NET.Raptor&version=1.0.0
Rag.NET.Raptor
RAPTOR for Rag.NET — Recursive Abstractive Processing for Tree-Organized Retrieval: chunks are clustered (UMAP + GMM), each cluster is summarised, and the summaries are clustered again, producing a tree whose upper levels answer broad questions that leaf-only retrieval misses.
Install
dotnet add package Rag.NET.Raptor
Setup
RAPTOR adds one behavior to each pipeline, and UseRaptor places both. TreeScope defaults to
Corpus — clustering over the whole corpus, not one document at a time — which needs somewhere to
keep leaf chunks between ingests, so leafStorePath is required unless you opt back into
PerDocument:
using Rag.NET.DependencyInjection;
using Rag.NET.Raptor;
services.AddRagNet(rag => rag.UseRaptor(leafStorePath: "raptor-leaves.db"));
RaptorIngestionBehavior lands directly after EmbeddingBehavior (it needs the embeddings) and
RaptorRetrievalBehavior directly before RerankingBehavior (score adjustments settle before
reranking sees them). To choose other positions, name them yourself — Add is idempotent and the
pipeline delegates run first, so your placement wins and each behavior appears exactly once:
using Rag.NET.DependencyInjection;
using Rag.NET.Ingestion.Behaviors;
using Rag.NET.Raptor;
using Rag.NET.Retrieval.Behaviors;
services.AddRagNet(
configure: rag => rag.UseRaptor(leafStorePath: "raptor-leaves.db"),
ingestion: pipeline => pipeline
.Add<RaptorIngestionBehavior>(after: typeof(EmbeddingBehavior)),
retrieval: pipeline => pipeline
.Add<RaptorRetrievalBehavior>(before: typeof(RerankingBehavior)));
Prefer isolated per-document trees instead — no cross-document summaries, no leaf store required:
services.AddRagNet(rag => rag.UseRaptor(o => o.TreeScope = RaptorTreeScope.PerDocument));
Example
Tune tree construction and how summaries compete with leaf chunks at query time:
rag.UseRaptor(
options =>
{
options.MinChunksForRaptor = 5; // skip small documents
options.StoreLeafChunks = true; // keep originals alongside summaries
},
retrieval: options =>
{
options.Mode = RaptorRetrievalMode.Boost;
options.SummaryBoostFactor = 1.5; // score multiplier for summaries
},
leafStorePath: "raptor-leaves.db");
RaptorRetrievalMode.Filter with MinRaptorLevel/MaxRaptorLevel restricts results to
specific tree levels instead of boosting.
Full guide
| 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
- MathNet.Numerics (>= 5.0.0)
- Rag.NET (>= 1.0.0)
- Rag.NET.Raptor.Store (>= 1.0.0)
- ZeroAlloc.Validation (>= 1.5.6)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.