基本的開源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。儘管我添加了與獲取圖像並行的第二個搜索調用,但這主要是相同的代碼,但我編寫了一個單獨的頁面來獲取最新新聞,並進行了一些其他較小的改進。