Hacker News 中文摘要

RSS订阅

展示 HN:又一个用于大语言模型的内存系统 -- Show HN: Yet another memory system for LLMs

文章摘要

YAMS是一个为大型语言模型和应用设计的持久性内存系统,采用基于SHA-256的内容寻址存储,支持数据去重、语义搜索和全文索引。其功能包括块级去重、智能压缩策略、全文和语义搜索、崩溃恢复以及高性能处理。YAMS通过内容寻址存储提供全面的版本控制,每个文档都有唯一的SHA-256哈希作为版本标识,支持元数据更新、集合组织和快照功能。支持Linux和macOS平台,可通过Docker和Homebrew安装。

文章总结

YAMS(Yet Another Memory System)是一个为大型语言模型(LLMs)和应用设计的持久性内存系统,具备内容寻址存储、去重、语义搜索和全文索引等功能。以下是其主要特点和用法:

主要功能

  1. 内容寻址存储:基于SHA-256哈希算法,确保数据完整性。
  2. 去重:使用Rabin指纹技术进行块级去重。
  3. 压缩:支持Zstandard和LZMA压缩算法,并采用智能策略。
  4. 搜索:支持全文搜索(SQLite FTS5)和语义搜索(向量嵌入)。
  5. 崩溃恢复:通过预写日志(Write-ahead logging)确保数据持久性。
  6. 高性能:支持100MB/s以上的吞吐量,且线程安全。

版本管理

YAMS通过内容寻址存储提供全面的版本管理。每个存储的文档都会生成一个唯一的SHA-256哈希值,作为不可变的版本标识。用户可以通过元数据更新、集合组织和快照来跟踪和管理版本。

安装与构建

YAMS支持Linux和macOS平台,可以通过Docker或Homebrew安装。构建时建议使用Conan包管理器,并需要C++20编译器、CMake 3.20+和Python 3.8+。

使用场景

YAMS特别适合用于LLMs的持久性内存管理,常见场景包括: - 代码开发:跟踪代码变更、存储工作版本、记录上下文。 - 研究:缓存网页内容、API响应和文档。 - 对话上下文:存储重要讨论、决策和需求。 - 知识库:构建可搜索的项目知识库。

CLI用法

YAMS提供了丰富的命令行工具,支持文档的存储、搜索、检索和浏览。用户可以通过命令行进行批量操作,如存储文件、搜索内容、检索文档等。

MCP集成

YAMS支持通过MCP(Model Context Protocol)与Claude Desktop等MCP兼容客户端直接集成,提供WebSocket和StdIO两种传输方式。

性能优化

用户可以通过调整块大小、缓存大小和压缩策略来优化YAMS的性能,特别是在处理大文件时。

许可证

YAMS采用Apache-2.0许可证。

YAMS通过其强大的功能和灵活的集成方式,为LLMs和应用提供了一个高效、可靠的持久性内存解决方案。

评论总结

评论内容主要围绕以下几个方面:

  1. 技术问题与改进建议

    • 重定向问题:winterrx指出GitHub仓库中的域名重定向次数过多。
      • 引用:"The domain listed on the GitHub repo redirects too many times."
    • 多用户支持:mempko询问是否有计划支持多用户,特别是针对需要每个用户沙箱的LLM项目。
      • 引用:"Any plans to build support for multiple users? Would be useful for an LLM project that requires per user sandboxing."
    • 文件版本控制:marcofiocco询问文件版本控制的问题。
      • 引用:"What about versioning of files?"
  2. 功能与使用场景

    • 图形功能:sitkack询问如何使用内置功能启用图形功能,是否使用元数据或其他文档作为链接。
      • 引用:"How would you use the built in functionality to enable graph functionality?"
    • 工作流示例:retreatguru请求提供使用示例,以便更好地理解其用途。
      • 引用:"How do you use this in your workflow? Please give some examples because it’s not clear to me what this is for."
  3. 技术细节与比较

    • 嵌入生成:rkunnamp询问嵌入是如何生成的,是否使用托管嵌入模型来实现语义搜索。
      • 引用:"How are embedding generated? Does it use a hosted embedding model?"
    • 与其他系统的比较:huqedato表示自己在RAG中使用qdrant和Redis,质疑是否需要另一个LLM内存系统。
      • 引用:"I don't really see the use of 'another memory system for LLM', perhaps I'm missing something."
    • 与Letta的比较:vira28询问该系统与Letta的比较。
      • 引用:"How does this compare to Letta?"
  4. 技术实现与优化

    • 代码库去重:elpocko对代码库块级去重节省40%的可能性表示疑问,询问具体指哪种块。
      • 引用:"How is savings of 40% on a typical codebase possible with block-level deduplication?"
    • 库依赖:ActorNightly质疑是否为了使用特定库而引入不必要的复杂性。
      • 引用:"I see stuff like this, and I really have to wonder if people just write software with bloat for the sake of using a particular library."
  5. 其他反馈

    • 学习收获:JSR_FDED表示感谢,表示从中学习了很多。
      • 引用:"Thanks, I learned a lot from this."
    • 头文件缺失:yard2010对头文件的缺失表示困惑。
      • 引用:"I'm puzzled - where are the header files?"
    • 个人项目分享:jerpint分享了自己开发的另一个内存系统,并提供了视频演示。
      • 引用:"I also developed yet another memory system!"