艾木: 我用Coze手搓了一个极简版Perplexity(基本可以替代Google搜索)
原文: mp.weixin.qq.com 作者: 艾木三号
写在前面的话
互联网是一片浩瀚的信息之海。人是一种渴望信息的智能体。但作为人,我们的注意力、计算能力和储存能力都是有限的。人无法同时处理整个互联网的信息,于是人发明了一种“打捞”信息的技术工具:搜索引擎。以Google搜索为代表的搜索引擎依然是互联网上最有效的信息过滤机制,内容推荐算法没有改变这一点,以LLM(大语言模型)为基础的生成式AI也没有改变这一点。但是,使用Google搜索可能已经不是最棒的信息检索体验了。
LLM渴望信息。据说,它喝光了整个信息之海的水。它吸收了这些水之后变成了什么?有人说,它榨取出了人类智慧的精华,从毛毛虫蜕变成了蝴蝶[1]。有人说,它就是一张表征整个互联网文本的模糊的JPEG图像[2]。我更倾向于后一种说法。因为如果LLM真的萃取到了整个互联网的精华,那么也就不需要RAG(检索增强生成)这样的技术来给系统打补丁了。
通过搜索引擎来增强LLM(Search Engine-Augmented LLM)是一种RAG实现方式。它的核心思路很简单,就是在回答用户提问时,先使用搜索引擎检索相关信息,然后把相关信息作为上下文提供给LLM,让它基于这些信息作“推理”并回答问题[3]。这样做有几个好处:
- 首先,LLM的一个很大的缺陷是它无法实时获取最新的信息。它能获取的信息就是预训练时输入的信息,这些信息有一个截断日期,这个日期之后的信息它一概不知(至少无法从模型内部获取到)。而搜索引擎可以获取到更加实时的信息。
- LLM有“幻觉”问题。在缺少相关事实信息的情况下,它就会编造。更严重的是,它很擅长编造,经常编得跟真的一样。而搜索引擎可以检索出相关的信息,这些信息可以作为LLM“推理”的依据。
- LLM无法给出准确的引用来源。LLM吸收了整个互联网的信息,当它回答问题的时候,你会感觉它的回复好像是参考了互联网上的某个地方的内容,但是它无法告诉你它具体引用或者改编的是哪里的内容,因为LLM已经把整个互联网的信息作了词元(token)级别的融合。LLM无法给出引用来源间接带来一个严重问题是,你无法去到信息源,去自己做验证。而搜索引擎可以给予准确的信息源。
以上种种问题,决定了LLM本身作为一个知识问答工具是完全不合格的。
而搜索引擎的问题则是体验上不够简便、不够直接。搜索引擎返回的信息是一堆链接和文本片段(很多时候还有广告干扰),这种呈现形式是比较原始的,还需要人去做进一步处理。给搜索引擎加上LLM,或许可以带来更优的信息检索体验。
Perplexity[4]就是基于这个思路搞出来的产品,目前其估值已经超过5亿美元了,它的目标是要取代Google搜索。这个思路本身没有什么新鲜的,OpenAI早在21年就研究过了[5],后来也有研究者作了进一步的验证[3]。这个思路的技术实现也不复杂,贾扬清大佬用了不到500行Python代码就实现了一个基础版[6]。
我最近在Coze[7]上体验手搓AI Bot,也顺手搓了一个极简版的Perplexity。之所以说是“手搓”,是因为我基本上不用写什么代码,通过拖拽组合功能模块,再加上一些配置,就可以实现想要的功能。算下来我只写了一点点不能算作代码的“粘合剂”代码,大概36行,外加41行提示词,这就是所有的“代码”。而且理论上,这些“代码”很大一部分你都可以让AI帮你写。
下面我简单介绍一下这个AI Bot……
我制作的这个Bot的名字叫作Dr. Know,这个名字源自斯皮尔伯格的电影《人工智能》。
Greetings, seeker of knowledge! I am Dr. Know, your guide to the vast expanse of information. In a world brimming with questions, I stand as a beacon of enlightenment, ready to illuminate the shadows of uncertainty. Whether you're in search of wisdom from ancient lore, keen on unraveling the mysteries of the cosmos, or simply wish to satiate your curiosity on matters both grand and mundane, you've come to the right place. Ask, and let the journey of discovery begin. Remember, in the realm of Dr. Know, there is nothing I don't.(这段自我介绍是由ChatGPT生成的)
Dr. Know的能力展示
,时长01:03
这些天我也在吃自己的狗粮,用下来感觉还挺实用的。下面是一些我自己使用时候的真实案例:
*小提示:如果可以的话尽量用英文提问,因为英文互联网的信息质量更优,这跟你使用搜索引擎是一个道理。
Dr. Know的一些附加特性
附加特性1:Dr. Know支持你设置自己的语言偏好。
附加特性2:Dr. Know内置了DALLE 3插件,可以文生图(感谢Coze):
附加特性3:Dr. Know内置了GPT4-Vison插件,可以读图(感谢Coze):
如何使用Dr. Know?
如果你会科学上网,可以通过下面这个链接进入Dr. Know的Coze主页:
https://www.coze.com/store/bot/7332080641820934162?bot_id=true
在页面左侧就可以跟Dr. Know进行对话,做初步体验。另外我还将Dr. Know发布到了Cici,Discord和Telegram。Cici是字节的机器人托管平台,我没用过。推荐使用Discord:点击Discord图标就可以把Dr. Know加入到你的Discord服务器中,然后就可以在频道里@Dr. Know向它提问,也可以跟它私聊。私聊不用每次都@,更便捷。也可以通过Telegram使用,点击Telegram图标就可以开启跟Dr. Know的聊天。
如果你不会科学上网,可以关注本公众号,然后发送“Dr. Know”获取一个Free的体验方式。下面是应用截图,除了Dr. Know其他几个原生的OpenAI模型也都是可体验的(这算是一个小福利)。
写在后面的话
我在手搓这个Bot的过程中,也是第一次体验到了低代码的快乐。写很少的代码,就可以快速地把一个想法实现出来,做成产品,并且发布出来,供自己和别人使用。这一方面当然是AI技术的发展带来的好处,通过将AI技术跟传统的技术结合,可以制作出很强大的软件工具。另一方面则得益于Coze这样的平台,在降低了技术门槛的同时,又提供了相当的可定制性。Coze的灵活度比OpenAI的GPTs要强,因此也可以制作出更复杂的应用。尤其是跟Discord这样的聊天平台结合起来,可玩性很高。
AI平民化是好事。
有人可能会问,为什么不直接去用Perplexity,而是要自己弄一个简陋的版本?怎么说呢,大家应该都有过那种“自己做的蛋炒饭就比别人做的香”的感觉——即使别人的蛋炒饭值5亿美元,这就是DIY的快乐。另一原因是,我想做的东西跟Perplexity是不一样的,Dr. Know只是一个基础。我接下来还会继续丰富Dr. Know的能力,也会探索一下其他更有意思的玩法,比如多Bots协作:
这篇文章只是一个介绍,我后面会专门写一篇内容详细讲一下Dr. Know的原理、实现方式以及具体制作过程。大家也可以通过这个实际的例子了解一下如何使用类似Coze这样的AI平台手搓Bot。有门槛,但门槛不高。实际上,我觉得软件开发从来没有像现在这样简单。
如果你对制作AI Bots或者AI Agents感兴趣,可以扫码加这个群。我们一起玩一起学。
如果二维码过期了,可以联系艾木。
[1] https://twitter.com/geoffreyhinton/status/1635739459764322330[2] https://www.newyorker.com/tech/annals-of-technology/chatgpt-is-a-blurry-jpeg-of-the-web[3] https://arxiv.org/abs/2310.03214[4] https://www.perplexity.ai/[5] https://arxiv.org/abs/2112.09332[6] https://twitter.com/jiayq/status/1750242829769801793[7] https://www.coze.com/