项目简介
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')。
- 安装 Conan:
pip install conan - 检测 Conan 配置:
conan profile detect --force - 安装依赖并构建 (推荐启用 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 - 安装 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与计算