共用方式為


RAG 區塊強化階段

將檔分成區塊集合之後,下一個步驟是藉由清除檔並使用元數據來擴充每個區塊。 清理資料塊可讓您在向量搜尋中達成更好的語意搜尋查詢匹配。 加入元數據使您能支持不僅限於語意搜尋的區塊搜尋。 清除和擴增牽涉到擴充區塊的架構。

本文討論各種擴充區塊的方式,包括您可以對區塊執行的一些常見清除作業,以改善向量比較。 它還描述了一些可新增至區塊以增強搜尋索引的常見元數據欄位。

本文是一系列文章的一部分。 以下是 簡介。

下列程式代碼範例顯示使用數據擴充的區塊。

顯示 JSON 記錄的圖表。正在擴充單一欄位。

清理數據

將數據區塊化可協助您的工作負載尋找最相關的區塊,通常是透過向量化這些區塊,並將其儲存在向量資料庫中。 優化向量搜尋只會傳回資料庫中具有最接近查詢語意相符的數據列。 清理數據的目標是通過消除與文本語義不重要的潛在差異,以支持匹配的接近性。 以下是一些常見的清潔程式。

注意

您應該傳回原始、未清理的區塊做為查詢結果,因此您應該新增額外的欄位來儲存已清除和向量化的數據。

  • 實作降低策略。 將字母小寫允許句子開頭大寫的單字與句中對應的小寫單字相匹配。 內嵌通常會區分大小寫,因此「Cheetah」和「cheetah」會導致相同邏輯字組的不同向量。 例如,對於內嵌查詢「獵豹或美洲獅更快?」,內嵌的語句「獵豹比美洲獅快」比「獵豹比美洲獅快。」更接近。有些小寫策略會把所有單字,包含專有名詞,都小寫,而其他策略只會小寫句子的第一個單字。

  • 拿掉停用字詞。 停用字詞是 「a」、“an” 和 「the」 等字。您可以移除停用字詞,以減少所產生向量的維度。 如果您移除前一個範例中的停用詞,則「一隻獵豹比美洲獅快」和「這隻獵豹比那隻美洲獅快」的向量等於「獵豹 比 美洲獅 快」。不過,請務必瞭解某些停用詞具有語意。 例如,「不」可能被視為停用詞,但它具有重要的意義。 您需要測試來判斷移除停用字詞的效果。

  • 修正拼字錯誤。 拼錯的字在嵌入模型中與正確拼寫的字不匹配。 例如,「cheatah」在嵌入中與「獵豹」不同。 您應該修正拼字錯誤以解決此問題。

  • 拿掉 Unicode 字元。 拿掉 Unicode 字元可以減少區塊中的雜訊,並減少維度。 與停用字詞一樣,某些 Unicode 字元可能包含相關資訊。 請務必進行測試,以瞭解移除 Unicode 字元的影響。

  • 正規化文字。 根據擴充縮寫、將數字轉換成單字,以及擴大收縮等標準將文字正規化,例如,將 “I'm” 擴充為“我是”,有助於提高向量搜尋的效能。

擴增區塊

針對向量化區塊的語意搜尋適用於某些類型的查詢,但不適用於其他查詢。 視您需要支持的查詢類型而定,您可能需要使用其他資訊來增強區塊。 其他元數據欄位全都儲存在與內嵌相同的數據列中,並可用於搜尋解決方案中做為篩選條件或搜尋的一部分。

下圖顯示完整擴充內容的 JSON,並描述搜尋平臺如何使用元數據。

圖表,顯示完整擴充內容的 JSON,以及搜尋平臺如何使用元數據。

您需要新增的元數據行取決於您的問題網域,包括您擁有的數據類型,以及您想要支持的查詢類型。 您需要分析您嘗試達成的用戶體驗、可用數據和結果品質。 您可以從該處判斷哪些元數據可協助您解決工作負載的需求。

以下是一些常見的元數據欄位,以及原始區塊文字、其可能用途的一些指引,以及通常用來產生元數據內容的工具或技術。

  • 標識碼。 標識碼可唯一識別區塊。 在處理過程中,唯一標識符非常有用,可用來判斷存儲中是否已經存在某個區塊。 識別碼可以是某些索引鍵欄位的哈希。 工具:雜湊函式庫。

  • 標題。 標題是區塊的實用傳回值。 它會提供區塊中內容的快速摘要。 摘要對於使用索引搜尋進行查詢也很有用,因為它可以包含用於比對的關鍵詞。 工具:語言模型。

  • 總結。 摘要與標題類似,因為它是常見的傳回值,而且可用於索引搜尋。 摘要通常比標題長。 工具:語言模型。

  • 區塊的重新措辭。 將區塊改寫作為向量搜尋字段的一部分是很有幫助的,因為改寫能夠捕捉語言的變化,例如同義詞和改述。 工具:語言模型。

  • 關鍵字。 關鍵字搜索適用於非語境數據、尋找精確匹配,以及當特定字詞或數值很重要時。 例如,汽車製造商可能會有其每一個型號多個年份的評論或效能數據。 「2009 年產品 X 的評論」語意類似「2010 年的產品 X 評論」和「2009 年產品 Y 的評論」。在此情況下,比對產品和年份的關鍵詞會更有效率。 工具:語言模型、RAKE、KeyBERT、multi-rake。

  • 實體。 實體是特定資訊片段,例如人員、組織和位置。 如同關鍵詞,實體適用於精確匹配搜尋,或在特定實體很重要的情況下使用。 工具:spaCy、斯坦福命名實體辨識器(斯坦福 NER)、scikit-learn、自然語言工具組(NLTK)。

  • 已清理的區塊文字。 清理後區塊的文字。 工具:語言模型。

  • 區塊可以回答的問題。 有時候,內嵌的查詢與內嵌的區塊不完全匹配。 例如,查詢可能相對於區塊大小而言很小。 最好是編寫區塊可以回答的查詢,並在用戶的實際查詢與預先制定的查詢之間執行向量搜尋。 工具:語言模型。

  • 來源。 區塊的來源可以作為查詢結果。 返回來源可讓查詢者引用原始來源。

  • 語言。 區塊的語言可作為查詢中的篩選。

擴增的成本

使用一些語言模型來擴增區塊可能會很昂貴。 您需要計算每個增益(或強化)的成本,然後乘以一段時間內的估計區塊數量。 您應該使用這項資訊,以及擴充字段的測試,以判斷最佳的商務決策。

下一步

  • 在 Azure AI 搜尋 中 AI 擴充
  • Azure AI 搜尋 中的 技能集概念