Skip to content

v0.3.1

@nshkrdotcom nshkrdotcom tagged this 22 Dec 02:49
This release introduces a significant architectural improvement by decoupling
the core RAG functionality from specific storage backends. The heavy
dependencies `ecto_sql`, `postgrex`, and `pgvector` have been marked as
optional in the project configuration. This change allows developers to
integrate the `rag_ex` library into projects that do not utilize PostgreSQL or
Ecto, facilitating the creation of custom storage adapters or the use of
alternative vector stores without incurring the overhead of unused dependencies.

To achieve this modularity, the codebase now utilizes conditional compilation.
Modules that rely directly on Ecto schemas and query features—including the
GraphStore schemas (Community, Edge, Entity), the GraphStore Pgvector adapter,
the VectorStore Chunk schema, and the VectorStore Pgvector adapter—are now
wrapped in checks using `Code.ensure_loaded?/1`. These modules will only be
compiled and defined if the consuming project explicitly includes Ecto and the
necessary database drivers.

In addition to the dependency updates, the Continuous Integration pipeline has
been refactored for better efficiency. The complex build matrix testing
multiple Elixir and OTP versions has been simplified to focus on a stable,
current environment. The separate linting job has been removed to streamline
the pull request verification process, and dependency caching strategies have
been updated to use simpler keys.

Documentation files, including the README and Changelog, have been updated to
reflect the new version and the optional nature of the persistence layer.
Assets 2
Loading