技术干货

MOI 实践 Vol.1:MOI Assistant

作者:MatrixOrigin发布于

"我换了个问法再问一遍,怎么这次就有答案了?"

如果你在使用企业知识库问答系统时遇到过类似的困惑,你不是一个人。RAG 系统的检索准确性问题,可能比想象中更普遍。

我们最近针对这个问题做了一些探索,发现了一些有意思的改进方向。

真实场景中的三个尴尬时刻

场景一:明明有,就是找不到

技术团队维护着一个完善的产品文档库,但客户经常反馈"系统回答不出来"。人工检查后发现,相关内容其实都在文档里,只是客户的提问方式和文档的表述不太一样。

比如客户问"如何配置数据同步",文档里写的是"数据复制设置"。对人来说这是同一个意思,但对传统 RAG 系统来说,向量相似度不够高,就检索不到。

场景二:答案看起来对,但总觉得哪里不对

系统给出了一个看似详细的答案,但仔细核对文档后发现,有些细节是"编造"的(业内叫 hallucination)。问题是,普通用户根本分辨不出来。

这在 B 端场景尤其危险——客户可能会基于错误信息做决策,最后发现不对时,对产品的信任度就彻底崩了。

场景三:不知道该不该信

系统给了答案,但用户心里没底:"这个答案靠谱吗?是从哪个文档来的?置信度有多高?"

传统 RAG 系统像个黑盒,用户只能选择"信"或"不信"。缺乏透明度的系统,很难获得用户信任。

这些场景的背后,是三个技术层面的问题:

  • 检索召回不足 → 用户换个问法,检索结果就完全不同
  • 答案质量难评估 → 不知道答案是真的准确还是"一本正经地胡说八道"
  • 系统不透明 → 用户无法判断该不该信这个答案

我们的尝试:多检索 + 实时评估

针对这些问题,我们搭建了一个原型系统(MOI Assistant),核心思路是:既要扩大检索范围,又要量化答案质量。

方向一:用多种方式"理解"同一个问题

与其依赖单一的向量检索,不如用多种策略并行:

HyDE(假设文档增强)

系统先生成一个"假想的完美答案文档",再用这个文档去检索。这样能找到那些"意思对但表述不同"的文档。

Multi-Query(多角度提问)

把用户的一个问题,自动改写成 3-4 个不同角度的提问,分别检索。比如"如何配置"可以改写成"配置方法""设置步骤""参数说明"等。

MOI(组合检索)

并行执行上述策略,然后把结果聚合去重。在我们的测试中,这种方法能检索到 200 个候选文档(传统方法只有 50 个),检索耗时约 2 秒(相比传统方法的 0.5 秒,增加了 1.5 秒)。

检索方法召回文档数检索耗时相关性分数 (nDCG)
Dify (基础)50 个~0.5s0.72
HyDE50 个~2.0s0.78
Multi-Query150 个~1.0s0.81
MOI (组合)200 个 ⬆️300%~2.0s (+1.5s)0.85 ⬆️18%

说明:MOI 方法通过并行化,在增加 1.5 秒的情况下,召回率提升 300%,准确率提升 18%。

方向二:给每个答案打个"信任分"

检索到文档后,我们加入了两个维度的实时评估:

幻觉检测(0-1 分)

用专门的 HHEM 模型检查"生成的答案是否和检索到的文档内容一致"。如果答案里出现了文档中没有的信息,分数就会降低。单次检测耗时不到 0.1 秒。

检索相关性(nDCG 评分)

使用 UMBRELA 标准,评估每个检索到的文档与问题的相关程度(0-3 分制),然后聚合成一个整体的相关性分数。对 10 个文档的评估耗时约 5 秒。

这些评估异步进行,30 秒内完成,不影响用户看答案的体验。用户可以实时看到:

  • "这个答案的可信度是 0.92"(幻觉检测分数)
  • "检索到的 10 个文档,平均相关性 0.85"(nDCG 分数)
  • 每个文档的相关性评分和排序

效果如何?

我们在一个包含技术文档的测试环境中做了验证:

检索准确率明显提升

指标传统方法 (Dify)MOI Assistant
召回文档数50 个200 个 (⬆️300%)
检索耗时0.5 秒2.0 秒 (+1.5秒)
准确率 (nDCG)0.720.85 (⬆️18%)

核心收益:召回率提升 300%,准确率提升 18%,检索耗时仅增加 1.5 秒。

答案质量可量化

在 100 个测试问题中:

  • 幻觉检测分数与人工标注相关系数 > 0.85
  • 相关性评分能有效区分高质量和低质量的检索结果
  • 评估在 30 秒内异步完成,不影响答案生成

最关键的是,用户终于能看到答案的可信度,而不是盲目相信或怀疑。

系统性能优化

性能指标数值说明
首字延迟< 1 秒问题提交后,首字出现的时间
答案生成速度~10 字/秒流式输出,逐字显示
向量检索< 500msMatrixOne 数据库响应
Rerank 处理< 200msGTE-Rerank 模型耗时
总响应时间2-3 秒完整答案生成的总时间

通过并行化优化,系统总响应时间从传统方法的 3-5 秒降低到 2-3 秒,效率提升约 40%。

多数据源检索效果对比

对比项传统方法MOI Assistant
查询次数需要手动查询两次一次查询完成
耗时约 6 秒约 3 秒
效率提升基准⬆️50%

DEMO 演示截图

1.png

(支持知识库分类,并支持仅检索单一知识库)

2.png

(支持知识库分类,同时可对所有知识库进行统一搜索)

3.png

4.png

(MOI 针对解析&检索功能,进行了优化,从结果可看出,MOI 检索回答整体表现较好)

一些观察和思考

"多问几次"不应该是用户的必选项

理想情况下,用户不应该因为"第一次没检索到"就换个问法再试一次。多检索策略的目标,就是让系统主动帮用户"多问几次"。

透明度本身就是产品价值

B 端用户对"黑盒系统"天然不信任。让用户看到答案来源、相关性评分、可信度,这种透明度本身就能提升产品体验。

有测试用户反馈:"即使答案不完美,但我能看到评分,就知道该不该深入核查,这个很有用。"

技术优化的目标是减少"不确定性"

RAG 系统很难做到 100% 准确,但可以通过技术手段,让"不准确的时候,系统知道自己不准确"。这种诚实,比虚假的自信更重要。

写在最后

RAG 系统的检索准确性,表面上是个技术问题,本质上是个用户信任问题。

当用户提问时,他们期待的不仅是一个答案,更是:

  • 这个答案是对的
  • 即使不对,我能知道它可能不对
  • 我能理解答案从哪里来的

而 RAG 系统的优化不只是"调参数"或"换模型",更需要底层基础设施的支撑。

MOI 的向量检索能力让我们可以在毫秒级完成大规模相似度计算;SQL 与向量的融合查询,让复杂的多条件筛选成为可能;而云原生架构带来的弹性扩展,让实时评估这种"额外计算"不再是性能瓶颈。

当基础设施足够强大时,上层应用才有空间去做更精细的优化。这只是开始。RAG 的想象空间还有很多,而 MOI 正在成为我们探索这些可能性的基座。

点击链接,查看【 MOI Assistant 】实景演示 DEMO https://www.bilibili.com/video/BV1sJSWBhEpd/?vd_source=0125861879b1b6dceb4e6b846abd4be7