RAG 區塊強化階段
將檔分成區塊集合之後,下一個步驟是藉由清除檔並使用元數據來擴充每個區塊。 清理資料塊可讓您在向量搜尋中達成更好的語意搜尋查詢匹配。 加入元數據使您能支持不僅限於語意搜尋的區塊搜尋。 清除和擴增牽涉到擴充區塊的架構。
本文討論各種擴充區塊的方式,包括您可以對區塊執行的一些常見清除作業,以改善向量比較。 它還描述了一些可新增至區塊以增強搜尋索引的常見元數據欄位。
下列程式代碼範例顯示使用數據擴充的區塊。
清理數據
將數據區塊化可協助您的工作負載尋找最相關的區塊,通常是透過向量化這些區塊,並將其儲存在向量資料庫中。 優化向量搜尋只會傳回資料庫中具有最接近查詢語意相符的數據列。 清理數據的目標是通過消除與文本語義不重要的潛在差異,以支持匹配的接近性。 以下是一些常見的清潔程式。
注意
您應該傳回原始、未清理的區塊做為查詢結果,因此您應該新增額外的欄位來儲存已清除和向量化的數據。
實作降低策略。 將字母小寫允許句子開頭大寫的單字與句中對應的小寫單字相匹配。 內嵌通常會區分大小寫,因此「Cheetah」和「cheetah」會導致相同邏輯字組的不同向量。 例如,對於內嵌查詢「獵豹或美洲獅更快?」,內嵌的語句「獵豹比美洲獅快」比「獵豹比美洲獅快。」更接近。有些小寫策略會把所有單字,包含專有名詞,都小寫,而其他策略只會小寫句子的第一個單字。
拿掉停用字詞。 停用字詞是 「a」、“an” 和 「the」 等字。您可以移除停用字詞,以減少所產生向量的維度。 如果您移除前一個範例中的停用詞,則「一隻獵豹比美洲獅快」和「這隻獵豹比那隻美洲獅快」的向量等於「獵豹 比 美洲獅 快」。不過,請務必瞭解某些停用詞具有語意。 例如,「不」可能被視為停用詞,但它具有重要的意義。 您需要測試來判斷移除停用字詞的效果。
修正拼字錯誤。 拼錯的字在嵌入模型中與正確拼寫的字不匹配。 例如,「cheatah」在嵌入中與「獵豹」不同。 您應該修正拼字錯誤以解決此問題。
拿掉 Unicode 字元。 拿掉 Unicode 字元可以減少區塊中的雜訊,並減少維度。 與停用字詞一樣,某些 Unicode 字元可能包含相關資訊。 請務必進行測試,以瞭解移除 Unicode 字元的影響。
正規化文字。 根據擴充縮寫、將數字轉換成單字,以及擴大收縮等標準將文字正規化,例如,將 “I'm” 擴充為“我是”,有助於提高向量搜尋的效能。
擴增區塊
針對向量化區塊的語意搜尋適用於某些類型的查詢,但不適用於其他查詢。 視您需要支持的查詢類型而定,您可能需要使用其他資訊來增強區塊。 其他元數據欄位全都儲存在與內嵌相同的數據列中,並可用於搜尋解決方案中做為篩選條件或搜尋的一部分。
下圖顯示完整擴充內容的 JSON,並描述搜尋平臺如何使用元數據。
您需要新增的元數據行取決於您的問題網域,包括您擁有的數據類型,以及您想要支持的查詢類型。 您需要分析您嘗試達成的用戶體驗、可用數據和結果品質。 您可以從該處判斷哪些元數據可協助您解決工作負載的需求。
以下是一些常見的元數據欄位,以及原始區塊文字、其可能用途的一些指引,以及通常用來產生元數據內容的工具或技術。
標識碼。 標識碼可唯一識別區塊。 在處理過程中,唯一標識符非常有用,可用來判斷存儲中是否已經存在某個區塊。 識別碼可以是某些索引鍵欄位的哈希。 工具:雜湊函式庫。
標題。 標題是區塊的實用傳回值。 它會提供區塊中內容的快速摘要。 摘要對於使用索引搜尋進行查詢也很有用,因為它可以包含用於比對的關鍵詞。 工具:語言模型。
總結。 摘要與標題類似,因為它是常見的傳回值,而且可用於索引搜尋。 摘要通常比標題長。 工具:語言模型。
區塊的重新措辭。 將區塊改寫作為向量搜尋字段的一部分是很有幫助的,因為改寫能夠捕捉語言的變化,例如同義詞和改述。 工具:語言模型。
關鍵字。 關鍵字搜索適用於非語境數據、尋找精確匹配,以及當特定字詞或數值很重要時。 例如,汽車製造商可能會有其每一個型號多個年份的評論或效能數據。 「2009 年產品 X 的評論」語意類似「2010 年的產品 X 評論」和「2009 年產品 Y 的評論」。在此情況下,比對產品和年份的關鍵詞會更有效率。 工具:語言模型、RAKE、KeyBERT、multi-rake。
實體。 實體是特定資訊片段,例如人員、組織和位置。 如同關鍵詞,實體適用於精確匹配搜尋,或在特定實體很重要的情況下使用。 工具:spaCy、斯坦福命名實體辨識器(斯坦福 NER)、scikit-learn、自然語言工具組(NLTK)。
已清理的區塊文字。 清理後區塊的文字。 工具:語言模型。
區塊可以回答的問題。 有時候,內嵌的查詢與內嵌的區塊不完全匹配。 例如,查詢可能相對於區塊大小而言很小。 最好是編寫區塊可以回答的查詢,並在用戶的實際查詢與預先制定的查詢之間執行向量搜尋。 工具:語言模型。
來源。 區塊的來源可以作為查詢結果。 返回來源可讓查詢者引用原始來源。
語言。 區塊的語言可作為查詢中的篩選。
擴增的成本
使用一些語言模型來擴增區塊可能會很昂貴。 您需要計算每個增益(或強化)的成本,然後乘以一段時間內的估計區塊數量。 您應該使用這項資訊,以及擴充字段的測試,以判斷最佳的商務決策。
下一步
相關資源
- 在 Azure AI 搜尋 中
AI 擴充 - Azure AI 搜尋 中的
技能集概念