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

Relational Memory Graph/Network #360

Open
AaronGoldsmith opened this issue Nov 27, 2024 · 2 comments
Open

Relational Memory Graph/Network #360

AaronGoldsmith opened this issue Nov 27, 2024 · 2 comments

Comments

@AaronGoldsmith
Copy link
Contributor

It would be valuable to have a toolkit for relating nodes in a graph, where nodes might represent filepaths, tools, tasks, or other entities, and the relationships between them are labeled to capture specific interactions (e.g., caused_by, requires, is_similar_to, assumption_caused, is_part_of).

Currently, we have a memory toolkit that organizes text files locally into folders with tags. However, this system lacks the ability to define and manage relationships between these memories. By allowing Goose to interact with a graph and create edges with labeled relationships, we could enhance its ability to retrieve relevant memories and orchestrate complex workflows or routines.

For example, linking memories with relationships like requires or caused_by could allow Goose to understand dependencies between tasks or events, enabling it to automate sequences of actions. Relationships like is_part_of or relates_to could help group related concepts or tools, making it easier to navigate interconnected systems. More complex relationships, such as learned_from or results_in, could enable Goose to apply knowledge from past experiences to new situations, effectively building a dynamic “experience graph.”

This kind of graph could be instrumental in areas like:

  • Workflow Automation: Helping orchestrate routines by mapping tasks (requires), prerequisites (is_part_of), and outcomes (results_in).
  • Root Cause Analysis: Using relationships like caused_by or mitigates to trace and resolve issues.
  • Knowledge Sharing: Mapping insights through learned_from relationships for better decision-making.
  • Scenario Planning: Leveraging preceded_by and followed_by to model cause-and-effect sequences.

By connecting memories through labeled relationship edges, Goose could move beyond simple retrieval and begin reasoning about relationships, enabling it to manage routines and interact more intelligently with its dynamic environments.

@Kvadratni
Copy link
Collaborator

This is something we are looking at. The current memory was the naive approach to get some form of memory out the door

@AaronGoldsmith
Copy link
Contributor Author

AaronGoldsmith commented Nov 28, 2024

@Kvadratni, I had a feeling this might be on the roadmap – I have a really rough proof of concept toolkit that i've been testing locally, but haven't had time to polish/make a PR for, and a little hesitant to do so knowing there will be a lot of upcoming changes to Goose.

Screenshot examples

detailed_src_directory_structure
recreated_repo_graph
environmental_impact_graph

I think it’d be really helpful if the existing memory titles/snippets were surfaced into the LLMs context. It could still navigate its own memories directly, but having this extra layer of info would help it decide which tool to select next. I haven't looked too much into how the moderators work, but this might be a potential use case.

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

No branches or pull requests

2 participants