基本的开源AI搜索引擎,以困惑性为模型。如果您不熟悉AI驱动的提问平台,他们使用诸如Chatgpt之类的大语言模型来回答您的问题,但是在ChatGpt上进行了改进,因为它可以提取准确,实时的搜索结果来补充答案(因此没有“知识截止”)。并在答案本身中列出了引用,从而建立了信心,它不会幻觉,并允许您进一步研究主题。
search.php (寻找“ [[填写我]”)诸如Chatgpt之类的LLM的主要挑战是他们有知识截止(偶尔会倾向于幻觉)。这是因为他们在特定日期之前对数据进行了培训(例如2021年9月)。因此,如果您想回答最新问题,或者只想详细研究一个主题,则需要使用相关资源来增强答案。该技术被称为抹布(检索增强产生)。在我们的情况下,我们可以简单地提供来自Google或Bing等搜索引擎的LLM最新信息。
要自己构建这个,您需要先注册Bing,Google(通过Serper),Brave或其他人的API密钥。 Bing,Brave and Serper都提供免费使用。
在search.php中,将您的API密钥放在适当的位置(寻找“ [[填写我]”)。在此示例中,我的代码既适合Brave and Google,又可以通过Serper进行代码。
在这里,您需要从LLM提供商注册API密钥。现在有很多提供商可供选择。例如,有OpenAI,Anthropic,Anyscale,Groq,Cloudflare,困惑,Lepton或AWS,Azure或Google Cloud等大型玩家。我已经成功地使用了其中的许多,它们提供了当前和流行的封闭和开源模型的一部分。每个模型都有独特的优势,不同的成本和不同的速度。例如,GPT-4非常准确,但昂贵且缓慢。如有疑问,我建议您使用Openai的Chatgpt-3.5-Turbo。它足够好,足够便宜,并且足够快,可以对此进行测试。
幸运的是,这些LLM服务提供商中的大多数都与OpenAI的API格式兼容,因此切换到另一个提供商 /模型只是最小的工作(或者只要求聊天机器人编写代码!)。
在search.php中,将您的API键放在适当的位置(寻找“ [填写我的]”)。在此示例中,我正在使用OpenAI(用于Chatgpt-3.5-Turbo / GPT-4)和Groq(用于Mixtral-8B7B)。因此,为了使您的工作最少,只需为其中一个或两个即可获取钥匙。
当您想向LLM提出问题时,您可以提供许多其他上下文。每个型号都有其独特的限制,其中一些非常大。对于GPT-4-Turbo,您可以通过您的问题传递第一本Harry Potter的书。 Google的超级强大Gemini 1.5可以支持上下文大小超过一百万个令牌。这足以传递《哈利·波特》系列的全部!
幸运的是,沿8-10个搜索结果的片段进行的片段要小得多,从而使您可以更快地使用诸如GPT-3.5-Turbo或Mistral-7B之类的更快(且便宜得多)的型号。
根据我的经验,传递用户问题,自定义提示消息和搜索结果片段通常不到1K令牌。即使是最基本的模型的限制,这也是如此,因此这应该没有问题。
search.php有我一直在和您一起玩的示例提示。 Lepton AI的人们的帽子提示,他开了一个类似的项目,这帮助我完善了这个提示。
困惑性的好特征之一是他们如何提出后续问题。幸运的是,这很容易复制。
为此,您可以第二次呼叫LLM(并行)提出相关问题。而且,不要忘记在上下文中再次传递这些引用。
或者,您可以尝试构建提示,以便LLM回答问题并提出相关问题。这样可以节省API调用和一些令牌,但是让这些LLM始终以一致且可重复的格式回答有点挑战。
为了使其成为一个完整的例子,我们需要一个可用的UI。我将UI保持尽可能简单,所有内容都在index.html中。我正在使用Bootstrap,jQuery和一些基本的CSS / JavaScript,Markdown和JS语法荧光笔来实现这一目标。
为了改善体验,UI执行以下操作:
要探索一个有效的示例,请查看https://yaddleai.com。尽管我添加了与获取图像并行的第二个搜索调用,但这主要是相同的代码,但我编写了一个单独的页面来获取最新新闻,并进行了一些其他较小的改进。