Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is an experiment to refactor the spring-ai-core module.
What was done.
Extract vector store and advisor functionality from spring-ai-core
Created new module spring-ai-vector-store from spring-ai-core functionality.
Split advisor functionality into three new modules:
* advisor-memory: Memory-based chat advisors
* advisor-rag: Retrieval Augmentation Generation advisors
* advisor-vector-store: Vector store based advisors
What wasn't done, but thought about.
Considered moving the Document package out into a new module or put in spring-ai-vector-store but recent research into the nature of advanced conversational management, make it seem like there are patterns - currently contained in the document oriented
rag
module - that apply to both message and document, so leaving it there.Similarly considered moving the advanced RAG functionality to it's own module, but due to similaries with retrieving messages, left it in spring-ai-core for now.
Considered moving the ETL interfaces and classes into it's own package, but it seems too fine grained. Keeping the base interfaces in spring-ai-core with only JDK or 'core' based implementations (FileReader, JsonReader via Jackson) seems sufficient and any implementation of the ETL interfaces that bring in other dependencies are already separate modules.