高效的信息检索是现代社会人类的基本需求!
很久以前,需要查看某些资料,需要去图书馆,找到某一类的图书,翻开图文根据它的目录找到需要的内容,这种原始的信息检索过程类似在红黑树中查找内容。
在需要检索的信息不多的情况下,这种方法尚且可以应付,然而人类的知识是不断增长的,这种方式不能满足需求。还好,计算机的时代来临解决了这个问题。
早期的搜索引擎,例如雅虎,像是一个网上图书馆。后来的谷歌,百度,利用诸如著名的PageRank 算法、自然语言处理等技术独领风骚,但是给用户的还是查找到的网页结果。到如今AI大模型时代来临,彻底重构了稳定多年的搜索引擎,连谷歌都乱了阵脚,大家可以以更自然的方式检索信息,甚至你不需要将问题描述那么清楚,曾经的各种搜索技巧在新技术面前黯然失色。作为当今最先进最火热的计算机技术,AI大模型高效的信息检索能力有本质变化吗。
目前的AI大模型本质上也是一个超大规模的模式匹配,诸如RAG这样的技术也用到了索引。
苹果公司研究人员发现,大模型在数学推理方面的能力存在显著的局限性。尽管在某些情况下表现出色,但它们在处理与训练分布不同的问题时表现不佳,这表明它们的推理过程可能更像是复杂的模式匹配,而不是真正的逻辑推理。【参考原文:arxiv.org/pdf/2410.05… 】
解决一类问题的过程就是找到将问题抽象成同一个模式,生成一个公式或者通用的结局方案,遇到新的问题再往上套就好了。
从信息检索的能力不断进化的进程来看,始终没变的是构建了一个“目录”,我们根据“关键词”从这个“目录”中找到结果,当然也可能找不到结果。如果能构建通用的目录,这个目录能够查到和表示任何种类的东西,我们就找到了信息检索的通用方法。
传统的关系型数据库为什么不可以?在你查询之前必须先知道自己要查什么,然后构造需要的查询条件,但是很多时候是不知道的,这个时候就需要模糊搜索的能力。
比如我要找到一个苹果,输入关键字“苹果”,结果得到了许多不同类型的苹果:大小不一、颜色各异、酸甜不同。
再比如我要找一个大的、红色的、甜的苹果,输入关键字“苹果”、“大”、“红”、“甜”,结果仍然有许多符合条件的苹果。如果要找到我最想要的,看起来还要输入更多的关键字,如果还是有一大堆满足条件的呢,这个时候想到了要排序,按照大小排序,同时按照颜色排序,还要按照甜度排序,要排序就得可以比较大小,自然的想到把这些指标用一个数字表示,数字的值表示这个指标的程度,将这些指标组合起来,用来代替一个事物的描述,好多个数字组合起来它不就是一个向量吗?
信息检索的问题本质被我们抽象成为了一个向量查找的问题,似乎找到了一个方向,以后我们要做的事情就是在这个思路上不断优化。
目前已经有很多向量查询的组件了,让我们简明扼要,从基本原理开始,从0开始实现一个向量索引!