Used to check for browser translation.
用于检测浏览器翻译。
ブラウザの翻訳を検出する

10分钟内用 AIGNE 实现一个类似 Perplexity 的知识搜索引擎

Robert
2024年6月5日 · edited
B
Blogs
cover

使用 AIGNE 这个无代码(No-code)的应用开发引擎,我们可以用10分钟以内的时间来实现一个类似 Perplexity.ai 的应用, 不需要写一行代码!

下面的这个视频,我带您先整体了解一下什么是Perplexity以及我们是如何用 AIGNE来实现的。

下面是两个服务的地址,您可以分别体验一下:

当然我们这个10分钟做出来的 Demo App 虽然功能类似,但在细节上还是离估值10亿美元的公司的旗舰作品有一些距离😂,相信读者能理解这仅仅是一个Demo。

什么是Perplexity.ai ?#

Perplexity.ai 是一个基于人工智能的会话式搜索引擎,它可以使用自然语言预测文本来回答查询。

它是世界上第一个融合了对话和链接的搜索引擎,可以识别和回复模糊或抽象的自然语言查询。该公司成立于2022年,总部位于旧金山,到目前为止已筹集了1.65亿美元的资金,估值超过10亿美元

下图是在 Perplexity上问“什么是ArcBlock”,Perplexity 综合多方面的信息源给我们如下的回答:

image.png

Preplexity的实现原理#

Perplexity 的基本原理其实很简单,通过搜索引擎来查找和用户问题相关的资料,让大语言模型把这些返回的信息整理成为更可读的完整的信息。 最近Google, Bing 等搜索引擎都开始跟进在搜索结果页面上展现更可读的总结信息,其实现的原理也是类似的。



例如在 Google 上直接搜索“Whta's ArcBlock”, 得到下面的页面结果:

image.png

可以看到这个页面上其实已经有了相当多的相关信息, 但是我们需要自己来一个个地阅读和归纳总结。 在过去我们使用搜索引擎做研究的时候,也常常就是这么做的。 Perplexity 所做的事情,其实就是这个归纳总结在大预言模型的支持下的自动化。

一个更复杂和深入的实现,还可以采用大预言模型支持的多轮对话机制或者类似CoT(Chain of thoughts)机制来对内容进行进一步的研究和提炼,采用多个不同的搜索引擎,以及去深入链接内部去获取更多的内容,从而得出更完善的结论。

用 AIGNE 在10分钟内实现#

用 AIGNE 来实现 Perplexity 非常之简单,只需要定义一个 AI Agent 就能轻松实现,因此如果知道上述的原理以及能熟练使用 AIGNE,10分钟之内完全可以实现这个基础的版本。

定义输入#

AIGNE里的每一个 AI Agent 都包含了 输入-处理-输出 这三个部分。

我们 AIGNE的输入有一个独特的设计是,我们的输入可以来自另一个 Agent。这是一种“函数式” 或者“模块化” 的设计方式,可以采用非常简单而优雅的方式来实现从过程角度可能非常复杂甚至难以描述的问题。

image.png

这里我们的输入除了一个来自用户问的question 之外,有另一个输入是searchResult, 也就是 Search Engine 的返回结果,而Search Engine 的调用我们在 AIGNE里是一个可安装的Agent,用户可以直接使用。

image.png

目前我们只提供了内置的Google Search,但这是可以任意扩展的,可以通过安装新的Blocklet来获得,也可以自己实现一个 Agent来对接任何其他外部的搜索API。

定义处理过程#

这里使用到了大预言模型里的 Prompt,下面是我们的 Demo里prompt 的写法:

Use the following context as your learned knowledge, inside <context></context> XML tags.
<context>
{{ searchResult }} 
</context>
When answer to user:
- If you don't know, just say that you don't know.
- If you don't know when you are not sure, ask for clarification.
Avoid mentioning that you obtained the information from the context.
And answer according to the language of the user's question.

If there are obviously irrelevant items in the list of the context, ignore those.

When possible, categorize the answers as lists for easy reading.

Write a comprehensive report at least 3 paragraph and try the best to cover everything in the context.

可以看到 searchResult被作为prompt 里的一部分,这在运行的时候,Google 搜索的结果就被填充在这个位置。

这个Prompt 是非常简单直接的,你可以用自己习惯的语言来写这个prompt,可以把自己对LLM 的要求尽可能细致地提出。你可以自己尝试修改,然后体会这些Prompt 改动带来的变化。 这个过程会有助于你了解大预言模型是如何工作的。

定义输出#

如果说 AIGNE 里有些什么“魔法” 那么这些“魔法”全部在输出的部分定义里:

image.png

可以看到我们在每一个 AI Agent 的输出都支持很多种不同的变量,而且用户可以不断扩展这些变量。 任何这些输出变量都可以和我们的 Pages Kit所定义的页面结构模版(Layout)和部件模版(Component Template)绑定,从而渲染出各种需要的结果。

在Mockplexity 里我们仅仅使用了系统提供的最基础的几个模版,如simple chat 这个模版是一个类似交谈的界面,但是我们关掉了交谈中常见的用户名、头像等这些元素。 内容的输出,我们也把搜索结果按列表方式输出,而把内容按 Markdown方式输出。 这些组合形成了类似 Perplexity的界面。

image.png

您可以自己在 AIGNE Studio 里一个个查看这些输出变量的定义,这里是能形成丰富多彩的应用输出效果的关键,而且这里可以和Blocklet 来进行组合、扩展,形成千变万化的组合,因此可以用这种方法定义几乎任何应用需要的界面。

下面是 Mockplexity运行起来的效果,你可以自己修改调整体验这些改变会产生什么样的变化。

image.png

其他类似Perplexity的项目#

Perplexity 推出时确实给很多人一种耀眼的感觉,但很快大家意识到这只是一种不错的界面表现风格,因此有相当多的其他项目也采用类似的风格实现了与它相似的界面。

也有不少开源项目,展示了如何可以自己实现类似的效果,感兴趣的开发者可以搜索一下会发现很多类似的开源实现。

除了不同的实现,我们也看到一些产品采用类似的界面来完成特定的功能,例如这个 devv.ai 就是专注于解决开发者的问题的一个搜素服务,他采用和Perplexity类似的界面,但其信息来源主要是个软件开发相关的服务。

image.png

如何把这个Demo变成真正的产品#

我们这个10分钟做出来的Demo App虽然在功能类似,但在细节上还是有一些不足之处,例如用户体验、设计风格、功能完整性等方面与估值10亿美元的公司的旗舰作品相比还有一定的差距。

相信读者能理解这仅仅是一个Demo,是为了展示基本功能和潜力,但是以这个Demo为基础的话如何进一步的优化和完善,成为一个更加成熟的产品呢? 我这里有一些思路,可以作为抛砖引玉:

  • 支持更多的搜索后端,例如来自企业私有数据的搜索, 这是采用去中心化部署带来的最大优势。
  • 作为特定业务的搜索功能界面, 类似Perplexity的界面已经证明了其用户友好性,可以把这个AIGNE 产生的功能和自己的业务搜索结合。
  • 和其他的功能结合,例如可以把Mockplexity 搜索出来的内容保存到自己的笔记、Blog或者知识库里 (这个可以采用我们的 Discuss Kit Blocklet)形成一个研究笔记的知识系统。

更多的创新应用思路,还需要等你来探索。 一个非常关键的地方是,AIGNE 构建的应用都是在 ArcBlock平台基础上的去中心化应用,这和Perplexity这种SaaS服务类型在数据隐私、安全、私有部署等方面有更多优势。


2.0.175