项目简介

YAMS (Yet Another Memory System) 是一个为大型语言模型(LLM)和应用程序设计的持久化内存系统。它提供内容寻址存储、块级去重、压缩,以及强大的全文和语义搜索能力。通过实现 Model Context Protocol (MCP),YAMS 能够以标准化的方式向 LLM 客户端提供上下文信息和功能,包括托管资源、执行工具和支持可定制的 LLM 交互模式。

主要功能点

  • 上下文服务: 以标准化的 JSON-RPC 协议向 LLM 客户端提供上下文信息。
  • 资源管理: 托管和管理数据资源,支持内容寻址存储、去重、压缩。
  • 搜索功能: 提供全文搜索 (基于 SQLite FTS5) 和语义搜索 (基于嵌入向量)。
  • 工具执行: 允许 LLM 调用外部功能,如文件搜索、数据检索、文件下载等。
  • 可插拔架构: 支持插件扩展,如 ONNX 模型嵌入生成、PDF 内容提取。
  • 会话管理: 支持 LLM 客户端的会话管理和能力声明。
  • 多种传输协议: 支持 Stdio 和 WebSocket 等传输协议。

安装步骤

YAMS 推荐使用 Conan 进行构建和安装。请确保您的系统已安装 'pip',并根据您的操作系统安装必要的开发依赖(例如 Linux 上的 'libssl-dev sqlite3 libsqlite3-dev protobuf-compiler libncurses-dev ninja-build cmake')。

  1. 安装 Conan:
    pip install conan
  2. 检测 Conan 配置:
    conan profile detect --force
  3. 安装依赖并构建 (推荐启用 ONNX 支持):
    conan install . -of build/yams-release -s build_type=Release -b missing -o yams/*:enable_onnx=True
    cmake --preset yams-release
    cmake --build --preset yams-release -j
  4. 安装 YAMS 到系统:
    sudo cmake --install build/yams-release && sudo ldconfig || true

服务器配置 (MCP 客户端使用)

MCP 客户端需要配置 YAMS MCP 服务器的启动命令及其参数。以下是 MCP 客户端配置示例:

{
  "mcpServers": {
    "yams_memory_system": {
      "command": "/usr/local/bin/yams-mcp",
      "args": ["--log-level", "info", "--log-file", "/var/log/yams-mcp.log"]
    }
  }
}
  • 'yams_memory_system': 您为该 MCP 服务器实例自定义的名称。
  • 'command': YAMS MCP 服务器可执行文件的绝对路径,通常在 '/usr/local/bin/yams-mcp'。
  • 'args': 启动服务器时传递的命令行参数列表。
    • '--log-level info': 设置服务器的日志级别为 'info' (可选值:'trace', 'debug', 'info', 'warn', 'error')。
    • '--log-file /var/log/yams-mcp.log': 指定服务器日志的输出文件路径。

您也可以直接通过 'yams' 命令行工具启动集成有 MCP 功能的服务器(使用 Stdio 传输协议):

yams serve

基本使用方法

在安装并配置好 MCP 客户端后,客户端将通过 JSON-RPC 协议与 YAMS MCP 服务器通信。LLM 客户端可以调用服务器暴露的工具来执行以下操作:

  • 添加内容: 将文本、文件或其他数据添加到 YAMS 的持久化内存中,并可以附带标签和元数据。
    # 添加纯文本内容并打标签
    echo "这是我关于项目进展的笔记,需要回顾。" | yams add - --tags notes,project
    
    # 添加网页内容并命名
    curl -s https://example.com/document.html | yams add - --name document.html --tags web,cache
  • 搜索内容: 对存储的内容执行全文搜索或基于嵌入向量的语义搜索,支持高级查询语法和过滤。
    # 搜索包含“机器学习”关键词的内容
    yams search "关于机器学习的最新论文" --limit 5
    
    # 使用正则表达式搜索代码中的“TODO”注释,并显示行号
    yams grep "TODO" --paths "*.cpp" --line-numbers
  • 获取内容: 根据内容的哈希值或其他唯一标识符检索原始内容。
    # 查找关于“我的笔记”的最新条目哈希,并获取其内容
    HASH=$(yams search "我的笔记" --format minimal | head -1)
    yams get $HASH
  • 管理插件: 扫描系统中的插件,将其添加到信任列表,并动态加载以扩展 YAMS 的功能(例如用于嵌入生成或内容提取)。
    # 扫描插件目录
    yams plugin scan
    
    # 信任插件目录(例如:ONNX 嵌入插件)
    yams plugin trust add /usr/local/lib/yams/plugins
    
    # 加载指定的插件
    yams plugin load /usr/local/lib/yams/plugins/libyams_onnx_plugin.so

信息

分类

AI与计算