Kapa.ai Image Indexing for RAG
在攝取時進行圖像索引優於查詢時的多模態 RAG
Kapa.ai 已確定,在索引階段對圖像進行一次性描述——而不是在每次查詢時將原始圖像傳遞給視覺模型——是將視覺數據整合到 RAG 流程中最具擴展性且最具成本效益的方式。與僅限文本的系統相比,這種方法將每次查詢的開銷降低了 1% 到 6%,同時在統計學上提高了回答品質 (p < 0.05)。
技術文檔中圖像的角色
技術文檔中的圖像通常分為兩類,兩者都為終端用戶提供關鍵價值:
- 說明性圖像: 這些圖像用於澄清現有文本(例如,顯示設定圖示位置的螢幕截圖)。它們使指令更容易執行。
- 承載數據的圖像: 這些圖像包含文本中未發現的獨特數據(例如,佈線圖、規格表或顏色可用性矩陣)。在這些情況下,圖像就是答案的主要來源。
當圖像上下文可用時,LLM 評審員在多個模型和客戶專案中一致地更偏好產生的答案,因為這允許用戶進行自助服務,而不是提交支援工單。
為何查詢時的多模態處理無法規模化
將檢索到的圖像直接傳遞給具備視覺能力的模型(例如 GPT 5.1 或 Claude 4.6 Sonnet)會造成三個主要的結構性瓶頸:
- 高昂的經濟成本: 原始圖像會顯著增加每次查詢的成本。在 Kapa.ai 的測試中,圖像在 GPT 上增加了 27% 的成本,在 Claude 上增加了 51%,這主要是由於高昂的 Token 化成本(GPT 每張圖像約為 716 個 tokens,Claude 約為 975 個 tokens)。
- 負載限制: 高密度的文檔通常在每次查詢時檢索到 20-30 張圖像。由於 Claude 的負載限制為 30 MB,OpenAI 的負載限制為 50 MB,系統很快就會達到上限,迫使進行激進的圖像限制,從而移除有用的上下文。
- 檢索效率低下: CLIP 風格的多模態嵌入(embeddings)通常無法捕捉技術圖表和表格所需的細粒度細節。此外,簡短的技術查詢通常缺乏足夠的訊號來有效地與圖像向量進行匹配。
「一次性描述」架構
為了解决這些問題,Kapa.ai 實施了一種在攝取時將圖像轉換為文本的工作流程:
- 索引階段: 視覺語言模型 (VLM) 為每張圖像生成詳細的說明文字或轉錄內容。對於承載數據的圖表,VLM 會轉錄實際的數值和標籤。
- 儲存: 這些說明文字作為獨立的文本塊(chunks)儲存在知識庫中。
- 查詢階段: 檢索器將說明文字視為普通文本。如果說明文字具有相關性,模型會使用文本描述來回答查詢,並引用原始圖像的 URL。
這種架構確保了計算成本高昂的「觀察」圖像的過程僅發生一次,將視覺數據轉化為可檢索、有根據的文本。
生產環境實施策略
圖像過濾與分類
為了避免為「垃圾」圖像(標誌、橫幅、頭像)生成說明文字的成本,Kapa.ai 使用兩步過濾法:
- 啟發式方法: 根據不支援的格式、過小的尺寸或極端的長寬比來捨棄圖像。
- 零樣本分類 (Zero-Shot Classification): 基於多模態嵌入的分類器會移除剩餘的雜訊。雖然這在判斷明確的圖像上達到了 96.8% 的準確度,但模糊的圖像(例如,可能是橫幅或教學步驟的螢幕截圖)會被保留,以避免丟失潛在資訊。
優化說明文字品質
說明文字的有效性更多地取決於上下文,而非模型大小。Kapa.ai 發現,為 VLM 提供圖像前後緊鄰的段落,可以顯顯著提高說明文字的精確度與實用性。此外,較小的模型(例如 GPT 5.4 mini)產生的說明文字與昂貴得多的模型幾乎無異,使其成為大規模索引的效率之選。
儲存:獨立塊 vs. 行內文本
將說明文字作為獨立塊儲存,優於在文檔內直接替換 alt-text:
- 行內儲存: 會使包含圖像的每個文本塊變得臃腫,無論圖像是否相關,都會增加每次查詢的成本。
- 獨立儲存: 只有當檢索器認為說明文字相關時,說明文字才會進入 LLM 上下文。這在基於 GPT 的專案中,將每次查詢的成本從 19% (行內) 降低到了 6% (獨立儲存)。
性能結果
在三個使用 GPT 5.1 和 Claude 4.6 Sonnet 的客戶專案中進行測試,結果如下:
| 指標 | 僅限文本基準線 | 使用圖像說明文字 |
|---|---|---|
| 答案中引用的圖像數量 | 0% | 10% 到 64% |
| 回答品質 (LLM 評審員) | 基準線 | 顯著提升 (p < 0.05) |
| 每次查詢成本 | 基準線 | +1% 到 6% |
| 延遲 (TTFT) | 次秒級增加 | 次秒級增加 |
| 模型不確定性 | 基準線 | 未改變或略微降低 |
| 索引成本 | 不適用 | 一次性成本 |
社群觀點
業界從業者指出,這種方法反映了傳統媒體攝取中使用的「積極處理 (eager processing)」概念(例如,預先生成縮圖)。然而,有些人在於 LLM 的非確定性本來性質:
"New models will reveal new information about your data... A new model might pick that up while an old one doesn't. These context adjustments might sometimes require you to rerun your LLM processing."
其他開發者也證實,手動版本的此過程——為個人知識庫中的重要圖像生成文本描述——在 Agent 的結果中也產生了類似的改進。