![]() |
VOOZH | about |
dotnet add package RAGify.Chunking --version 1.0.0
NuGet\Install-Package RAGify.Chunking -Version 1.0.0
<PackageReference Include="RAGify.Chunking" Version="1.0.0" />
<PackageVersion Include="RAGify.Chunking" Version="1.0.0" />Directory.Packages.props
<PackageReference Include="RAGify.Chunking" />Project file
paket add RAGify.Chunking --version 1.0.0
#r "nuget: RAGify.Chunking, 1.0.0"
#:package RAGify.Chunking@1.0.0
#addin nuget:?package=RAGify.Chunking&version=1.0.0Install as a Cake Addin
#tool nuget:?package=RAGify.Chunking&version=1.0.0Install as a Cake Tool
<div align="center">
<img src="assets/RAGify.png" alt="RAGify" width="250" height="250">
Build powerful RAG applications in .NET with ease. RAGify is a modular, production-ready framework that simplifies document ingestion, intelligent chunking, vector embeddings, and semantic search. Switch between 8+ embedding providers, customize chunking strategies, and scale from prototype to productionβall with a clean, intuitive API.
</div>
RAGify supports 8 production-ready embedding providers:
| Provider | Models | Use Case |
|---|---|---|
| OpenAI | text-embedding-ada-002, text-embedding-3-small, text-embedding-3-large | Production applications, high accuracy |
| Azure OpenAI | All OpenAI models via Azure | Enterprise deployments, compliance |
| Ollama | nomic-embed-text, all-minilm, and 100+ models | Local development, privacy-sensitive |
| ONNX/SentenceTransformer | Any ONNX-compatible model | Offline inference, cost optimization |
| Hugging Face | 1000+ models via Inference API | Research, experimentation |
| Cohere | embed-english-v3.0, embed-multilingual-v3.0 | Multilingual applications |
| VoyageAI | voyage-large-2, voyage-2, voyage-code-2 | Code embeddings, specialized tasks |
| Google Gemini | text-embedding-004, multilingual models | Google Cloud integrations |
Key Capabilities:
RAGify supports 5 production-ready vector stores:
| Store | Type | Best For | Production Ready |
|---|---|---|---|
| In-Memory | Local | Development, testing, small datasets (< 100K vectors) | β |
| Qdrant | Open-source | High-performance, self-hosted, cost-efficient | β |
| PgVector | PostgreSQL Extension | Existing PostgreSQL infrastructure, small-medium datasets | β |
| Pinecone | Managed Cloud | Fully managed, serverless, auto-scaling | β |
| Weaviate | Open-source/Cloud | Hybrid search, flexible schema, multi-modal | β |
Key Capabilities:
Note:
RAGifyis the main NuGet package that includes all components. Individual libraries (RAGify.Abstractions,RAGify.Core,RAGify.Ingestion, etc.) are also published separately for users who want to use only specific components.
# Install the main package (includes all components)
Install-Package RAGify
# Or install individual components separately
Install-Package RAGify.Abstractions
Install-Package RAGify.Core
Install-Package RAGify.Ingestion
Install-Package RAGify.Chunking
Install-Package RAGify.Embeddings
Install-Package RAGify.VectorStores
Install-Package RAGify.Retrieval
# Install the main package
dotnet add package RAGify
# Or install individual components separately
dotnet add package RAGify.Abstractions
dotnet add package RAGify.Core
dotnet add package RAGify.Ingestion
dotnet add package RAGify.Chunking
dotnet add package RAGify.Embeddings
dotnet add package RAGify.VectorStores
dotnet add package RAGify.Retrieval
<ItemGroup>
<PackageReference Include="RAGify" Version="1.0.0" />
</ItemGroup>
using RAGify;
using RAGify.Core;
// Build and configure the RAG system
var orchestrator = new RagifyConfig()
.WithChunking(ChunkingStrategyType.SentenceAware, new ChunkingOptions
{
ChunkSize = 1000,
OverlapSize = 200,
RespectSentenceBoundaries = true
})
.WithOllamaEmbeddings("all-minilm") // Requires Ollama running locally
.WithInMemoryVectorStore()
.WithDefaultExtractors()
.Build();
// Ingest a document
var document = Document.FromText(
"Your document content here...",
"doc-1",
"source-1"
);
await orchestrator.IngestAsync(document);
// Query the system
var result = await orchestrator.QueryAsync("What is the main topic?");
// Access retrieved context
foreach (var context in result.Context)
{
Console.WriteLine($"Similarity: {context.Similarity:F4}");
Console.WriteLine($"Text: {context.Chunk.Text}");
}
var orchestrator = new RagifyConfig()
.WithChunking(ChunkingStrategyType.SentenceAware, new ChunkingOptions
{
ChunkSize = 1000,
OverlapSize = 200
})
.WithOpenAIEmbeddings(
apiKey: "your-api-key",
model: "text-embedding-3-small",
dimension: 1536
)
.WithInMemoryVectorStore()
.WithDefaultExtractors()
.Build();
var orchestrator = new RagifyConfig()
.WithChunking(ChunkingStrategyType.SentenceAware)
.WithAzureOpenAIEmbeddings(
apiKey: "your-azure-api-key",
deploymentName: "text-embedding-ada-002",
resourceName: "your-resource-name",
apiVersion: "2024-02-15-preview"
)
.WithInMemoryVectorStore()
.WithDefaultExtractors()
.Build();
The solution follows Clean Architecture and is organized into multiple NuGet-ready class libraries:
RAGify.sln
β
βββ src/
β βββ RAGify.Abstractions # Core interfaces and contracts
β βββ RAGify.Core # Domain models and utilities
β βββ RAGify # Main library (includes all components)
β βββ RAGify.Ingestion # Document ingestion services
β βββ RAGify.Chunking # Text chunking strategies
β βββ RAGify.Embeddings # Embedding provider implementations
β βββ RAGify.VectorStores # Vector storage implementations
β βββ RAGify.Retrieval # Retrieval engine
β
βββ test/
βββ RAGify.ConsoleTest # Interactive console test application
RAGify.Abstractions (no dependencies)
β
RAGify.Core β RAGify.Ingestion, RAGify.Chunking, RAGify.Embeddings,
RAGify.VectorStores, RAGify.Retrieval
β
RAGify (main library - orchestrates all components)
.WithOpenAIEmbeddings(
apiKey: "your-api-key",
model: "text-embedding-3-small", // or "text-embedding-ada-002"
dimension: 1536 // Optional, model-specific
)
.WithAzureOpenAIEmbeddings(
apiKey: "your-azure-api-key",
deploymentName: "text-embedding-ada-002",
resourceName: "your-resource-name",
apiVersion: "2024-02-15-preview"
)
.WithOllamaEmbeddings(
model: "all-minilm", // or "nomic-embed-text"
baseUrl: "http://localhost:11434" // Optional, defaults to localhost
)
Prerequisites: Install Ollama and pull the model:
ollama pull all-minilm
.WithOnnxEmbeddings(
modelPath: "path/to/your/model.onnx",
dimension: 384, // Optional, will be inferred if not specified
tokenizer: text => /* Your tokenization logic */ // Optional
)
.WithHuggingFaceEmbeddings(
apiKey: "your-hf-token", // Optional for public models
modelId: "sentence-transformers/all-MiniLM-L6-v2"
)
.WithCohereEmbeddings(
apiKey: "your-api-key",
model: "embed-english-v3.0", // or "embed-multilingual-v3.0"
inputType: "search_document", // or "search_query", "classification", "clustering"
dimension: 1024 // Optional: 1024, 384, or 512 for v3 models
)
.WithVoyageAIEmbeddings(
apiKey: "your-api-key",
model: "voyage-large-2" // or "voyage-2", "voyage-code-2", "voyage-lite-02"
)
.WithGoogleGeminiEmbeddings(
apiKey: "your-api-key",
model: "text-embedding-004" // or "text-multilingual-embedding-002"
)
RAGify provides production-ready implementations for popular vector databases:
.WithInMemoryVectorStore()
Use Cases: Development, testing, prototyping, small datasets (< 100K vectors) Pros: Fast, no setup required, thread-safe Cons: Not persistent, limited by memory
using RAGify.VectorStores;
// Using host and port
var qdrantStore = new QdrantVectorStore(
host: "localhost",
port: 6333,
collectionName: "ragify_vectors",
vectorSize: 1536,
useHttps: false,
apiKey: null // Optional for authentication
);
// Or using base URL
var qdrantStore = new QdrantVectorStore(
baseUrl: "https://your-qdrant-instance.com",
collectionName: "ragify_vectors",
vectorSize: 1536,
apiKey: "your-api-key" // Optional
);
var orchestrator = new RagifyConfig()
.WithChunking(ChunkingStrategyType.SentenceAware)
.WithOpenAIEmbeddings("your-api-key", "text-embedding-3-small")
.WithVectorStore(qdrantStore)
.Build();
Prerequisites:
docker run -p 6333:6333 qdrant/qdrantProduction Tips:
using RAGify.VectorStores;
// Basic usage with default queries
var pgStore = new PgVectorStore(
connectionString: "Host=localhost;Database=ragify;Username=postgres;Password=password",
tableName: "ragify_vectors",
vectorSize: 1536
);
// Advanced usage with custom query configuration
var customOptions = new PgVectorStoreOptions
{
// Customize search query for better performance
SearchQuery = @"
SELECT vector_id,
1 - (embedding <=> @queryVector::vector) as similarity,
metadata
FROM {tableName}
WHERE {whereClause}
AND (1 - (embedding <=> @queryVector::vector)) >= @threshold
ORDER BY embedding <=> @queryVector::vector
LIMIT @topK",
// Customize filter conditions
FilterConditionTemplate = "metadata->>'{key}' = @filterValue{index}",
// Customize other queries as needed
UpsertQuery = @"
INSERT INTO {tableName} (vector_id, embedding, metadata)
VALUES (@vectorId, @embedding::vector, @metadata::jsonb)
ON CONFLICT (vector_id)
DO UPDATE SET embedding = @embedding::vector, metadata = @metadata::jsonb"
};
var pgStore = new PgVectorStore(
connectionString: "Host=localhost;Database=ragify;Username=postgres;Password=password",
tableName: "ragify_vectors",
vectorSize: 1536,
options: customOptions
);
var orchestrator = new RagifyConfig()
.WithChunking(ChunkingStrategyType.SentenceAware)
.WithOpenAIEmbeddings("your-api-key", "text-embedding-3-small")
.WithVectorStore(pgStore)
.Build();
Prerequisites:
CREATE EXTENSION vector;Production Tips:
PgVectorStoreOptionsCREATE INDEX ON ragify_vectors USING hnsw (embedding vector_cosine_ops);
Query Customization:
The PgVectorStoreOptions class allows you to customize all SQL queries:
UpsertQuery: Customize insert/update logicSearchQuery: Optimize search performanceDeleteByIdQuery: Custom delete operationsDeleteByDocumentIdQuery: Batch delete operationsFilterConditionTemplate: Custom metadata filteringusing RAGify.VectorStores;
// Using environment-based URL
var pineconeStore = new PineconeVectorStore(
apiKey: "your-api-key",
indexName: "ragify-index",
environment: "us-east-1-aws" // Your Pinecone environment
);
// Or using custom base URL
var pineconeStore = new PineconeVectorStore(
apiKey: "your-api-key",
indexName: "ragify-index",
baseUrl: new Uri("https://ragify-index-xxxxx.svc.pinecone.io")
);
var orchestrator = new RagifyConfig()
.WithChunking(ChunkingStrategyType.SentenceAware)
.WithOpenAIEmbeddings("your-api-key", "text-embedding-3-small")
.WithVectorStore(pineconeStore)
.Build();
Prerequisites:
Production Tips:
using RAGify.VectorStores;
var weaviateStore = new WeaviateVectorStore(
baseUrl: "http://localhost:8080", // or your Weaviate Cloud URL
className: "RAGifyVector",
apiKey: null // Optional, required for Weaviate Cloud
);
var orchestrator = new RagifyConfig()
.WithChunking(ChunkingStrategyType.SentenceAware)
.WithOpenAIEmbeddings("your-api-key", "text-embedding-3-small")
.WithVectorStore(weaviateStore)
.Build();
Prerequisites:
docker run -p 8080:8080 semitechnologies/weaviateProduction Tips:
RAGify supports comprehensive logging through Microsoft.Extensions.Logging. You can configure logging to monitor ingestion, chunking, embedding generation, vector storage, and retrieval operations.
using Microsoft.Extensions.Logging;
// Create a logger factory
var loggerFactory = LoggerFactory.Create(builder =>
{
builder
.AddConsole()
.SetMinimumLevel(LogLevel.Information); // Or LogLevel.Debug for detailed logs
});
// Create a logger for the orchestrator
var logger = loggerFactory.CreateLogger<Ragify>();
// Pass the logger to the builder
var orchestrator = new RagifyConfig()
.WithChunking(ChunkingStrategyType.SentenceAware)
.WithOllamaEmbeddings("all-minilm")
.WithInMemoryVectorStore()
.WithLogger(logger) // Configure logging
.Build();
RAGify uses standard logging levels:
For console applications, use the console logger:
using Microsoft.Extensions.Logging;
var loggerFactory = LoggerFactory.Create(builder =>
{
builder
.AddConsole()
.SetMinimumLevel(LogLevel.Debug); // Show all logs including debug
});
var logger = loggerFactory.CreateLogger<Ragify>();
var orchestrator = new RagifyConfig()
.WithChunking(ChunkingStrategyType.SentenceAware)
.WithOllamaEmbeddings("all-minilm")
.WithInMemoryVectorStore()
.WithLogger(logger)
.Build();
For production applications, configure file logging:
using Microsoft.Extensions.Logging;
var loggerFactory = LoggerFactory.Create(builder =>
{
builder
.AddConsole()
.AddFile("logs/ragify-{Date}.txt") // Requires Serilog.Extensions.Logging.File
.SetMinimumLevel(LogLevel.Information);
});
var logger = loggerFactory.CreateLogger<Ragify>();
In ASP.NET Core applications, logging is automatically configured:
// In Startup.cs or Program.cs
services.AddLogging(builder =>
{
builder.AddConsole();
builder.SetMinimumLevel(LogLevel.Debug);
});
// Inject ILogger in your service
public class MyRagService
{
private readonly ILogger<Ragify> _logger;
private readonly IRagify _ragify;
public MyRagService(ILogger<Ragify> logger)
{
_logger = logger;
_ragify = new RagifyConfig()
.WithChunking(ChunkingStrategyType.SentenceAware)
.WithOpenAIEmbeddings(apiKey, model)
.WithInMemoryVectorStore()
.WithLogger(_logger)
.Build();
}
}
RAGify logs the following operations:
Document Ingestion:
Query Processing:
Component-Specific Logs:
LogLevel.Debug to see detailed operationsLogLevel.Information or higher to reduce log volumeLogLevel.Debug to diagnose issuesInformation level to track operation timingError level for exceptions and failuresusing Microsoft.Extensions.Logging;
// Configure logging
var loggerFactory = LoggerFactory.Create(builder =>
{
builder
.AddConsole(options =>
{
options.FormatterName = "simple";
})
.AddSimpleConsole(options =>
{
options.SingleLine = true;
options.TimestampFormat = "HH:mm:ss ";
})
.SetMinimumLevel(LogLevel.Debug);
});
var logger = loggerFactory.CreateLogger<Ragify>();
// Build orchestrator with logging
var orchestrator = new RagifyConfig()
.WithChunking(ChunkingStrategyType.SentenceAware, new ChunkingOptions
{
ChunkSize = 1000,
OverlapSize = 200
})
.WithOllamaEmbeddings("all-minilm")
.WithInMemoryVectorStore()
.WithLogger(logger)
.Build();
// Now all operations will be logged
await orchestrator.IngestAsync(document);
var result = await orchestrator.QueryAsync("your query");
Note: Logging is optional. If you don't provide a logger, RAGify will work without logging, but you won't see operational details.
new ChunkingOptions
{
ChunkSize = 1000, // Maximum chunk size in characters
OverlapSize = 200, // Overlap between chunks (prevents context loss)
RespectSentenceBoundaries = true, // Try to break at sentence boundaries
RespectTokenBoundaries = false // Respect token boundaries (requires tokenizer)
}
Recommendations:
ChunkSize = 1000-1500, OverlapSize = 200-300ChunkSize = 500-800, OverlapSize = 100-150SentenceAware strategy for natural languageFixedSize for structured datanew RetrievalOptions
{
TopK = 5, // Maximum number of results to return
SimilarityThreshold = 0.7, // Minimum similarity (0.0 to 1.0)
Filter = new MetadataFilter // Optional metadata filter
{
Filters = new Dictionary<string, object>
{
["DocumentId"] = "doc-1",
["Category"] = "Technical"
}
}
}
Similarity Threshold Guidelines:
0.0-0.5: Very permissive, may return irrelevant results0.5-0.7: Balanced (recommended for most use cases)0.7-0.9: Strict, only highly relevant results0.9+: Very strict, may miss relevant resultsThe PgVectorStore supports full query customization through PgVectorStoreOptions for production use:
var options = new PgVectorStoreOptions
{
// Customize search query for your specific needs
SearchQuery = @"
SELECT vector_id,
1 - (embedding <=> @queryVector::vector) as similarity,
metadata
FROM {tableName}
WHERE {whereClause}
AND (1 - (embedding <=> @queryVector::vector)) >= @threshold
ORDER BY embedding <=> @queryVector::vector
LIMIT @topK",
// Customize filter condition template
FilterConditionTemplate = "metadata->>'{key}' = @filterValue{index}",
// Customize upsert query
UpsertQuery = @"
INSERT INTO {tableName} (vector_id, embedding, metadata)
VALUES (@vectorId, @embedding::vector, @metadata::jsonb)
ON CONFLICT (vector_id)
DO UPDATE SET embedding = @embedding::vector, metadata = @metadata::jsonb",
// Customize delete queries
DeleteByIdQuery = "DELETE FROM {tableName} WHERE vector_id = @vectorId",
DeleteByDocumentIdQuery = "DELETE FROM {tableName} WHERE metadata->>'DocumentId' = @documentId",
// Customize table creation
CreateTableQuery = @"
CREATE TABLE IF NOT EXISTS {tableName} (
vector_id TEXT PRIMARY KEY,
embedding vector({vectorSize}),
metadata JSONB,
created_at TIMESTAMP DEFAULT NOW()
)",
// Customize index creation (use HNSW for better performance)
CreateIndexQuery = @"
CREATE INDEX IF NOT EXISTS {tableName}_embedding_idx
ON {tableName}
USING hnsw (embedding vector_cosine_ops) WITH (m = 16, ef_construction = 64)"
};
var pgStore = new PgVectorStore(
connectionString: "Host=localhost;Database=ragify;Username=postgres;Password=password",
tableName: "ragify_vectors",
vectorSize: 1536,
options: options
);
Placeholders:
{tableName}: Replaced with the actual table name{vectorSize}: Replaced with the vector dimension{whereClause}: Replaced with filter conditions in search queries{key}: Replaced with metadata key in filter templates{index}: Replaced with parameter index in filter templatesProduction Recommendations:
created_at timestamp for audit trailsvar ingestionService = DocumentIngestionService.CreateDefault();
// Ingest a single file (automatically detects format)
var document = await ingestionService.IngestFromFileAsync(
filePath: "document.pdf",
documentId: "doc-1",
metadata: new Dictionary<string, object>
{
["Category"] = "Technical",
["Author"] = "John Doe"
}
);
await orchestrator.IngestAsync(document);
var documents = new List<IDocument>();
foreach (var filePath in Directory.GetFiles("documents/", "*.pdf"))
{
var doc = await ingestionService.IngestFromFileAsync(filePath);
documents.Add(doc);
}
await orchestrator.IngestBatchAsync(documents);
var result = await orchestrator.QueryAsync(
query: "What is machine learning?",
options: new RetrievalOptions
{
TopK = 10,
SimilarityThreshold = 0.7,
Filter = new MetadataFilter
{
Filters = new Dictionary<string, object>
{
["Category"] = "Technical",
["Year"] = 2024
}
}
}
);
using RAGify.VectorStores;
var qdrantStore = new QdrantVectorStore(
host: "localhost",
port: 6333,
collectionName: "ragify_vectors",
vectorSize: 1536
);
var orchestrator = new RagifyConfig()
.WithChunking(ChunkingStrategyType.SentenceAware)
.WithOpenAIEmbeddings("your-api-key", "text-embedding-3-small")
.WithVectorStore(qdrantStore)
.WithDefaultExtractors()
.Build();
using RAGify.VectorStores;
// Create custom query configuration
var pgOptions = new PgVectorStoreOptions
{
// Optimize search query for your use case
SearchQuery = @"
SELECT vector_id,
1 - (embedding <=> @queryVector::vector) as similarity,
metadata
FROM {tableName}
WHERE {whereClause}
AND (1 - (embedding <=> @queryVector::vector)) >= @threshold
ORDER BY embedding <=> @queryVector::vector
LIMIT @topK"
};
var pgStore = new PgVectorStore(
connectionString: "Host=localhost;Database=ragify;Username=postgres;Password=password",
tableName: "ragify_vectors",
vectorSize: 1536,
options: pgOptions
);
var orchestrator = new RagifyConfig()
.WithChunking(ChunkingStrategyType.SentenceAware)
.WithOpenAIEmbeddings("your-api-key", "text-embedding-3-small")
.WithVectorStore(pgStore)
.WithDefaultExtractors()
.Build();
using RAGify.VectorStores;
var pineconeStore = new PineconeVectorStore(
apiKey: "your-api-key",
indexName: "ragify-index",
environment: "us-east-1-aws"
);
var orchestrator = new RagifyConfig()
.WithChunking(ChunkingStrategyType.SentenceAware)
.WithOpenAIEmbeddings("your-api-key", "text-embedding-3-small")
.WithVectorStore(pineconeStore)
.WithDefaultExtractors()
.Build();
using RAGify.VectorStores;
var weaviateStore = new WeaviateVectorStore(
baseUrl: "http://localhost:8080",
className: "RAGifyVector"
);
var orchestrator = new RagifyConfig()
.WithChunking(ChunkingStrategyType.SentenceAware)
.WithOpenAIEmbeddings("your-api-key", "text-embedding-3-small")
.WithVectorStore(weaviateStore)
.WithDefaultExtractors()
.Build();
using RAGify.Abstractions;
using RAGify.Core;
public class SemanticChunkingStrategy : IChunkingStrategy
{
private readonly ChunkingOptions _options;
public async Task<IReadOnlyList<IChunk>> ChunkAsync(
IDocument document,
CancellationToken cancellationToken = default)
{
// Your custom chunking logic
// See source code for full example
}
}
PgVectorStoreOptions to optimize SQL queries| Use Case | Recommended Store | Reason |
|---|---|---|
| Development/Testing | In-Memory | Fast, no setup required |
| Small dataset (< 100K) | PgVector | Simple, uses existing PostgreSQL |
| Medium dataset (100K-5M) | Qdrant or PgVector | Good performance, cost-effective |
| Large dataset (> 5M) | Qdrant, Pinecone, or Weaviate | Better scalability |
| Existing PostgreSQL | PgVector | Minimal infrastructure changes |
| Fully managed | Pinecone | Zero infrastructure management |
| Hybrid search needed | Weaviate | Built-in keyword + vector search |
| Self-hosted, cost-sensitive | Qdrant | Open-source, efficient |
| Multi-modal data | Weaviate | Native multi-modal support |
Solution: Ensure you're using WithDefaultExtractors() or add a custom extractor for your file type.
Solution:
ollama listollama pull all-minilmSolution:
Solution:
Solution:
PgVectorStoreOptionsSolution:
CREATE EXTENSION vector;PgVectorStoreOptionsThe RAGify.ConsoleTest project provides an interactive test harness for manual testing and validation.
# Make sure Ollama is running and the model is available
ollama pull all-minilm:latest
# Run the console app
dotnet run --project test/RAGify.ConsoleTest
The console app is pre-configured with logging enabled. You'll see detailed logs for:
Logs are displayed in the console with timestamps and color-coded log levels. To see even more detailed logs (including Debug level), modify the SetMinimumLevel in Program.cs from LogLevel.Information to LogLevel.Debug.
The framework is designed to support:
We welcome contributions! Please follow these guidelines:
git checkout -b feature/amazing-featuregit push origin feature/amazing-featureModels foldersThis project is licensed under the MIT License - see the file for details.
Made with β€οΈ for the .NET community
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
Showing the top 1 NuGet packages that depend on RAGify.Chunking:
| Package | Downloads |
|---|---|
|
RAGify
A RAG (Retrieval-Augmented Generation) framework for .NET. Build intelligent applications with document ingestion, text chunking, embedding generation, vector storage, and semantic search. Includes all RAGify components in one package. Individual modules are also available as separate packages for fine-grained control. |
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 145 | 1/11/2026 |