跳至主要內容

表格检索的RAG和MCP方案对比

pptg大约 3 分钟

1. 测试表

对于一个表格类型的数据,上传到知识库中之后,如果行列不大,那还好说。一旦需要切块,就会将原本数据中的纵向信息丢失,导致数据跨度很大、或者全局性问题的回答效果较差。

上表中,每一行分别意味着XXX场景,都适用于哪些行业。

2. RAG测试(准确率50%)

直接放到Dify的知识库中,对其进行切片,结果如下:

进行简单的对话测试:

Q1: 加密通话通信适用哪些行业
A1: 加密通话通信适用于政务和政法公安行业

Q2: 人员身份识别适用于哪些发行业
A2: 人员身份识别适用于政务、要客和教育行业

Q3: 适用于政务行业的场景有哪些
A4: 适用于政务行业的场景包括“融合通信联络”和“人员身份识别”

Q4: 每个场景,分别能覆盖多少行业
A4: 在知识库中:
“融合通信联络”场景适用于政务、政法公安和要客三个行业。
“人员身份识别”场景适用于政务、要客和教育三个行业。
“可信终端接入”场景适用于要客、金融和教育三个行业。
所以,“融合通信联络”和“人员身份识别”场景分别适用于3个行业,“可信终端接入”场景也适用于3个行业。

可以看到Q3、Q4的回答根本不准 查了一下Q4的log,果然是检索的时候,没有取到全部的上下文

3. MCP-SQL测试(准确率100%)

这里想到通过直接查SQL来抓上下文,这样就能有效的组织行、列的信息,构建一个自动调用SQL的Agent,测试结果如下:

不要在意变量名,为了测试图快的

Q1: 加密通话通信适用哪些行业
A1: 加密通话通信适用于政务和政法公安行业

Q2: 人员身份识别适用于哪些发行业
A2: 人员身份识别适用于政务、要客和教育

Q3: 适用于政务行业的场景有哪些
A3: 适用于政务行业的场景有:加密通话通信、人员身份识别、融合通信联络

Q4: 每个场景,分别能覆盖多少行业
A4: 每个场景覆盖的行业数量如下:
- 融合通信联络:覆盖了4个行业
- 可信终端接入:覆盖了3个行业
- 人员身份识别:覆盖了3个行业
- 加密通话通信:覆盖了2个行业

4. 对比

RAGMCP-SQL
质量质量较低(表格类型的数据很难将横向、纵向、全局信息都组织起来)质量很高、回答准确(依赖于模型输出的SQL是准确的)
速度2s(A10-Qwen2.5-14B-AWQ)20s(A10-Qwen2.5-14B-AWQ)

可以看到直接查SQL的质量很高,但是速度比较慢。而检索RAG的速度快,但不容易检索到全部有用的信息。

于是有一个想法,在RAG中存入通用的热点问题,用MCP-SQL当问题生成器。两难自解😆。但是这样有两个前提:

  1. SQL的变动不能过于频繁,不然会导致RAG频繁清库,否则缓存中会有脏数据
  2. 初次请求时,A10的效率还是太低了,考虑到用户的体验,需要加强性能