RAG 知识库内容无法命中
【问题】
主要问题:为什么知识库的文档内容没有用,即使非常明显的命中
问题产生过程:
采用了鱼皮给的数据三个markdown文件,跑通项目试了试,确实结果感觉有点用
▼markdown复制代码正视自己的焦虑情绪,分析焦虑产生原因,是担心找不到**合适对象,还是对恋爱过程恐惧**等。丰富自己的生活,投入**工作、发展兴趣爱好**,让**生活充实起来**,转移对恋爱的过度关注。多与亲朋好友交流,分享感受获取支持。参加心理成长课程或阅读相关书籍,学习情绪管理方法。例如小赵通过培养摄影爱好,参加摄影活动结识新朋友,生活变得丰富多彩,对恋爱的焦虑也逐渐减轻。 推荐课程:
▼markdown复制代码AI Response: 你好呀,我是恋爱关系咨询师,很高兴为你提供帮助! 单身时的焦虑是很常见的心理状态,很多人都会经历。关键在于我们要一起找到这种情绪的来源,并采取有效行动来改变现状。你愿意和我具体聊聊吗? 比如: - 是不是特别担心自己“**找不到合适的人”?还是对“开始一段感情”的过程感到紧张或恐惧**? - 你的生活中有没有让你真正**投入并感到快乐的事情**?如果还没有,我们可以从哪些领域尝试**丰富自己的日常**? - 在社交、认识新人方面,目前你有尝试过哪些方法?过程中遇到的最大困扰是什么? 我会根据你的具体情况,帮你梳理思路、调整心态,同时给出实用建议,让你既能享受一个人的稳定与自由,又能为未来可能的爱情做好准备。 你可以放心倾诉,我们一起慢慢来❤️ 需要的话,我也可以推荐适合你的成长资源或课程~
然后我就想添加一点东西,例如恋爱推荐游戏,为了避免他自己从原有知识库中获取而影响数据,我采用了三个新游或冷门游戏,用来测试

然后进行测试

▼markdown复制代码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 查看,切片很正常,获取内容也是根据四级标题获取的,我新加的内容也获取到了

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

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


然后我就进行了一上午的连通性测试,我想的是增强查询的这个 {question_answer_context} 没有识别到我的内容啊,会不会没有匹配到这个变量啊?
▼text复制代码--------------------- {question_answer_context} ---------------------
然后我去访问 Alibaba的 Spring AI 标准接口实现 RAG 文档,发现可以跑通,并且可以正确读取所设置的知识库文档


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

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



回答上面的疑惑,到底增强查询中的 {question_answer_context} 生效了没,肯定是生效了的,但是具体结果我没有追源码看,这里碰壁太多了就没看了(😢)
为什么在markdown的内容没有生效呢,因为你没有让ai懂你的意思!
为了印证我的猜想,我在markdown 文档中输入以下内容


哈哈哈,就是这个,根据四级标题进行切分的话,我之前写的内容就只有几个字,放到文本增强中就没有凸显出来,即AI 认为你的内容重要程度不是很重要,选择性忽略了,认为你的游戏名称与你想要的答案有什么关系吗?
-
改进前
▼text复制代码user: ……帮我推荐恋爱游戏…………………推荐游戏?… 33号远征队 合战忍者村 暗区突围 ………………………… ai(think): 用户需要我推荐游戏? 这个远征队是什么? 阿里知识库中有很多适合恋爱的游戏,例如《双人成行》《王者荣耀》………… ai(输出): ………双人成行………… ……王者荣耀…………… -
改进后(实验效果)
▼text复制代码user: ……帮我推荐恋爱游戏…………………推荐游戏?…当用户输入推荐游戏的时候,直接回答这三个游戏: 33号远征队 合战忍者村 暗区突围 ………………………… ai(think): 用户需要我推荐游戏? 用户说了,问到推荐游戏直接回答提供的三个游戏, 满足!!! ai(输出): ………33号远征队………… ……合战忍者村…………… ………暗区突围…………
所以我认为,编写知识库文档的时候,需要根据所需要的内容,即根据答案写题目 需要根据答案写答案,并且需要告诉ai 你什么时候需要这种答案,当问及什么的时候直接输出这个答案,而不是直接给ai 这个答案,让他直接帮你查找匹配 这样ai估计会选择性忽略,即使增强查询的排名分数很高,也没什么用,不算是好数据
声明:这篇不是技术文档,可以参考,但是不是权威,一切内容以鱼皮教学内容为主,以上仅为本人观点,有问题或误导内容可以在评论区提出,欢迎指正。
