Skip to content

feat: add full-text search for memory lookup#19

Open
dingyufei615 wants to merge 2 commits intoDataojitori:mainfrom
Usagi-org:dev
Open

feat: add full-text search for memory lookup#19
dingyufei615 wants to merge 2 commits intoDataojitori:mainfrom
Usagi-org:dev

Conversation

@dingyufei615
Copy link

#18

@Dataojitori
Copy link
Owner

你改还是我改?

"架构改动非常清晰,同步逻辑也写得很严谨。但作为中文使用者,硬编码 tokenize = 'unicode61' 和 'simple' 会导致完全无法分词(所有无空格的中文字符会被当成一个极长的单词,导致召回率归零)。

合并前需要做如下调整:

SQLite 侧:请将分词器修改为 tokenize = 'trigram'(SQLite 3.34+ 内置支持,对 CJK 更友好),或者在 Python 层面对 content 进行预分词(例如用 jieba 分词后以空格拼接)再存入 FTS5。
PostgreSQL 侧:中文环境不支持 'simple',通常需要用到 pg_jieba,这会增加部署负担。为了统一行为,建议无论是 PG 还是 SQLite,都在 Python 层面统一进行一次空格分词预处理,让数据库底层只负责机械的空格匹配。

@Dataojitori
Copy link
Owner

它推荐用jieba

@dingyufei615
Copy link
Author

优化使用了jieba分词器
image
针对同一组记忆内容的测试如下:

📊 A/B 结果

编号 查询 测试目的 旧版 新版
q1 鹞羽公鸡档案 精确中文连续片段控制组 ✅ 命中 ✅ 命中
q2 鹞羽 公鸡 中文分词召回 ❌ 未命中 ✅ 命中
q3 青梭 策略 中英混合内容召回 ❌ 未命中 ✅ 命中
q4 青梭 广播 更新后内容即时召回 ❌ 未命中 ✅ 命中
q5 苍鹭计划 精确中文短语控制组 ✅ 命中 ✅ 命中
q6 苍鹭 平台 中文复合词拆分召回 ❌ 未命中 ✅ 命中
q7 platform 苍鹭 alias 路径词项召回 ❌ 未命中 ✅ 命中
q8 霜锚 设计 比较 跨 content + disclosure 联合召回 ❌ 未命中 ✅ 命中
q9 量子 菠萝 ABSYS0313154514 无关词负例 ✅ 无结果 ✅ 无结果
q10 鹞羽 鸭子 跨两条记忆拼接负例 ✅ 无结果 ✅ 无结果

@dingyufei615
Copy link
Author

@Dataojitori

@Dataojitori
Copy link
Owner

等我晚上看

@Dataojitori
Copy link
Owner

这个分支没有给我编辑权限,所以我把修改放到pr19-refactor 分支里了。
后续的修改我接手了,你不用再改这个分支的代码。修改完成,合并后我再回复。

@dingyufei615
Copy link
Author

这个分支没有给我编辑权限,所以我把修改放到pr19-refactor 分支里了。 后续的修改我接手了,你不用再改这个分支的代码。修改完成,合并后我再回复。

嗯嗯 OK的

@Dataojitori
Copy link
Owner

你的dingyufei@dxy.cn邮箱是不是没绑定到 GitHub 设置页面(Settings -> Emails)里?我在把我修改后的pr提交到github上时,发现右边贡献者栏里没有你的头像。我很担心这样merge之后,你的署名不会被记录。
image
可否先试试把你的dxy邮箱添加到github里?或者说,我来修改commit的作者记录,把里面的dingyufei@dxy.cn 替换成 dingyufei615@qq.com
你说我干。

@dingyufei615
Copy link
Author

image

嗯嗯 已加上了

@dingyufei615
Copy link
Author

没事,署名是谁都行,不方便修改就这样就行,主要希望项目未来发展更好

@Dataojitori
Copy link
Owner

我刚看了,你改后,你的头像终于出现在贡献者里了。
那,你不在乎我在乎行不行😉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants