要解决智能体在回答问题时经常忽略知识库的问题,可以从以下几个方面入手:
在实际应用中,不同的场景可能需要不同的解决策略,需要根据具体情况进行调整和优化。
在我提问了之后,大模型去知识库里找到了这个内容,然后回复了我们。这就是一个简单的正确回复的demo。然而,我们会发现,有时候她的回答会十分不准确。比如:明显回答的牛头不对马嘴。而且,图二中是知识库截图,其中是有“一菲为美嘉找了一份助教工作”的内容的。但是回答这个问题时,并没有根据正确的知识库内容回答。这个,就是基于知识库问答中的一个非常常见的错误场景。在其他情况下,甚至有可能出现报价错误、胡编乱造等等。这在严肃场景中,是不能接受的出错。现在应该能够直观的理解,为什么需要让大模型根据知识库回答的更加准确、更符合我们的要求。在AI领域中,优化AI更准确的回答一些专有问题的过程,有一个更加专业的术语,叫做RAG。接下来,咱们进入正题,一步一步探索,如何优化回答。
工作流一开始和结束都有特别的小块块。开始的那个小块块就像是工作的起点,它可以包含你输入的信息。结束的那个小块块就像是工作的终点,它会告诉你工作流运行的结果是什么。不同的小块块可能需要不同的信息才能工作,这些信息有两种:一种是引用前面小块块给出的信息,另一种是你可以自己设定的信息。在竖起耳朵听的智能体里,我也用到了5个小块块,可以回答带有图片口语的结果,使回答更好。😎👉知识库扣子的知识库功能很强大,它可以帮你上传和存储外面的知识内容,并且提供了很多种查找知识的方法。如果你的大模型有时候会出现幻觉,或者在某些专业领域知识不够,扣子的知识能力就能帮你解决这个问题,让你的大模型回复得更准确。在我的智能体里面,我用到了自己的知识库,我收集了很多关于地道口语表达的短句,知识库可以包含很多格式的文件,我只用了文本格式,有了自己的知识库,当智能体回答用户的时候会首先检索自己的知识库内容。👉开场白为了体验更好,我们还可以添加一段开场白,告诉用户我们是这个智能体是干什么的?我的开场白:
这个智能体是由1个工作流+6个数据库实现的。工作流的设计比较简单,一个input,对接知识库,然后搭载豆包function call大模型,最后是一个output。6个数据库分别是我的公众号发表过的文章+执业药师教材(做第一个知识库的时候没经验,其实应该分开成两个数据库)、执业医师讲义、药监局新药审评报告、中国医药企业融资动态、药物对外授权(BD)动态、全球药物销售额。工作流是非常简单的,相对有难度的是收集知识库的资料并根据清洗结果进行手动二次校对(需要一定专业知识)。也许有人要问,医药知识我直接问大模型不好吗?大模型的语料来源庞杂,广度一定是比智能体好很多的,但是在医疗这个严肃领域,对回答准确性的要求非常高。为了避免出现误导性的回答,我在提示词中约定了回答只能来自于知识库。也许有问题超出知识库范畴的情况,但还没发现智能体回答是医学上不严谨的现象。广or精准,在医疗领域一定是精准优先的。