建立 LLM 應用程式:利用 Azure 認知服務的向量搜尋功能

王林
發布: 2023-08-23 22:49:06
轉載
809 人瀏覽過

作者 | Simon Bisson

規劃 | Ethan

Microsoft 的認知搜尋 API 現在提供向量搜尋即服務,可與 Azure OpenAI 等中的大型語言模型一起使用。

語意核心、TypeChat和LangChain等工具使得圍繞Azure OpenAI等生成式AI技術建立應用程式成為可能。這是因為它們允許對底層大語言模型(LLM)施加約束,將其用作構建和運行自然語言介面的工具

從本質上講,LLM 是用於導航語義空間的工具,其中深度神經網路可以預測從初始提示開始的標記鏈中的下一個音節。如果提示是開放式的,LLM 可能會超出其輸入範圍,產生看似合理但實際上完全是無稽之談的內容。

就像大家傾向於信任搜尋引擎的輸出一樣,我們也傾向於信任LLM的輸出,因為我們將它們視為熟悉技術的另一個面向。但是,使用來自維基百科、Stack Overflow 和Reddit 等網站的可信數據來訓練大型語言模型並不能傳達對內容的理解;它只是賦予生成文本的能力,該文本遵循與這些來源中的文本相同的模式。有時輸出可能是正確的,但有時卻是錯誤的。

我們如何避免大型語言模型的錯誤和無意義的輸出,並確保我們的使用者獲得準確且合理的查詢答案?

1、限制用語意記憶限制大模型

我們需要做的是限制LLM,確保它只從更小的資料集產生文字。這就是Microsoft基於LLM的新開發堆疊的用武之地。它提供了必要的工具來控制模型並防止其產生錯誤

你可以透過使用TypeChat 之類的工具來強制使用特定的輸出格式,或者使用Semantic Kernel 之類的編排管道來處理其他可信資訊來源,從而有效地將模型「root」在已知的語意空間中,從而約束LLM。在這裡,LLM 可以做它擅長的事情,總結構建的提示並根據該提示生成文本,而不會超限(或至少顯著減少發生超限的可能性)。

微軟所說的「語意記憶」是最後一種方法的基礎。語意記憶使用向量搜尋來提供提示,可用於提供 LLM 的事實輸出。向量資料庫管理初始提示的上下文,向量搜尋會尋找與初始使用者查詢相符的儲存數據,LLM 根據該​​數據產生文字。在Bing Chat中看到這種方法的實際應用,它使用Bing的本機向量搜尋工具來建立從其搜尋資料庫中取得的答案

語義記憶使得向量資料庫和向量搜尋成為提供基於LLM的應用程式的手段。您可以選擇使用數量不斷增加的開源向量資料庫之一,或將向量索引新增至您熟悉的SQL和NoSQL資料庫。一款看起來特別有用的新產品擴展了Azure認知搜索,為資料添加了向量索引,並提供了用於查詢該索引的新API

2、將向量索引添加到Azure 認知搜尋

Azure 認知搜尋是建立在Microsoft自己的搜尋工具基礎上的。它提供了熟悉的Lucene查詢和自己的自然語言查詢工具的組合。 Azure 認知搜尋是一個軟體即服務平台,可以託管私有數據,並使用認知服務API來存取內容。最近,Microsoft還添加了對構建和使用向量索引的支持,這使得你可以使用相似性搜尋對數據中的相關結果進行排名,並在基於AI的應用程式中使用它們。這使得Azure 認知搜尋成為使用Semantic Kernel和Azure OpenAI構建的Azure託管LLM應用程式的理想工具,並且還提供了用於C#和Python的認知搜尋的語義內核插件

#與其他Azure與服務一樣,Azure 認知搜尋是一項託管服務,可與其他Azure 服務搭配使用。它允許你在各種 Azure 儲存服務中進行索引和搜索,託管文字、圖像、音訊和視訊。資料儲存在多個區域,提供高可用性並減少延遲和回應時間。此外,對於企業應用程序,你可以使用Microsoft Entra ID(Azure Active Directory 的新名稱)來控制對私有資料的存取

3、為內容生成和儲存嵌入向量

需要注意的是,Azure 認知搜尋是一項「自帶嵌入向量」服務。認知搜尋不會為您產生所需的向量嵌入,因此您需要使用 Azure OpenAI 或 OpenAI embedding API 來為內容建立嵌入。這可能需要將大文件分塊處理,以確保您在服務的令牌限制內。在需要時,請準備建立新表來索引向量資料

在 Azure 認知搜尋中,向量搜尋使用最近鄰模型返回與原始查詢相似的文檔,數量由使用者選擇。這個過程透過使用原始查詢的向量嵌入來呼叫向量索引,並從資料庫中傳回相似的向量和索引內容,以供 LLM 提示準備使用

微軟使用這種向量儲存作為Azure機器學習的檢索增強生成(RAG)設計模式的一部分,並與其提示流工具配合使用。 RAG利用認知搜尋中的向量索引來建構構成LLM提示基礎的脈絡。這為您提供了一種建立和使用向量索引的低程式碼方法,例如設定查詢傳回的相似文件的數量

#4、Azure 認知搜尋中的向量搜尋入門

使用Azure 認知搜尋進行向量查詢非常簡單。首先在同一區域中為 Azure OpenAI 和認知搜尋建立資源。這將允許你以最小的延遲加載帶有嵌入的搜尋索引。你需要呼叫 Azure OpenAI API 和認知搜尋 API 來載入索引,因此最好透過新增管理重試的程式碼來確保程式碼可以回應服務中任何可能的速率限制為你。當你使用服務 API 時,你應該使用非同步呼叫來產生嵌入和載入索引。

向量作為向量欄位儲存在搜尋索引中,其中向量是具有維度的浮點數。這些向量透過分層可導航小世界鄰近圖進行映射,該圖將向量分類到相似向量的鄰域中,從而加快了搜尋向量索引的實際過程。

在定義了向量搜尋的索引架構之後,你可以將資料載入到認知搜尋的索引中。需要注意的是,數據可能與多個向量相關聯。舉個例子,如果你使用認知搜尋來託管公司文檔,你可能會有一個用於關鍵文檔元資料術語和文檔內容的單獨向量。資料集必須以JSON文件的形式儲存,這樣可以簡化使用結果來組合提示上下文的過程。索引不需要包含來源文檔,因為它支援使用最常見的Azure儲存選項

在執行查詢之前,你需要先使用查詢正文呼叫你選擇的嵌入模型。這樣會回傳一個多維向量,你可以用它來搜尋你選擇的索引。當呼叫向量搜尋API時,請指定目標向量索引、所需的匹配項數量以及索引中相關的文字欄位。選擇適當的相似性度量對查詢非常有幫助,其中最常用的是餘弦度量

5、超越簡單的文本向量

Azure 認知搜尋的向量功能不僅僅是匹配文本。認知搜尋能夠與多語言嵌入配合使用,以支援跨多種語言的文件搜尋。你也可以使用更複雜的 API。例如,你可以在混合搜尋中混合使用 Bing 語義搜尋工具,以提供更準確的結果,從而提高 LLM 支援的應用程式的輸出品質。

微軟正在迅速將其用於建立自己的基於GPT-4的Bing搜尋引擎以及各種Copilot的工具和技術產品化。 Semantic Kernel和Azure AI Studio的提示流等編排引擎是Microsoft使用大型語言模型的核心方法。現在這些基礎已經奠定,我們看到該公司推出了更多必要的支援技術。向量搜尋和向量索引是提供準確回應的關鍵。透過建立熟悉的工具來提供這些服務,微軟將幫助我們將成本和學習曲線降至最低

以上是建立 LLM 應用程式:利用 Azure 認知服務的向量搜尋功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:51cto.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!