切分策略(Chunking Strategy)
將文件切分為較小片段對於提升檢索精度和避免 LLMs 長度限制問題
- Token-level 切分:
- 以字元或詞彙為單位進行切分。
- 優點:實現簡單。
- 缺點:可能會割裂句子,降低檢索質量。
- Sentence-level 切分:
- 以句子為單位進行切分。
- 優點:能較好地平衡文本語義完整性與操作簡單性。
- 缺點:可能無法捕捉更高層次的語義結構。
- Semantic-level 切分:
- 利用 LLMs 根據語義結構自動判斷切分點。
- 優點:能保留上下文語義,避免語意破壞。
- 缺點:計算成本高,切分過程耗時。
切分粒度的權衡(Trade-offs in Chunking Granularity)
- 較大片段(Larger Chunks):
- 優點:提供更多上下文,有助於提升文本理解和生成效果,提高匹配的精度。
- 缺點:處理時間更長,增加計算負擔,模型誤生成非檢索文本中的信息。
- 較小片段(Smaller Chunks):
- 優點:提升檢索的召回率,處理速度更快,但可能會失去關鍵背景信息,影響回應的相關性。
- 缺點:可能缺乏足夠的上下文,導致理解和生成質量下降,降低回應的真實性。
最佳片段大小的權衡(Finding the Optimal Chunk Size)
- 真實性(Faithfulness):
- 衡量模型生成的回應是否符合檢索到的文本內容,避免產生幻覺(hallucination)
- 相關性(Relevancy)
- 衡量檢索到的文本和生成的回應是否與查詢匹配
切分技術(Chunking Techniques)
- 小到大切分(Small-to-Big Chunking):
- 使用較小的片段進行查詢匹配,再返回包含這些小片段的較大片段,提供更多上下文信息。
- 平衡了召回率和上下文完整性,有助於提高檢索精度。
- 滑動窗口(Sliding Window):
- 利用重疊片段進行切分,確保每個片段之間有部分重疊(例如,重疊 20 個 token)。
- 保持上下文連續性,避免關鍵信息因切分而丟失。