Skip to content

System Overview

The engine is a Cargo workspace with 7 crates organized as a unidirectional pipeline.

Crates

CrateSource filesTestsPurpose
nis2-ingestionchunk.rs, parser.rs, types.rs3JSON parser, semantic chunking by legal hierarchy
nis2-vectordbembed.rs, lance.rs, store.rs1LanceDB storage, BGE-Small embeddings, HNSW search
nis2-rulesengine.rs, obligations.rs, schema.rs, validation.rs, adapters.rs20Boolean decision trees, obligation catalog, JSON Schema validation
nis2-mcp-serverprotocol.rs, tools.rs, server.rs13MCP JSON-RPC 2.0 server over stdio
nis2-slmprompt.rs, grammar.rs, inference.rs, report.rs18Prompt construction, GBNF grammar, template report generation
nis2-apihandlers.rs, routes.rs6Axum REST API, benchmark binary
nis2-chatengine.rs, cache.rs, dataset*.rs20Semantic cache, BM25 search, session tracking, multilingual Q&A

Data flow

data/sources/*.json -> ingestion (parse+chunk) -> vectordb (embed+index)
                                                        |
CompanyProfile -> rules (evaluate) -> ComplianceStatus -> slm (report)
                       |                    |
                  mcp-server            api-server
                  (stdio)              (HTTP :8080)

Binaries

BinaryCratePurpose
indexervectordbPopulate LanceDB from JSON sources
searchvectordbSemantic search over indexed provisions
demorulesPrint ComplianceStatus JSON
reportslmGenerate Italian compliance report
mcp-servermcp-serverMCP JSON-RPC server
api-serverapiAxum HTTP server
benchapiBenchmark suite
chatchatInteractive CLI chatbot

Released under the EUPL-1.2 License.