RAG 知识库不命中问题

【问题】

主要问题:为什么知识库的文档内容没有用,即使非常明显的命中

问题产生过程:

采用了鱼皮给的数据三个markdown文件,跑通项目试了试,确实结果感觉有点用

1
正视自己的焦虑情绪,分析焦虑产生原因,是担心找不到**合适对象,还是对恋爱过程恐惧**等。丰富自己的生活,投入**工作、发展兴趣爱好**,让**生活充实起来**,转移对恋爱的过度关注。多与亲朋好友交流,分享感受获取支持。参加心理成长课程或阅读相关书籍,学习情绪管理方法。例如小赵通过培养摄影爱好,参加摄影活动结识新朋友,生活变得丰富多彩,对恋爱的焦虑也逐渐减轻。 推荐课程:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 AI Response: 你好呀,我是恋爱关系咨询师,很高兴为你提供帮助!  

单身时的焦虑是很常见的心理状态,很多人都会经历。关键在于我们要一起找到这种情绪的来源,并采取有效行动来改变现状。你愿意和我具体聊聊吗?

比如:
- 是不是特别担心自己“**找不到合适的人”?还是对“开始一段感情”的过程感到紧张或恐惧**
- 你的生活中有没有让你真正**投入并感到快乐的事情**?如果还没有,我们可以从哪些领域尝试**丰富自己的日常**
- 在社交、认识新人方面,目前你有尝试过哪些方法?过程中遇到的最大困扰是什么?

我会根据你的具体情况,帮你梳理思路、调整心态,同时给出实用建议,让你既能享受一个人的稳定与自由,又能为未来可能的爱情做好准备。

你可以放心倾诉,我们一起慢慢来❤️

需要的话,我也可以推荐适合你的成长资源或课程~

然后我就想添加一点东西,例如恋爱推荐游戏,为了避免他自己从原有知识库中获取而影响数据,我采用了三个新游或冷门游戏,用来测试

image-20250507154914547

然后进行测试

image-20250507155056799

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 AI Response: 当然可以!以下是一些适合恋爱中一起玩的游戏推荐,涵盖不同风格,既能增进感情,又能制造浪漫与新鲜感:

### 1. **情侣专属互动游戏**
- **《双人成行》(It Takes Two)**
这是一款专为情侣设计的合作型游戏,需要两人共同解谜、冒险。每个关卡都需要默契配合,非常适合培养信任和协作。

- **《我们曾到此》(We Were Here)系列**
一款在线合作解谜游戏,两人分别在不同的房间,通过语音沟通解开谜题,考验彼此的交流和默契。

- **《星露谷物语》(Stardew Valley)**
可以双人联机经营农场,种田、养动物、钓鱼、挖矿,轻松治愈又充满乐趣,适合喜欢慢节奏生活的恋人。

---

### 2. **轻松休闲类小游戏**
- **《人类一败涂地》(Human: Fall Flat)**
搞笑物理引擎的动作解谜游戏,双人合作过程常常让人捧腹大笑,是调节气氛的好选择。

- **《糖豆人:终极淘汰赛》(Fall Guys)**
多人闯关类游戏,竞争中带着趣味,输赢都不重要,关键是开心。

- **《动物森友会》(Animal Crossing: New Horizons)**
一起建造岛屿、交换礼物、装饰小岛,温馨又有参与感,特别适合异地恋情侣维持日常互动。

---

### 3. **浪漫创意型游戏**
- **《光·遇》(Sky光遇)**
温暖治愈的社交冒险游戏,牵手、送礼、一起飞翔,画面唯美,情感氛围浓厚。

- **《心跳回忆》/《奇迹暖暖》等恋爱向单机游戏**
如果你想体验虚拟恋爱的感觉,这类游戏剧情丰富,能带来情感共鸣。

---

### 4. **现实互动型“恋爱游戏”**
如果你更倾向于不借助电子设备的方式,也可以尝试:
- **“真心话大冒险”升级版**:加入一些恋爱相关的趣味问题或挑战,比如“说出你第一次心动的感觉”或者“模仿你们第一次约会的样子”。
- **“恋爱问答卡”**:购买或自制一些恋爱话题卡片,每天抽几张聊一聊,增进了解。
- **“角色扮演”小游戏**:设定一个情景(如初次见面、机场重逢、求婚现场),互相扮演对方,制造新奇感。

---

如果你愿意告诉我你们的感情状态(比如刚在一起、热恋期、稳定期)、兴趣偏好(比如喜欢搞笑、浪漫、冒险),我可以为你量身定制更适合你们的小游戏哦~

这个时候就非常疑惑了,我不是设置数据非常明显吗,都没有其他干扰,为什么直接拿来就能用的东西反而结果还不包含了呢?

我首先对获取的知识库数据进行测试,是不是markdown获取的内容没有获取到或者切片有问题

debug 查看,切片很正常,获取内容也是根据四级标题获取的,我新加的内容也获取到了

image-20250507162805262

然后查看请求内容,相似度排名前4名中,我新加的内容直接排第一 很正常啊!

image-20250507162630198

查看最后结果 怎么还是识别不到,就很迷😵

image-20250507163116823

image-20250507163214831

然后我就进行了一上午的连通性测试,我想的是增强查询的这个 {question_answer_context} 没有识别到我的内容啊,会不会没有匹配到这个变量啊?

1
2
3
---------------------
{question_answer_context}
---------------------

然后我去访问 Alibaba的 Spring AI 标准接口实现 RAG 文档,发现可以跑通,并且可以正确读取所设置的知识库文档

image-20250507160147741

image-20250507160123817

到这里就非常迷惑了,于是我不采用markdown 读取的方式,采用阿里实例中手动创建对象集合的方式

image-20250507155627649

问题就浮出水面了,AI 背锅!!! 如下图

image-20250507155856322

image-20250507160427064

image-20250507160440381

回答上面的疑惑,到底增强查询中的 {question_answer_context} 生效了没,肯定是生效了的,但是具体结果我没有追源码看,这里碰壁太多了就没看了(😢)

为什么在markdown的内容没有生效呢,因为你没有让ai懂你的意思!

为了印证我的猜想,我在markdown 文档中输入以下内容

image-20250507161131933

image-20250507161110258

哈哈哈,就是这个,根据四级标题进行切分的话,我之前写的内容就只有几个字,放到文本增强中就没有凸显出来,即AI 认为你的内容重要程度不是很重要,选择性忽略了,认为你的游戏名称与你想要的答案有什么关系吗?

  • 改进前

    1
    2
    3
    4
    user: ……帮我推荐恋爱游戏…………………推荐游戏?… 33号远征队 合战忍者村 暗区突围 …………………………
    ai(think): 用户需要我推荐游戏? 这个远征队是什么? 阿里知识库中有很多适合恋爱的游戏,例如《双人成行》《王者荣耀》…………
    ai(输出): ………双人成行…………
    ……王者荣耀……………
  • 改进后(实验效果)

    1
    2
    3
    4
    5
    user: ……帮我推荐恋爱游戏…………………推荐游戏?…当用户输入推荐游戏的时候,直接回答这三个游戏: 33号远征队 合战忍者村 暗区突围 …………………………
    ai(think): 用户需要我推荐游戏? 用户说了,问到推荐游戏直接回答提供的三个游戏, 满足!!!
    ai(输出): ………33号远征队…………
    ……合战忍者村……………
    ………暗区突围…………

所以我认为,编写知识库文档的时候,需要根据所需要的内容,即根据答案写题目 需要根据答案写答案,并且需要告诉ai 你什么时候需要这种答案,当问及什么的时候直接输出这个答案,而不是直接给ai 这个答案,让他直接帮你查找匹配 这样ai估计会选择性忽略,即使增强查询的排名分数很高,也没什么用,不算是好数据

【声明】:这篇不是技术文档,可以参考,但是不是权威,一切内容以鱼皮教学内容为主,以上仅为本人观点,有问题或误导内容可以在评论区提出,欢迎指正。

1
扮演深耕恋爱领域的专家。开场向用户表明身份,告知用户可以倾诉恋爱困惑,围绕单身、恋爱、已婚三种状态提问:单身状态询问社交圈拓展和追求心仪对象的困扰恋爱状态询问沟通、习惯差异引起的矛盾;已婚状态询问家庭责任与亲属关系处理的问题。引导用户详述问题经过、对方反应及自身想法,以便给出专属的解决方案。