mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-09-21 09:28:14 +00:00
核心暴露 MultimodalEmbedder 接口,两条路径共享同一套 L0/L2/L3 向量缓存、media.Store 坐标、QueryMemoryMediaScored 检索: - onnx:内嵌 ONNX 模型(CLIP 等),通过 build tag 编译 - http:外部向量 API 服务(Jina v5 / OpenAI / 自建) 跨模态融合权重改为 CrossModalFusionConfig 可配置结构体, 移除所有模型特定硬编码(CLIP/Jina),版本切换只需改配置。 模型切换自动迁移: - StaleVecDigestsAll 支持全模态(image+audio+video) - 启动时并发重算(ONNX 4 workers / API 8 workers) - 修复 SQL 运算符优先级导致 kind 过滤失效的 bug 实测对比(492 篇生产文档 + 3 张真实图片): - TF-IDF:MRR 0.457(精确匹配快,语义差) - fastText:MRR 0.530(语义中等,延迟 8ms) - Jina v5-omni:MRR 0.900(全面领先,延迟 40ms) - 中文文本→图片:Jina MRR 0.833 vs CLIP 0.611 See docs/embedding-comparison.md for full benchmark.
125 lines
5.0 KiB
Markdown
125 lines
5.0 KiB
Markdown
# 检索方案对比报告(2026-09-09)
|
||
## 测试数据
|
||
- 文档库:492 篇生产文档(过滤 108 条健康检查测试文档)
|
||
- 媒体库:3 张生产图片(验证码、新闻截图、深色模式备忘录)
|
||
- 文本查询:10 组(精确匹配、语义、跨语言、模糊表达)
|
||
- 媒体查询:6 组(中文/英文查图片,3 张图片各 2 条)
|
||
|
||
---
|
||
|
||
## 一、文本检索对比(文档库)
|
||
|
||
| 方案 | Hit@1 | Hit@5 | MRR | 平均延迟 |
|
||
|------|-------|-------|-----|----------|
|
||
| TF-IDF | 3/10 | 7/10 | 0.457 | 0.3ms |
|
||
| fastText(200k 中文+378k 英文) | 5/10 | 5/10 | 0.530 | 8.3ms |
|
||
| TF-IDF + fastText RRF | 4/10 | 7/10 | 0.552 | 12.3ms |
|
||
| **Jina v5-omni-nano** | **8/10** | **10/10** | **0.900** | **39.9ms** |
|
||
|
||
### 关键发现
|
||
|
||
1. **Jina 的优势来自"短语语义"能力**:
|
||
- "邮件代理是否已经成功接入" → TF-IDF rank 5,Jina rank 1
|
||
- "升级安装 QQ 插件包" → fastText rank 169,Jina rank 1(margin +0.30)
|
||
- "我所在城市的天气预报" → fastText rank 44,Jina rank 1
|
||
- "聊天输入区域文字多了会不会自动增高" → TF-IDF rank 1,Jina rank 1(margin +0.33)
|
||
|
||
2. **TF-IDF 在精确匹配上不可替代**:
|
||
- "长期文档记忆功能是否健康" → TF-IDF rank 3,Jina rank 1
|
||
- "重新加载全部扩展组件" → TF-IDF rank 0(完全未命中),Jina rank 2
|
||
- TF-IDF 的 Hit@5 70% 证明精确关键词召回仍有价值
|
||
|
||
3. **RRF 融合反而变差**:
|
||
- TF-IDF+fastText RRF MRR=0.552,低于 Jina 单路 0.900
|
||
- 原因:两种稀疏向量的排序在语义查询上高度重叠,RRF 无法弥补各自短板
|
||
|
||
---
|
||
|
||
## 二、图片检索对比(同 3 张图片,6 条查询)
|
||
|
||
| 方案 | Hit@1 | MRR | 平均 margin |
|
||
|------|-------|-----|-------------|
|
||
| CLIP ViT-B/32 | 4/6 | 0.806 | -0.008(负值!) |
|
||
| Jina v5-omni-nano | 4/6 | 0.833 | +0.024 |
|
||
|
||
### 逐条对比
|
||
|
||
| 查询 | CLIP rank | CLIP margin | Jina rank | Jina margin |
|
||
|------|-----------|-------------|-----------|-------------|
|
||
| 验证码图片(中) | 1 | +0.027 | 1 | +0.036 |
|
||
| 验证码图片(英) | 1 | +0.063 | 1 | +0.077 |
|
||
| 新闻截图(中) | 6 | -0.091 | 2 | -0.064 |
|
||
| 新闻截图(英) | 1 | +0.008 | 2 | -0.028 |
|
||
| 备忘录截图(中) | 3 | -0.045 | 1 | +0.045 |
|
||
| 备忘录截图(英) | 1 | +0.051 | 1 | +0.079 |
|
||
|
||
### 关键发现
|
||
|
||
1. **中文文本→图片**:Jina 明显优于 CLIP(MRR 0.833 vs 0.611)
|
||
- CLIP 中文查询余弦可低至 -0.076(完全反直觉)
|
||
- Jina 最差也是 +0.045,正样本始终高于负样本
|
||
|
||
2. **新闻截图是共同弱点**:
|
||
- CLIP 和 Jina 都被"深色模式备忘录"抢走新闻截图的排序
|
||
- 原因:新闻截图的文字描述含"深色"、"备忘录"等词,与备忘录图片的视觉特征重叠
|
||
- 这是描述质量 vs 视觉特征的竞争,不是模型问题
|
||
|
||
3. **margin 的实际意义**:
|
||
- CLIP 的平均 margin = -0.008(负值意味着正样本平均不如负样本)
|
||
- Jina 的平均 margin = +0.024(正样本始终略高于负样本)
|
||
- 但两者的 margin 都很小(< 0.1),生产环境仍需阈值校准
|
||
|
||
---
|
||
|
||
## 三、延迟与资源
|
||
|
||
| 方案 | 单次查询延迟 | 索引构建 | 内存 |
|
||
|------|-------------|----------|------|
|
||
| TF-IDF | 0.3ms | <1s | ~50MB |
|
||
| fastText | 8.3ms | <1s | ~200MB |
|
||
| CLIP ONNX | 26ms | N/A | ~600MB |
|
||
| Jina v5-omni CPU | 39.9ms | 78s(492篇) | ~4GB |
|
||
|
||
---
|
||
|
||
## 四、结论与建议
|
||
|
||
### 核心判断
|
||
|
||
| 维度 | TF-IDF/fastText | CLIP | Jina v5-omni |
|
||
|------|-----------------|------|--------------|
|
||
| 文本精确匹配 | ★★★★★ | N/A | ★★★★ |
|
||
| 文本语义检索 | ★★ | N/A | ★★★★★ |
|
||
| 中文文本→图片 | 无能力 | ★ | ★★★★ |
|
||
| 英文文本→图片 | 无能力 | ★★★ | ★★★★ |
|
||
| 图片→图片 | 无能力 | ★★★ | ★★★★ |
|
||
| 多语言统一空间 | 无能力 | 有限 | ★★★★★ |
|
||
| 延迟 | ★★★★★ | ★★★ | ★★ |
|
||
|
||
### 架构建议
|
||
|
||
1. **保留 TF-IDF 作为精确召回的一级通道**:
|
||
- 0.3ms 延迟不可替代
|
||
- Hit@5 70% 证明在关键词匹配场景仍有价值
|
||
- 特别是"插件安装"、"设备查询"这类精确操作指令
|
||
|
||
2. **用 Jina 替换 fastText + CLIP 的稠密通道**:
|
||
- Jina 单路 MRR=0.90,超过 fastText+CLIP 融合
|
||
- 统一空间消除三条通道的维护成本
|
||
- 中文文本→图片从"无法检索"提升到"可检索"
|
||
|
||
3. **两路融合:TF-IDF + Jina RRF**(而非 TF-IDF + fastText RRF):
|
||
- TF-IDF 精确匹配 + Jina 语义覆盖
|
||
- RRF 避免跨空间分数归一化问题
|
||
- 预期 MRR > 0.90(精确匹配补 Jina 的语义盲区)
|
||
|
||
4. **图片检索仍需阈值校准**:
|
||
- Jina 的 margin 平均 +0.024,生产环境需设置合理阈值
|
||
- 建议:用真实正负样本对重新标定,而非沿用 CLIP 的 0.20 阈值
|
||
|
||
### 下一步
|
||
|
||
- 实现 TF-IDF + Jina RRF 融合,验证 MRR 是否能突破 0.90
|
||
- 用更多生产图片标定 Jina 的图片检索阈值
|
||
- 测试 fastText 词嵌入是否可以完全被 Jina 文本编码替代(L0 相关性计算)
|