agentmemory 中日韩语言支持完整指南:jieba 与 tiny-segmenter 分词器快速配置
【免费下载链接】agentmemory#1 Persistent memory for AI coding agents based on real-world benchmarks项目地址: https://gitcode.com/GitHub_Trending/age/agentmemory
如果你用agentmemory为 AI 编码智能体保存中文、日文或韩文记忆,你可能会发现:搜索怎么都搜不到。原因在于中日韩文字之间没有空格,普通分词会把整句话当成一个"单词"。agentmemory内置了 CJK 感知分词方案:中文用jieba(@node-rs/jieba),日语用tiny-segmenter,一条命令即可完成配置,让 BM25 记忆搜索对中日韩文本真正生效。本文带你 5 分钟完成配置,并讲清它背后的工作原理。
为什么中日韩记忆"搜不到"?
agentmemory 的全文检索基于 BM25 倒排索引。英文靠空格切词天然适配,但"我们正在测试中文分词"这类中日韩文本没有空格,直接按空白切分会坍缩成一个超长 token——两个 token 集合永远无法重叠,搜索和记忆去重都会静默失效。
agentmemory 通过一个共享分词模块解决这个问题:
- 核心实现:src/state/cjk-segmenter.ts
- BM25 索引接入点:src/state/search-index.ts
- 记忆去重(Jaccard 相似度)接入点:src/state/schema.ts
三种语言,三种分词策略
agentmemory 用 Unicode 脚本检测自动识别文字类型,然后路由到对应的分词器:
| 语言 | 分词器 | 特点 |
|---|---|---|
| 🇨🇳 中文 | @node-rs/jieba | 原生 Rust 实现,无需下载模型 |
| 🇯🇵 日文 | tiny-segmenter | 纯 JavaScript,仅约 25 KB |
| 🇰🇷 韩文 | 内置规则 | 按音节块拆分,零依赖 |
路由逻辑非常直接:识别到汉字走 jieba,识别到假名走 tiny-segmenter,识别到谚文走规则拆分。
一键配置:安装分词器的最快方法
两个分词器都被声明为可选依赖(见 package.json),基础安装保持轻量。需要启用时只需一条命令:
npm install @node-rs/jieba tiny-segmenter没有安装会怎样?不会报错、不会中断——agentmemory 会"软降级"为整串切词(把连续的中日韩片段当作单个 token),并在标准错误输出中打印一次提示:
install @node-rs/jieba to improve Chinese searchinstall tiny-segmenter to improve Japanese search
看到这两行提示,就说明你的环境缺了分词器,装上即可。
配置生效后的实际效果
安装分词器后,BM25 索引在构建倒排表时会把中日韩片段切到词级(参见 src/state/search-index.ts 的tokenize流程)。项目自带的测试用例可以直观说明效果:
- 存入标题「项目记忆存储」、叙事「我们正在测试中文分词」,搜索
项目即可命中 ✅ - 日文「プロジェクト記憶」与「日本語の分かち書き…」同样能按词检索 ✅
- 韩文「프로젝트 메모리 저장소」搜索
메모리精准命中 ✅ - 中英韩混排
abc 메모리 def 项目 ghi保持顺序切分为["abc", "메모리", "def", "项目", "ghi"]✅
对应回归测试见 test/search-index.test.ts。
去重也有加分项:即使分词器缺失导致整串切词,src/state/schema.ts 还会额外生成字符二元组(bigram)作为兜底信号——"北京"与"上海"零重叠,而近似字符串仍能重叠,去重功能不会静默失效。
细节设计:这些体验都是为你准备的
- 懒加载 + 单例:分词器只在首次处理 CJK 文本时加载,非中日韩文本零开销;
- 一次提示:缺依赖的提示只打印一次,不刷屏;
- Viewer 搜索框支持 IME 组合:中日韩用户在可视化面板搜索时,输入不会被逐键打断(见 CHANGELOG.md 中的 IME 与 NFKC 全角归一化记录);
- 全角/半角归一:面板搜索对 CJK 输入做 NFKC 归一化,「project」也能搜到 "project"。
常见问题速查
Q:只写中文记忆,需要装 tiny-segmenter 吗?不需要。两个分词器互不依赖,按需安装即可;中文只需@node-rs/jieba。
Q:韩文为什么不需要装任何依赖?agentmemory 内置了基于音节块(가–)的规则拆分,韩语词与音节一一对应,简单可靠。
Q:升级后搜索行为变了?查看 CHANGELOG.md 中"CJK tokenizer for BM25 search"相关条目,了解分词器从整句切词到词级切词的演进。
总结
| 要点 | 说明 |
|---|---|
| 配置命令 | npm install @node-rs/jieba tiny-segmenter |
| 核心模块 | src/state/cjk-segmenter.ts |
| 缺依赖行为 | 软降级 + 一次性 stderr 提示,不中断 |
| 覆盖语言 | 中文 / 日文 / 韩文 + 混排文本 |
agentmemory 把中日韩支持做成了"可选项但零负担":不装也能跑,装上更聪明。一条命令,让你的 AI 编码智能体真正读懂中文、日文和韩文记忆。
【免费下载链接】agentmemory#1 Persistent memory for AI coding agents based on real-world benchmarks项目地址: https://gitcode.com/GitHub_Trending/age/agentmemory
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考