Architecture decisions
ADR-001: Registry-based extension architecture
The extension uses registries for processors, indexers, connectors and adapters. This keeps orchestration generic and allows third-party extensions to add functionality through dependency injection tags.
ADR-002: Separate AI and vector store connections
AI providers and vector databases are configured independently. This allows the same assistant to use different providers for chat, embeddings and vector storage without changing pipeline code.
ADR-003: Pipeline instead of fixed chat workflow
The assistant request is processed by configured steps. This supports simple retrieval-augmented answers and advanced workflows with query refinement, context optimization and quality gates.
ADR-004: Prompts in records, not processors
Processors implement behaviour. Project-specific prompt text belongs into assistant profile and pipeline step records so it can be configured and imported.
ADR-005: SourceHash and ContentHash separation
A stable source hash identifies the same source. A content hash detects changes. This avoids duplicate vectors after re-indexing.
ADR-006: Collection and storage are indexing scope
The same collection name can exist in different vector stores. Indexing state therefore considers both vector store connection and collection. Source hash remains independent of storage and collection.
ADR-007: Metadata-driven retrieval
Retrieved documents must preserve payload metadata. Prompt metadata and frontend source fields are configured per step to balance traceability, safety and prompt size.