news 2026/9/12 16:39:12

Supermemory v0.0.5 精确文本搜索返回空结果怎么解决

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Supermemory v0.0.5 精确文本搜索返回空结果怎么解决

Supermemory v0.0.5 精确文本搜索返回空结果怎么解决

【免费下载链接】supermemoryMemory and context engine + app that is extremely fast, scalable, and can be run fully locally. The Memory API for the AI era.项目地址: https://gitcode.com/GitHub_Trending/su/supermemory

如果你在自托管的 Supermemoryv0.0.5上,写入的文档明明存在,通过/v4/search/v4/profile做精确文本的记忆搜索却始终静默返回{"results":[],"total":0},这是一个已知的版本缺陷,解决办法是升级到v0.0.7或更高版本。

现象与根因

文档记录的现象(来源:Embeddings (self-hosted)):

  • 影响版本v0.0.5
  • 触发条件:服务端在写入路径和读取路径之间混用了不同的 embedding 模型。文档给出的例子是文档摄入(document ingestion)使用 OpenAI embeddings,而记忆查询(memory queries)使用本地默认 embeddings。
  • 典型表现场景:日语等多语言语料。日语没有空格分词,无法依赖 fallback 的词法 FTS 匹配,于是精确文本搜索通过/v4/search/v4/profile静默返回空结果{"results":[],"total":0}——不报错,只是搜不到。

复现判断方法:向本地服务器发起一次精确文本搜索,若命中内容确实已入库、请求也正常,但响应中results为空且total0,即符合该 bug 的文档描述。请求示例(sm_...替换为首次启动时打印的 API key,http://localhost:6767为默认本地地址,参见 Self-Hosting Quickstart):

curl -X POST "http://localhost:6767/v4/search" \ -H "Authorization: Bearer sm_..." \ -H "Content-Type: application/json" \ -d '{ "q": "你的精确查询文本", "containerTag": "user_123", "searchMode": "hybrid", "limit": 5 }'

searchMode支持memoriesdocumentshybrid三种取值,参数含义见 Search API;/v4/profile的用法见 User profiles。

根因结论:这不是查询语法或数据缺失问题,而是v0.0.5中写入与读取两侧 embedding 模型不一致导致的召回失败。v0.0.7的修复方式是在数据库存储层锁定了统一的 embedding plan,使所有文档与查询的 embedding 路径使用同一计划,不再混用。

解决步骤:升级到 v0.0.7 或更高版本

1. 备份数据目录

官方警告:安装器只替换二进制文件,但旧版本服务器可能无法理解新版本产生的数据或 schema 变更。因此回滚或升级前,先备份数据目录(默认./.supermemory,或$SUPERMEMORY_DATA_DIR指定的位置)。数据目录包含 graph engine 数据、auth secret 和 embedding 模型缓存,整体备份即可。

2. 执行升级

自托管的升级命令是:

supermemory-server upgrade

该命令将服务器移动到最新发布版本(文档见 Self-Hosting Quickstart)。如果你是通过curl -fsSL https://supermemory.ai/install | bash安装的,也可以重新运行该安装脚本安装最新版;想固定到某个具体版本时,可在脚本后追加版本号参数,例如:

curl -fsSL https://supermemory.ai/install | bash -s -- 0.0.7

版本 tag 的格式为server-v<version>,例如server-v0.0.7。升级后重启服务:

supermemory-server

3. 验证修复

用升级前那次失败的精确文本搜索请求,对同一containerTag重新发起/v4/search/v4/profile调用。修复后的预期行为是:此前静默返回空的精确文本查询能正常召回对应记忆,响应不再是{"results":[],"total":0}

相关限制与注意事项

  • 不要在原地混用 embedding 模型:不同模型(或不同维度)产生的向量不可比。配置维度与已存储数据不一致时,服务器会拒绝启动。如果更换过模型或维度,需要全新数据目录或全量重新摄入(Embeddings (self-hosted))。
  • 回滚风险:如前所述,回滚到旧版本前先备份数据目录,旧版二进制可能无法读取新版写入的数据。
  • 本地默认模型仅支持英文v0.0.5时代的默认模型Xenova/bge-base-en-v1.5是纯英文模型,非英文语料的稠密语义召回本身偏弱。如果你处理的是日语、德语等非英文语料,升级解决的是精确文本召回问题后,仍建议按 Embeddings (self-hosted) 的 Multilingual 章节切换到多语言模型(如Xenova/bge-m3,1024 维),且要在大批量回填之前完成切换。
  • 不要自行调参绕过:文档没有把降低threshold、调整limit等搜索参数列为该问题的解决方式;这些参数控制的是相关度过滤与结果数量(见 Search API),无法修复写入/读取路径 embedding 不一致的根因。

【免费下载链接】supermemoryMemory and context engine + app that is extremely fast, scalable, and can be run fully locally. The Memory API for the AI era.项目地址: https://gitcode.com/GitHub_Trending/su/supermemory

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/12 16:37:11

ToolJet 3.0.0-LTS PostgreSQL 数据源接入与查询实战指南

ToolJet 3.0.0-LTS PostgreSQL 数据源接入与查询实战指南 【免费下载链接】ToolJet Open-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from…

作者头像 李华
网站建设 2026/9/12 16:36:54

Redis ZSET排行榜位置原子交换:高并发下的锁粒度与Lua脚本实战

游戏后端最容易被低估的需求&#xff0c;就是匹配服排行榜。它不仅仅是给玩家看的一张表&#xff0c;而是匹配算法实时依赖的数据源。今天我想复盘一个具体的设计&#xff1a;排行榜位置原子交换&#xff0c;以及为了支撑高并发交换&#xff0c;锁粒度到底怎么定。这个题目听起…

作者头像 李华
网站建设 2026/9/12 16:35:51

ESP32+WT3000TX工业级离线TTS方案实战

1. 为什么不用“联网调用云TTS API”&#xff1f;——从真实项目现场反推硬件选型逻辑 我第一次在客户现场看到这个需求时&#xff0c;对方工程师直接把手机递过来&#xff1a;“你试试&#xff0c;用我们现在的WiFi模块连上公司内网&#xff0c;调百度/阿里云TTS接口&#xff…

作者头像 李华
网站建设 2026/9/12 16:33:51

大模型交互新范式:MCP协议原理与实战解析

1. 大模型交互范式演进&#xff1a;从Function Calling到MCP协议 大模型技术发展到今天&#xff0c;交互方式已经历了三次重要迭代。最早的纯文本交互就像对着黑箱说话&#xff0c;开发者无法精确控制模型行为&#xff1b;后来OpenAI提出的Function Calling机制让大模型首次具备…

作者头像 李华