所有app的对外接口基本上是两个,输入和输出。两个都很重要。
早期的search engine 非常多,多如牛毛。很多人的钱都砸里面了。几乎所有的 都是按照 关键词进行检索的,通过在数据库中 调用 Full Text Search 找到结果,输出给用户。包括后起之秀 Google。
Google胜出的几个原因,、
一是输出排序用了PageRank,这是Larry Page模仿科学文献中的 Impact factor搞的,
二是Google对输入关键词的选择,是Google成功的另一大关键,Google把英文词分为三类,1)常用词,比如 the, to, in, 等等;2)中度流行词;3)偏僻词 少用词。Google检索基本上忽略常用词,而是以 中度流行词为主进行检索,偏僻词稍作些许参考。哪些词是检索词,是Google的秘密。
三是用了Nosql数据库,发明了自己的document database, 极大的提高了速度。
我当时最喜欢的 search engine 是 AllTheWeb,它的独特之处是给你很多的输入栏,可以对 title 定 检索词,对 url 定检索词,对内容定 检索词,对 meta 定 检索词,等等,然后它在对应的数据库的 Column 里面查询,所以给出的结果 不仅快,而且非常准,原因是输入非常准,直接针对每个 column。但是广大的劳动人民不喜欢,大概嫌烦,劳动人民不爱劳动。
Google成功后,也最早希望能够 通过人工智能进行 NLP natual language processing 来解读 输入。当然,可能WolframAlpha 更早就解读 问句来回答问题。但是 WolframAlpha 没有成功,尽管我很喜欢它。它在解读输入上相当成功,但是他的基本理念还是从数据库从得到万无一失的正确答案给用户,所以没有得到劳动人民的垂青。
Google放弃了 RNN (recurrent neural networks),终于在 2017年 静悄悄的 完成了一项壮举,那就是 language model Transformer. 这是 革命性的一步,现在所有的先进 language model 都是用 Transformer!比如
- OpenAI 的 GPT-3, (chatGPT) 是 Generative Pretrained Transformer 的缩写
- Google 的 BERT,是 Bidirectional Encoder Representations from Transformer 的缩写
- 微软的 CTRL,是 Conditional TRansformer Language 的缩写
- Facebook 的,RoBERTa ,是 Robustly Optimized BERT Transformer Approach的缩写
- 华为的 Hi-Transformer
- 等等
遗憾的是,由于Google是个好面子的大公司,不能轻易的推出不成熟的东西 以及不安全的东西。所以 Google的训练数据搞的太大,好像是 OpenAI 的几十倍,而且安全性也搞得过于复杂。要知道,模型训练是非常昂贵的,所以 臃肿迟缓的Google BERT 被 GPT 捷足先登。
总结一下,检索输入,从 分类 Column 检索 (All The web)到 关键词 (Google),到 NLP Language model (Transformer)应该是趋势,Google 是否还能保住检索的市场,关键在于 BERT 能不能取胜