[{"data":1,"prerenderedAt":338},["ShallowReactive",2],{"project-44969622":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":43,"post_text":45,"what":46,"said":78,"maker_in_thread":159,"shape":168,"grid":173,"attempts":300,"same_week":301,"maker_shows":34,"maker_hidden":330,"reader_version":331,"card":332},"44969622","DiffMem","I replaced vector databases with Git for AI memory (PoC)","title","Show HN: I replaced vector databases with Git for AI memory (PoC)","https:\u002F\u002Fgithub.com\u002FGrowth-Kinetics\u002FDiffMem","github.com","alexmrv",1755757211,2025,198,45,332,3837,9,"notable","ai","agent memory","library",[24,25,26,27,28],"ai memory","git","bm25","markdown","llm memory","curious",0.076,{"positive":32,"neutral":33,"mixed":34,"critical":35},6,13,1,5,25,{"idea":38,"docs":40,"performance":42},{"positive":39,"critical":39},4,{"positive":41,"critical":34},0,{"positive":41,"critical":41},[44,41,41,41,41,44,44,44,44,41,44,34,44,41,34,34,41,44,41,41,41,35,41,35,44,44,35,41,44,41,41,35,41,41,44,34,41,35,34,35],3,"Hey HN! I built a proof-of-concept for AI memory using Git instead of vector databases.\n\nThe insight: Git already solved versioned document management. Why are we building complex vector stores when we could just use markdown files with Git's built-in diff\u002Fblame\u002Fhistory?\n\nHow it works:\n\nMemories stored as markdown files in a Git repo Each conversation = one commit git diff shows how understanding evolves over time BM25 for search (no embeddings needed) LLMs generate search queries from conversation context Example: Ask \"how has my project evolved?\" and it uses git diff to show actual changes i",{"problem":47,"audience":53,"pricing":53,"motivation":54,"time_to_build":53,"stack":58,"openness":75,"stage":76,"team_size":77},{"value":48,"source":49,"evidence":50},"Giving AI assistants versioned memory of past conversations without vector databases","maker",[51],{"id":52},"post",null,{"value":55,"source":49,"evidence":56},"Git already solves versioned document management; vector stores may be unnecessary for personal AI memory",[57],{"id":52},[59,63,67,71],{"value":60,"source":49,"evidence":61},"Python",[62],{"id":52},{"value":64,"source":49,"evidence":65},"GitPython",[66],{"id":52},{"value":68,"source":49,"evidence":69},"rank-bm25",[70],{"id":52},{"value":72,"source":49,"evidence":73},"OpenRouter",[74],{"id":52},"open_source","prototype","unknown",{"praise":79,"objections":80,"requests":108,"questions":123,"alternatives":139},[],[81,101],{"value":82,"source":83,"evidence":84},"Vector databases solve semantic search that BM25 keyword matching cannot","commenter",[85,89,93,97],{"id":86,"by":87,"text":88},"44970042","BenoitP","I'm failing to grasp how it solves\u002Freplaces what vector db were created for in the first place (high-dimensional neighborhood searching, where the space to be searched grows by…",{"id":90,"by":91,"text":92},"44973543","cchance","Somehow i feel like the op doesn't get what vector DB's are actually for, semantic search isn't the same as a markdown memory file",{"id":94,"by":95,"text":96},"44970168","_pdp_","I mean these are two completely different approaches for completely different purposes. So saying that git replaces vector database is like saying that that a filing cabinet…",{"id":98,"by":99,"text":100},"44970631","OutOfHere","The submission and the readme fail to explain the important thing, which is how BM25 is run. If it creates bags of words for every document for every query, that would be…",{"value":102,"source":83,"evidence":103},"Git is unnecessary complexity; a simpler store would do",[104],{"id":105,"by":106,"text":107},"44970670","cc_ashby","Maybe you can use Mercurial for this? You don’t need the complexity of Git for memory.",[109,116],{"value":110,"source":83,"evidence":111},"Evaluations comparing it against other memory approaches",[112],{"id":113,"by":114,"text":115},"44969997","jmtulloss","Seems really interesting! It would be great to see some evals to understand how well this works when stacked up against different approaches and use cases.",{"value":117,"source":83,"evidence":118},"MCP server version",[119],{"id":120,"by":121,"text":122},"44970015","thecopy","This is cool! Do you have any plans on releasing it as an MCP server? Would love to add this to my mcp gateway service https:\u002F\u002Fmcp-boss.com\u002F (shameless plug)",[124,128],{"value":125,"source":83,"evidence":126},"How BM25 index is built, updated and stored",[127],{"id":98,"by":99,"text":100},{"value":129,"source":83,"evidence":130},"How it compares to Graphiti\u002FZep temporal knowledge graphs",[131,135],{"id":132,"by":133,"text":134},"44971239","albertdessaint","Great idea! How does it compare to Graphiti \u002F Zep? They use real time knowledge-graphs to tackle the problem you are trying to solve https:\u002F\u002Fgithub.com\u002Fgetzep\u002Fgraphiti",{"id":136,"by":137,"text":138},"44974081","fudged71","I could be wrong, but this seems to be exactly what Zep’s “Graphiti” library is made for, build as a semantic temporal knowledge graph.",[140,149],{"value":141,"source":83,"evidence":142},"Zep Graphiti temporal knowledge graph",[143,144,145],{"id":132,"by":133,"text":134},{"id":136,"by":137,"text":138},{"id":146,"by":147,"text":148},"44971269","danshalev7","Very nice. We tackled the temporal issue \"versioned\" in your case with a temporal knowledge graph: https:\u002F\u002Fwww.falkordb.com\u002Fblog\u002Fbuilding-temporal-knowledge-graphs-graphiti\u002F",{"value":150,"source":83,"evidence":151},"Standard RAG with vector embeddings",[152,156],{"id":153,"by":154,"text":155},"44970254","visarga","> I have struggled to get any of the RAG approaches to handle this effectively. You need to annotate your text chunks. For example you can use a LLM to look over the chunks and…",{"id":157,"by":11,"text":158},"44970063","Super simplistic example, but say i mention my Daughter, who is 9. Then mention she is 10, a few years later she is 12 but now i call her by her name. I have struggled to get any…",{"comments":32,"answered":34,"key":160},[161,162,165],{"id":157,"text":158},{"id":163,"text":164},"44975554","Sure! www.calendly.com\u002Fgrowth-kinetics",{"id":166,"text":167},"44970025","ooo nice post-commit creation of the db for the \"now\" state and links to the files for diff\u002Fhistorical? best of both worlds.",{"commenters":169,"max_depth":170,"maker_replies":32,"first_comment_mins":171,"lifespan_hours":172},35,7,56,113,[174,176,177,181,184,186,189,192,195,198,200,203,205,207,210,213,215,217,222,225,229,232,235,237,240,242,246,247,251,252,256,260,263,265,268,270,273,275,279,283,285,289,294,296,298],[86,41,44,175,87,41],"project\u002Fneutral\u002Fidea",[157,41,41,175,11,34],[178,41,41,179,180,41],"44970126","commenter\u002Fneutral\u002Fnone","johnisgood",[182,41,41,179,183,41],"44970744","jaktet",[153,41,41,185,154,41],"other\u002Fneutral\u002Fidea",[187,41,44,175,188,41],"44971506","ffsm8",[190,41,44,175,191,41],"44976108","sprobertson",[193,41,44,175,194,41],"44986224","potsandpans",[196,41,44,175,197,41],"44995123","erezsh",[199,41,44,175,191,41],"45020341",[201,41,41,185,202,41],"44970511","PeterStuer",[204,41,44,175,99,41],"44970533",[136,41,34,206,137,41],"project\u002Fcritical\u002Fidea",[208,41,44,175,209,41],"44970064","aszen",[211,41,41,179,212,41],"44970076","petesergeant",[98,41,34,214,99,41],"project\u002Fcritical\u002Fdocs",[90,34,34,216,91,41],"maker\u002Fcritical\u002Fidea",[218,219,44,220,221,41],"44970643",2,"project\u002Fmixed\u002Fperformance","lsb",[223,44,41,185,224,41],"44970439","mingtianzhang",[226,39,44,227,228,41],"44970646","project\u002Fneutral\u002Fperformance","meander_water",[230,35,41,185,231,41],"44976171","mattnewton",[233,35,41,179,234,41],"44976535","jarirajari",[236,35,41,179,231,41],"44976786",[238,32,35,239,106,41],"44970745","maker\u002Fpositive\u002Fidea",[163,32,41,241,11,34],"other\u002Fneutral\u002Fnone",[243,170,35,244,245,41],"44970011","project\u002Fpositive\u002Fidea","rekttrader",[166,170,41,244,11,34],[248,249,44,175,250,41],"44970308",8,"bob1029",[132,18,44,175,133,41],[253,254,35,244,255,41],"44969976",10,"namrog84",[257,258,41,241,259,41],"44971010",11,"richardblythman",[113,261,44,262,114,41],12,"project\u002Fneutral\u002Fnone",[264,261,41,262,11,34],"44970014",[266,33,41,185,267,41],"44980773","jerpint",[146,269,41,185,147,41],14,[271,272,35,244,209,41],"44970057",15,[274,272,41,244,11,34],"44970077",[276,277,41,185,278,41],"44970801",16,"entanglr",[280,281,44,175,282,41],"44970132",17,"simplecto",[94,284,34,206,95,41],18,[286,287,41,185,288,41],"44970433",19,"nunodonato",[290,291,35,292,293,41],"44971316",20,"project\u002Fpositive\u002Fnone","mjk3026",[105,295,34,206,106,41],21,[120,297,35,292,121,41],22,[299,297,41,262,11,34],"44970073",[],[302,307,312,317,321,326],{"id":303,"name":304,"points":305,"category":306},"45014131","Base",693,"dev_tools",{"id":308,"name":309,"points":310,"category":311},"45028002","BYTE magazine archive",423,"learning_science",{"id":313,"name":314,"points":315,"category":316},"45003420","Clearcam",233,"security_privacy",{"id":318,"name":319,"points":320,"category":306},"44988271","xsl-website",211,{"id":322,"name":323,"points":324,"category":325},"45039292","Animal Crossing Letter Generator",203,"creative",{"id":327,"name":328,"points":329,"category":306},"45024532","markdown-ui",202,false,"v2",{"id":333,"name":5,"line":6,"ai":330,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":334,"top":18,"kw":335,"maker":11,"domain":10,"tier":19,"attempts":41,"strip":336,"url":9,"mix":337,"praise":-1,"objection":82,"sub":21},44969622,0.08,[24,25,26,27,28],"3000033330313011030005053350300500310515",[32,33,34,35],1793991128304]