檢索增強生成 (RAG) 開發和實驗的第一階段是準備階段。 在此階段中,您會為解決方案定義商務網域。 定義網域之後,您會收集檔、執行檔分析,以及收集與定義域相關的範例問題。 您可以平行執行這些步驟,因為它們相互關聯。 例如,檔分析可協助您判斷應該收集的測試檔和測試查詢。 您提出的問題必須由文件中的內容回答,而且文件必須回答相關問題。
本文是系列文章的一部分。 閱讀簡介。
判斷解決方案網域
此程式中的第一個步驟是清楚定義解決方案或使用案例的商務需求。 這些需求可協助您判斷解決方案應回答的問題種類,以及哪些源數據或文件可協助回答這些問題。 在後續階段中,解決方案定義域可協助您通知內嵌模型策略。
文件分析
檔分析的目標是收集檔集合的足夠資訊,以協助您瞭解:
檔的不同分類。 例如,您可能有產品規格、每季報告、汽車保險合約或健康保險合約。
不同類型的檔。 例如,您可能有 PDF、Markdown 檔案、HTML 檔案或 DOCX 檔案。
安全性條件約束。 例如,根據檔是否可公開存取,您可能需要驗證和授權才能存取檔。
文件的結構。 例如,文件的長度可能會有所不同。 或者,他們可能會有主題中斷、內容相關的影像或表格式數據。
下列各節說明這項資訊如何協助您選擇載入和區塊化策略。
文件分類
您必須瞭解不同的文件分類,以協助您判斷所需的測試檔數目。 分析的這個部分應該告訴您高階分類,例如保險或財務。 它也應該告訴您有關子類別,例如醫療保險檔或汽車保險檔。 您也想知道子類別化是否有不同的結構或內容。
目標是了解您擁有的所有不同檔變體。 然後,您可以判斷所需的測試檔數目和明細。 您不想在實驗中超過或低於代表特定文件分類。
文件類型
瞭解集合中的不同檔格式,可協助您判斷測試檔的數目和明細。 例如,如果您有每季報表的 PDF 和 Open XML 檔案類型,則需要針對每一個檔案類型測試檔。 瞭解您的檔類型也有助於瞭解載入和區塊化文件的技術需求。 這些技術需求包括可處理這些檔格式的特定連結庫。
安全限制
了解安全約束對於確定載入和分塊策略至關重要。 例如,您需要確定您的部分或全部文件是否需要身份驗證、授權或網路可見性。 如果文件位於安全周邊內,請確定您的程式代碼可以存取它們或實作程式,以安全地將文件復寫到處理程式碼的可存取位置。
文件有時會參考多媒體,例如對文件內容很重要的影像或音訊。 該媒體也可能受到與文件本身類似的存取控制。 如果該媒體需要驗證或網路視線,您必須確定您的程式代碼可以存取媒體,或您有具有存取權且可以復寫內容的處理程式。
如果您的工作負載要求不同的使用者只能存取不同的檔或檔區段,請確定您瞭解如何在區塊化解決方案中保留這些訪問許可權。
文件結構
您必須瞭解文件的結構,包括其版面配置和文件中的內容類型。 了解文件的結構和內容有助於您做出以下決定:
檔是否需要前置處理來清除雜訊、擷取媒體、重新格式化內容,或標註要忽略的專案
是否要忽略或排除檔中的內容
您想要擷取的檔哪些部分
您希望如何對文件進行分塊
您希望如何處理影像、表格、圖表和其他嵌入媒體
下列各節列出可用來協助您進行其中一些判斷的分類問題。
判斷您可以忽略的專案
某些結構元素可能不會為文件新增意義,並且可以在分塊時放心地忽略這些元素。 在某些情況下,這些元素可以新增寶貴的內容,並改善查詢與索引的相關性,但並非全部。 詢問下列有關一般檔功能的問題,以查看它們是否新增相關性或應該忽略。
該文件是否包含目錄?
是否有頁首或頁尾?
有版權或免責宣告嗎?
有腳註或尾註嗎?
有浮水印嗎?
有註釋或評論嗎?
判斷前置處理和區塊化策略
下列有關文件結構的問題可協助您決定是否需要前置處理檔,以便更輕鬆地處理檔。 它們也可協助您選擇區塊化策略。
是否有多欄數據或多欄段落? 您不想以與單欄內容相同的方式剖析多欄內容。
該文件的結構如何? 例如,HTML 檔案有時會使用需要區別於內嵌表格式數據的數據表。
有多少段? 段落有多長? 段落長度是否相似?
檔中有哪些語言、語言變體或方言?
該文件是否包含 Unicode 字元?
數字是如何格式化的? 它們是否包含逗號或小數點? 它們一致嗎?
檔的哪些部分是統一的,哪些部分不統一?
是否存在可以提取語意的標頭結構?
是否有項目符號或有意義的縮排?
判斷您的影像處理需求
了解檔中的影像可協助您選擇影像處理策略。 您需要知道您擁有的影像類型、其是否有足夠的解析度來處理,以及影像是否包含所有必要的資訊。 以下問題可協助您了解影像處理要求。
文件中是否包含影像?
影像的剖析度是多少?
影像中是否嵌入了文字?
是否存在不增加價值的抽象影像? 例如,圖示可能不會新增任何語意值。 新增圖示的描述可能會對您的解決方案造成損害,因為圖示通常與文件的內容無關。
影像與周圍文字之間的關聯性為何? 判斷影像是否具有獨立內容,或影像在傳遞至語言模型時應該使用的內容。 標題是周圍文字的範例,可能含有影像中未包含的寶貴內容。
是否有 RTF 文字表示法,例如影像的輔助功能描述?
判斷您的數據表、圖表和其他媒體處理需求
瞭解哪些資訊會封裝在數據表、圖表和其他媒體中,可協助您決定其處理方式。 下列問題可協助您了解數據表、圖表和其他媒體處理需求。
檔案是否有包含數字的圖表?
該文件是否包含表格?
數據表是否複雜,例如巢狀數據表或非複雜數據表?
表格有標題嗎?
數據表有多長? 長數據表可能需要在區塊中重複標頭。
是否有其他類型的內嵌媒體,例如視訊或音訊?
檔中是否有數學方程式或科學表示法?
收集有代表性的測試文件
在此步驟中,收集最能代表您在解決方案中使用的文件的檔。 文件必須解決已定義的使用案例,並回答您在問題收集平行階段中收集的問題。
考量
當您評估潛在的代表性測試檔時,請考慮下列區域:
本能: 檔必須符合交談式應用程式的商務需求。 例如,如果您建置聊天機器人來協助客戶執行銀行業務,則文件必須符合該需求。 例如,文件應該示範如何開啟或關閉銀行帳戶。 文件必須能夠解決您在平行步驟中收集的測試問題。 如果文件沒有與問題相關的資訊,您的解決方案就無法產生有效的回應。
表示法: 檔案應該代表您解決方案所使用的不同類型的檔。 例如,汽車保險檔包含與健康或人壽保險檔不同的資訊。 假設使用案例需要解決方案來支援這三種保險類型,但您只有汽車保險檔。 您的解決方案可能會對健康與人壽保險作業執行不佳。 每個變化至少應該有兩份檔。
實體檔品質: 檔必須是可用圖形。 例如,掃描的影像可能無法讓您擷取可使用的資訊。
檔內容品質: 文件必須具有高質量的內容。 它們不應該包含拼字錯誤或文法錯誤。 如果您為語言模型提供品質不佳的內容,則語言模型效能不佳。
若要成功收集測試檔,您應該 定性地自信地 測試檔完整且準確地代表您的特定網域。
測試文件指南
選擇實際文件與綜合檔。 實際文件必須經過清除程式,才能移除個人資料。
請考慮選擇性地使用綜合數據增強您的檔。 此程式可協助您確保檔涵蓋各種案例,包括預測的未來案例。 如果您必須使用綜合數據,請盡最大努力使其盡可能類似實際數據。
請確定檔可以解決您收集的問題。
每個檔案變體至少有兩份檔。
使用語言模型或其他工具來協助您評估文件的品質。
收集測試查詢
在此步驟中,您會收集用來評估區塊、搜尋解決方案和提示工程的測試查詢。 當您收集代表性檔時,請執行此步驟。 您應該收集查詢,並判斷代表性檔如何同時處理這些查詢。 藉由同時擁有範例查詢和處理這些查詢的範例檔部分,您可以在實驗不同的策略和方法時評估RAG解決方案的每個階段。
收集測試查詢輸出
此階段的輸出包含來自 收集代表性測試查詢 步驟的內容,以及 步驟收集代表性測試檔。 輸出是包含下列資料的集合:
查詢: 問題,代表合法用戶的潛在提示。
內容: 處理查詢之檔中所有實際文字的集合。 對於每個上下文,您應該包括頁面和實際文字。
答案: 查詢的有效回應。 回應可以是直接從文件的內容,或可能是從一或多個內容片段重繪。
建立綜合查詢
對於特定領域的主題專家 (SME) 來說,編制一個全面的使用案例問題清單往往具有挑戰性。 這項挑戰的其中一個解決方案是從您收集的代表測試檔產生綜合問題。 下列步驟說明從代表性檔產生綜合問題的實際方法:
將檔區塊化。 將文件細分成區塊。 請勿針對整體解決方案使用區塊化策略。 您可以使用這個單一步驟來產生綜合查詢。 如果檔數目合理,您可以手動進行區塊化。
產生每個區塊的查詢。 針對每個區塊,手動或使用語言模型產生查詢。 當您使用語言模型時,通常會從為每個區塊產生兩個查詢開始。 您也可以使用語言模型來建立答案。 以下範例顯示了為區塊產生問題和答案的提示。
Please read the following CONTEXT and generate two question and answer JSON objects in an array based on the CONTEXT provided. The questions should require deep reading comprehension, logical inference, deduction, and connecting ideas across the text. Avoid simplistic retrieval or pattern-matching questions. Instead, focus on questions that test the ability to reason about the text in complex ways, draw subtle conclusions, and combine multiple pieces of information to arrive at an answer. Ensure that the questions are relevant, specific, and cover the key points of the CONTEXT. Provide concise answers to each question, and directly quote the text from the provided context. Provide the array output in strict JSON format as shown in the output format. Ensure that the generated JSON is completely structurally correct, including proper nesting, comma placement, and quotation marks. There shouldn't be a comma after the last element in the array. Output format: [ { "question": "Question 1", "answer": "Answer 1" }, { "question": "Question 2", "answer": "Answer 2" } ] CONTEXT:
確認輸出。 確認問題與使用案例有關,且答案可解決問題。 SME 應該執行此驗證。
未解決的查詢
請務必收集檔未處理的查詢,以及它們所處理之查詢。 當您測試解決方案時,特別是當您測試語言模型時,您需要判斷解決方案應該如何回應其沒有足夠的內容來回答的查詢。 若要回應解決方案無法解決的查詢,解決方案可以:
指出它不知道答案。
指出它不知道答案並提供使用者可能找到詳細信息的連結。
收集嵌入式媒體的測試查詢
與文字一樣,您應該收集一組不同的問題,其中涉及使用嵌入式媒體產生高度相關的答案。 如果您有圖形、數據表或螢幕快照的影像,請確定您有涵蓋所有使用案例的問題。 如果您在檔分析步驟的 影像部分中判斷 影像之前或之後的文字必須回答一些問題,請確定您在測試查詢中有這些問題。
收集測試查詢指導
確定是否有系統包含您可以利用的真實客戶問題 例如,如果您建置聊天機器人來回答客戶問題,您或許可以從技術支援中心、常見問題或票證系統使用客戶問題。
使用案例的客戶或 SME 應作為品質閘道,以判斷所收集的文件、相關聯的測試查詢,以及文件的查詢答案是否完整、具有代表性且正確。
定期檢閱問題和解答的本文,以確保它們能繼續準確地反映源文檔。