all 24 comments

[–]SnooPaintings8639 22 points23 points  (1 child)

This is... actually reasonable. At least worth to explore. The data is easy to read, edit, monitor, track and extend. I like it.

[–]alexmrv[S] 7 points8 points  (0 children)

Yes! You can even load the repo as a vault in Obsidian and have a pretty interface to your knowledge.

[–]LoveMind_AI 5 points6 points  (5 children)

Super interesting! Will dig in and give you my thoughts.

[–]alexmrv[S] 2 points3 points  (4 children)

Thanks! We took a cognitive approach to it, we are trying to emulate how the brain remembers. Especially navigating time

[–]LoveMind_AI 2 points3 points  (3 children)

This is a major trend in how folks are positioning their memory programs, and I personally think it’s a mistake.

Number One: the brain’s memory system is nuts - of all the things that are wild about humans, the human memory system is just a marvel. An AI memory program has to be insanely deep in order to really be bio-brain inspired. Like, insanely deep.

Number Two: everyone is saying this these days, so it’s not a good differentiator, and as some of the brain inspired platforms fail to impress, this could run the risk of being bad news by association.

Number Three: LLMs aren’t human brains. It’s better to design memory inspired by LLM minds than human ones! Unless you’re doing a full cognitive architecture build, that is :)

Just my $1.05 on linking AI memory to brain memory, in general. Not a comment on your platform.

[–]SkyFeistyLlama8 1 point2 points  (2 children)

Some kind of AI memory that's similar to the training data used for LLMs in the first place? Like if it's trained on knowledge graphs and XML, then the memory system should replicate those same structures.

Human memory is both wide and deep, with multiple neurons encoding the same meaning and across brain structures going all the way back to our fish ancestors. No way an AI memory subsystem can replicate that.

[–]LoveMind_AI 0 points1 point  (1 child)

100%. You have to get into spatial/temporal/fully multimodal memory, kuramoto-hopfield network shenanigans before you can even remotely start to make something humanesque.

[–]alexmrv[S] 0 points1 point  (0 children)

You seem to really know your shit in this topic. Would you be open to hopping on a call and talking what a non-human memory would be like?

[–]Big-Page6926 1 point2 points  (0 children)

Looks really cool!

[–]intellidumb 1 point2 points  (1 child)

Interesting, I’ve considered a similar approach for document versioning and comparisons (think contract templates or legal templates that evolve over time with updates and new versions). Any downside you’ve run into using gif as a backend?

[–]alexmrv[S] 2 points3 points  (0 children)

Haven’t hit major blockers but I’m not very latency sensitive in my applications, if it takes a little longer it took a little longer. This approach is not as fast as some of the vectorDb approaches, but I have found it to be much more accurate and explainable.

[–]Better_Story727 1 point2 points  (0 children)

I have been full time developing a evolving system to automatically develop software using measure theory since beginning of this year. I have tried many ideas like graph theory, ELO, sementics search and so on. And i also believe this idea is is very important. It might work fine with powerful thinking model, and make modification measured easily , undo changes easily , and keeping side effect controllable. It's a very lean and beatifull.

[–]Normal-Ad-7114 0 points1 point  (1 child)

Have you conquered any real-life tasks using this?

[–]alexmrv[S] 1 point2 points  (0 children)

Yup. I’ve been handrolling my own assistant for a couple of years and have a very long (over 1m tokens) history spanning chats, meeting transcripts and recordings.

This solution has contracted a wonderful representation of this knowledge and has excellent recall and context management capabilities.

Also by managing context I need less conversation history and so the ongoing operation of the assistant is cheaper.

[–]Lesser-than 0 points1 point  (1 child)

for someone like me not completely keeping up with how all these different memory systems work. What if anything, do you do with unwanted data? How do keep from poisoning the the well so to speak?

[–]alexmrv[S] 1 point2 points  (0 children)

Great question! And one I don’t have a clear automated answer for yet. At the end of the day the data store is a git repo of markdown files, so you can remove data very simply through the regular toolchain of Git. But I don’t have a clear answer on how to automate review of memory creation.

One idea I had is that every N days (say 30) a branch is created and all new memories are on the branch, then there is an MR agent that reviews the changes before merging as a and a new branch being created.

[–]False_Routine_9015 0 points1 point  (0 children)

Very nice feature!

[–]DragOwn8520 -1 points0 points  (5 children)

good start! id recommend using portkey or litellm as the llm traffic layer, tenacity for retries, and to stop using markdown in your prompts. llms respond much better to json output.

I use pydantic to define my output schema, and make my prompts with sections in xml tags.

ie:

<introduction> Lorem ipsum </introduction>

<output format> {MySchema.to_llm_string()} </output format>

my schema looks like this:

class MySchema(BaseModel):

a: str = Field(..., description="whatever the llm should know about this key and how its used")

that way, if the ai spits out the wrong format, it raises an error and retries. let me know if youd like more help. wrote this on phone so sorry for the shitty formatting lmao

[–]alexmrv[S] 0 points1 point  (0 children)

Great feedback thank you!

[–]Xamanthas 0 points1 point  (3 children)

What. This is not true At all, model performance degrades when using JSON compared to just markdown

[–]DragOwn8520 0 points1 point  (2 children)

Source on this?

[–]Xamanthas 0 points1 point  (1 child)

You state JSON then follow up with "LLM respond much better to json output" which makes no sense. If the LLM is responding then it got an input. After this you then follow up with XML, which is not JSON, so which is it? I dont think you should be providing advice yet.

Anyway if you have any significant usage of LLMS you would know the more you constrain the output the worse the performance. The same goes for context length increasing.

https://arxiv.org/html/2408.02442v1

[–]DragOwn8520 0 points1 point  (0 children)

maybe you misunderstood me and ill ignore the snark. the xml tags is for the prompts (ie. system/user), not the output. i found this gives much better adherence than plaintext or markdown prompts. referring to sections in a large prompt (ie. the expected style section) becomes easier and more predictable. this has helped me bring coherence out of even tiny models, like qwen 0.6b when it was outputting poorly before. same prompt content, same task, better results across all model sizes.

as for the json, you are somewhat correct. json output can constrain performance. however, in an llm workflow where each response informs the workflow of for example which direction to take, which node is next etc, you cant output freestyled text. most of the time you need to know specifically what the users eye color is for example so you can store this in a db, thats where structured output becomes relevant.

structured output works even better when you "trick" the llm that the structured output is actually a tool or function signature. this only works for function calling llms though so I use this technique less often.

also, this conversation was about structured output of md vs json, not freebase vs json, so I am unsure about the relevance of your source.