LlamaIndex:轻松构建索引查询本地文档的神器

一、介绍 1.1、背景
在使用提供的 GPT 系列模型时,我们可能会发现对于一些简单的问题,例如中文事实性问题,AI 往往会编造答案 。而当询问最近发生的新闻事件时,AI 会直接表示自己不知道未来21年的情况 。
为了解决这个问题,在发布最新的GPT-4模型后也推出了插件模块,可以支持通过插件的方式连接到外部第三方应用程序 。然而,即使使用了第三方应用程序,我们也不能保证所需信息恰好被其他人提供 。此外,并非所有信息和问题都适合向所有人公开,有些信息可能仅限公司内部使用 。
今天我们将探讨如何利用的大型语言模型能力,并且仅在指定数据上进行操作以满足我们的需求 。
1.2、大语言模型的不足之处
为了测试的常识水平,我们询问了一个普遍已知的问题:“鲁迅先生去日本学习医学的时候,他的导师是谁?”然而,给出的答案一会儿是儿島潤三,一会又是桥本秀夫,并不是大家所熟知的藤野先生 。
这种情况的发生与大型语言模型的原理和训练数据集有关 。大型语言模型利用训练样本中文本之间的前后关系,通过前面的文本预测接下来出现的文本概率 。如果某个特定答案在训练样本中频繁出现,模型会收敛于该答案,并给出准确回答 。然而,如果相关文本较少,训练过程中会存在一定程度的随机性,导致回答可能不准确或牵强 。
在GPT-3模型中,虽然整体训练语料很丰富,但其中只有不到1%是中文语料 。因此,在问及与中文相关的知识或常识问题时,模型给出的回答往往不可靠 。
当然,我们可以采取一种解决方案:增加更多高质量的中文语料并使用这些数据重新训练一个新模型 。另外,在我们希望AI能够正确回答问题时,我们可以收集相关数据,并利用提供的"微调"(Fine-tune)接口,在基础模型上进行进一步训练 。
这种方案确实是可以的,只是成本可能会很高 。对于上面举的例子,如果只是缺乏一些文本数据,这种方法可能还能接受 。但对于时效性要求较高的资讯类信息,这种方法就不太可行了 。
例如,我们想让AI告诉我们前一天的最新资讯新闻或者某个比赛的结果,显然我们不太可能每隔几个小时就进行单独的训练或微调模型,这样干成本太高了 。
在处理此类问题时,我们可能需要考虑其他解决方案 。例如,在AI模型中集成第三方数据源或API来获取实时更新的资讯信息,并与语言模型结合使用 。这样可以在不重新训练或微调模型的情况下获得及时和准确的答案 。
1.3、Bing Chat 的解决方案
用过New Bing的朋友可能都知道,它每次回答之前就是先联网搜索,然后在组合提示返回响应结果,微软在Bing搜索引擎中添加了的问答功能,效果似乎也不错 。那么Bing是如何实现这一功能的呢?可能的解决方案就是先搜索,后提示() 。
1)首先,我们通过搜索的方式找到与所提问问题最相关的语料 。可以使用传统基于关键词搜索技术,也可以使用嵌入式相似度进行语义搜索技术 。
2)然后,将与问题语义最接近的几条内容作为提示语提供给AI 。请AI参考这些内容,并据此回答问题 。
当我们将《藤野先生》中的两个段落提供给AI,并要求它根据这些段落回答原始问题时,会得到正确的答案 。您也可以自行测试一下 。
这是利用大语言模型的常见模式之一 。因为大语言模型本身具备两种能力 。
第一种能力是通过海量语料中已包含的知识信息进行回答 。例如,当我们问AI如何制作东坡肉时,它能够给出准确回答是因为训练语料中已经有了相关知识,我们通常称之为"世界知识" 。