Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ADR for PaRAGon dependency #175

Closed
wants to merge 1 commit into from

Conversation

jwm4
Copy link
Contributor

@jwm4 jwm4 commented Jan 6, 2025

ADR to add a dependency from InstructLab to the proposed PaRAGon open source project, once that is mature enough. Our hope is that this would be in the March time-frame, but I don't say that in the ADR because in past dev-docs, reviewers have (reasonably) pointed out that schedule information does not belong in dev-docs. I am mentioning it here in the PR description though because I don't want any reviewers to think we're trying to implement this in January.

See also #168 for the proposal to add an adrs directory and for the new ADR template being proposed. I am complying with that proposed new directory structure and template for now, and will revise this ADR if the template or directory structure change during the review of that ADR.

Signed-off-by: Bill Murdock <[email protected]>
@hemajv
Copy link

hemajv commented Jan 7, 2025

Thanks @jwm4 for the ADR! This perfectly aligns with how we envisioned PaRAGon being used

- InstructLab could adopt an off-the-shelf RAG platform instead of PaRAGon. For example, PaRAGon itself is built on Haystack; we could just depend on Haystack directly. However, Haystack is an very flexible platform for developers, so adopting Haystack directly in InstructLab would entail making a lot of technical decisions that have considerable impact on the effectiveness of the solution. So either we would make the same decisions that PaRAGon makes (which brings us back to the option above) or we would make different decisions (which would mean even more duplicated effort plus substantial inconsistency).
- InstructLab could fork its own copy of PaRAGon and put that in the InstructLab organization in github (either in an existing repository there or a new one). That would make it a lot easier to incorporate changes from PaRAGon than just having code inspired by PaRAGon, because we could just copy the entire code-base over when we want to update the fork. However, it still seems a lot clunkier than just having a dependency on PaRAGon.

## Decision
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The general guidance is to try each of these documents be about a single decision. I think the one being documented here is that

InstructLab will directly depend on Paragon in the 1.5 release`.

The other two line items here become consequences, something like:

* The initial RAG implementation for 1.4 will be a temporary, bespoke implementation that is only inspired by PaRAGon.
* We will have to remove that temporary implementation after the release of 1.4.

## Consequences

- PaRAGon is intended to be a common RAG solution for a variety of capabilities: InstructLab, [RamaLama](https://github.com/containers/ramalama), etc. Since InstructLab will depend on it, the RAG behavior for InstructLab will be consistent with the RAG behavior for these other capabilities. This will improve the experience for end-users who want to integrate and/or move between these capabilities.
- If and when InstructLab developers want to contribute functionality that impacts the behavior of the RAG in InstructLab, they will need to contribute these changes to PaRAGon. The PaRAGon maintainers will have ultimate authority over these changes.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are more implications:

  • There is a risk that the move to directly depending on PaRAGon will require API redesign or other refactoring in InstructLab when removing the bespoke code.
  • Build and/or processes will become more complex.
  • There is a risk that new functionality in the future will have to be spread across InstructLab and PaRAGon, requiring coordination overhead.

@jwm4
Copy link
Contributor Author

jwm4 commented Jan 7, 2025

Hi everyone. I am closing this PR for now because I am hearing that more careful consideration is needed before fully committing to this direction. This is still the current plan that we're driving toward, and I am hopeful that some day we'll be able to re-open this and get it approved and merged.

@jwm4 jwm4 closed this Jan 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants