This release completes the architectural decoupling of the persistence layer
initiated in v0.3.1. While the previous version successfully made the low-level
storage adapters and schemas optional, several high-level service modules retained
static dependencies on Ecto constructs. This resulted in compiler warnings and
potential runtime issues for projects using `rag_ex` without the PostgreSQL
suite of dependencies.
To resolve this, conditional compilation guards using `Code.ensure_loaded?/1`
have been extended to wrap the following modules, ensuring they are only defined
when the necessary Ecto dependencies are present in the host project:
- Rag.Retriever.Semantic: Relies on Ecto queries for vector similarity search.
- Rag.Retriever.FullText: Relies on Ecto queries for tsvector keyword search.
- Rag.Retriever.Hybrid: Combines the above two strategies.
- Rag.Embedding.Service: Dependencies on the Ecto-based Chunk schema.
These changes ensure a zero-warning build experience for developers utilizing
custom storage backends or non-SQL architectures. The library now fully supports
operating as a pure logic layer for RAG pipelines, routing, and LLM interactions
without imposing any database requirements.
Version references in the mixfile, documentation, and changelog have been
bumped to 0.3.2 to mark this stability improvement.