作者 | Simon Bisson
Microsoft 的認知搜索 API 現在提供矢量搜索即服務,可與 Azure OpenAI 等中的大型語言模型一起使用。
Semantic Kernel、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 提示中使用。
Microsoft 使用這樣的矢量存儲作為 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 使用大型語言模型的方法的核心。現在這些基礎已經奠定,我們看到該公司推出了更多必要的支持技術。矢量搜索和矢量索引是提供準確響應的關鍵。通過構建熟悉的工具來提供這些服務,微軟將幫助我們將成本和學習曲線降至最低。
文章內容僅供閱讀,不構成投資建議,請謹慎對待。投資者據此操作,風險自擔。
海報生成中...
海藝AI的模型系統在國際市場上廣受好評,目前站內累計模型數超過80萬個,涵蓋寫實、二次元、插畫、設計、攝影、風格化圖像等多類型應用場景,基本覆蓋所有主流創作風格。
IDC今日發布的《全球智能家居清潔機器人設備市場季度跟蹤報告,2025年第二季度》顯示,上半年全球智能家居清潔機器人市場出貨1,2萬臺,同比增長33%,顯示出品類強勁的市場需求。