Repository navigation
1.15.0
2026-05-02
BREAKING CHANGES
- RAG API now enforces
X-Tenant-Idheader for multitenancy; requests without it return HTTP 400. tenant_idin request bodies is rejected via strict model validation (extra='forbid).SYMAI_UPLOAD_DIRenvironment variable replaced with explicitupload_dirparameter in Qdrant engine.- Document downloads are sandboxed to the upload directory with secure filename validation.
Added
- Experimental vLLM backend support (
engine_vllm.py) for local LLM serving. client_timeoutandclient_max_retrieskwargs to all neurosymbolic engines (OpenAI, Anthropic, Gemini, Groq, DeepSeek, OpenRouter, Cerebras, Llama.cpp)._build_client_kwargs()helper onEnginebase class to centralize client configuration.- Multitenancy support in Qdrant engine and RAG API with automatic tenant_id payload injection.
POST /delete-by-tenant-fileandPOST /delete-by-tenantRAG API endpoints with scope-based authorization.- Payload keyword indexes on
tenant_id,source_type, andfile_idfor efficient scoped queries. - Configurable embedding batch size via
RAG_EMBED_BATCH_SIZEenvironment variable. - SSRF protection for URL downloads with IP pinning and private-range blocking.
- Thread-safety lock to FileEngine markdown converter.
- Comprehensive unit and integration tests for new endpoints, multitenancy, and client kwargs.
Changed
- Replaced stdlib logging with
loguruinqdrant_rag_api.pyfor structured log output. - Wrapped synchronous Qdrant I/O operations in
asyncio.to_threadfor event-loop safety. - Synchronized
docs/source/INSTALLATION.mdwith current README instructions.
Fixed
- Cerebras engine re-initialization path that stored duplicate client attributes.
Security
- SSRF protection blocking private IP ranges and resolving hostnames before download.
- Path sandboxing restricting document access to configured upload directory only.
Performance
- Async wrapping of blocking Qdrant operations to prevent event-loop starvation.
Maintenance
- Eliminated ~60 lines of duplicated timeout/retry boilerplate across 10 neurosymbolic engines.
- Removed redundant local type annotations and dead-code casts.
- Added
tests/engines/neurosymbolic/test_client_kwargs.pyand expanded Qdrant RAG API test coverage.
Full Changelog: 1.14.0...1.15.0