Engine API Reference
The main orchestrator for executing RAG requests with governance and policy enforcement.
RAGControl
from rag_control import RAGControl
Initialize with adapters and governance configuration.
Constructor
def __init__(
self,
llm: LLM,
query_embedding: QueryEmbedding,
vector_store: VectorStore,
config: ControlPlaneConfig | None = None,
config_path: str | Path | None = None,
audit_logger: AuditLogger | None = None,
tracer: Tracer | None = None,
metrics_recorder: MetricsRecorder | None = None,
)
Parameters:
llm: LLM- LLM adapter for generationquery_embedding: QueryEmbedding- Query embedding adaptervector_store: VectorStore- Vector store adapter for retrievalconfig: ControlPlaneConfig | None- Config object (optional, use config_path instead)config_path: str | Path | None- Path to YAML config file (optional)audit_logger: AuditLogger | None- Audit logger (default: StructlogAuditLogger)tracer: Tracer | None- Distributed tracer (default: default tracer)metrics_recorder: MetricsRecorder | None- Metrics recorder (default: default recorder)
Note: Provide exactly one of config or config_path.
Methods
run()
Execute a query synchronously and return a complete response.
run(query: str, user_context: UserContext) -> RunResponse
Returns: RunResponse with policy name, enforcement result, and LLMResponse
stream()
Stream a query response for real-time output.
stream(query: str, user_context: UserContext) -> StreamResponse
Returns: StreamResponse with policy name, enforcement result, and LLMStreamResponse
Return Types
RunResponse
policy_name: str- Policy appliedorg_id: str- Organization IDuser_id: str- User IDtrace_id: str | None- Trace ID (if tracing enabled)filter_name: str | None- Filter applied (if any)retrieval_top_k: int- Number of docs requestedretrieved_count: int- Number of docs retrievedenforcement_passed: bool- Enforcement check resultresponse: LLMResponse- Generated response with content, usage, metadata
StreamResponse
policy_name: str- Policy appliedorg_id: str- Organization IDuser_id: str- User IDtrace_id: str | None- Trace ID (if tracing enabled)filter_name: str | None- Filter applied (if any)retrieval_top_k: int- Number of docs requestedretrieved_count: int- Number of docs retrievedenforcement_attached: bool- Enforcement check resultresponse: LLMStreamResponse- Streaming response with usage, metadata
UserContext
from rag_control.models import UserContext
context = UserContext(
org_id="acme-corp",
user_id="user-123",
)
Fields:
org_id: str- Organization ID (required)user_id: str- User ID (required)- Additional custom fields supported
Execution Flow
- Organization Lookup - Validate org_id and retrieve org config
- Document Retrieval - Embed query and retrieve top-k documents
- Policy Resolution - Determine which policy applies based on rules
- Prompt Building - Build LLM prompt with retrieved documents and policy
- Generation - Generate response via LLM adapter
- Enforcement - Validate response against enforcement policy
Configuration
Pass config programmatically or from YAML:
# From ControlPlaneConfig object
from rag_control.models.config import ControlPlaneConfig
config = ControlPlaneConfig(policies=[...], filters=[...], orgs=[...])
engine = RAGControl(..., config=config)
# From YAML file
engine = RAGControl(..., config_path="config.yaml")
See Policy, Governance & Filters API for configuration details.
Exceptions
Common exceptions from rag_control.exceptions:
RagControlError- Base exceptionGovernanceOrgNotFoundError- Organization not foundGovernancePolicyDeniedError- Policy denied by governanceGovernanceUserContextOrgIDRequiredError- org_id requiredEnforcementPolicyViolationError- Enforcement validation failedAdapterError- Adapter integration failures
See Exceptions API for complete reference.