GitHub Repo
LangChain 社群回報切塊定位缺陷,重複短句可能讓 RAG 引用指向錯誤位置
10 月 10 日的 LangChain 社群回報指出,啟用來源位置中繼資料後,重複短句可能被標成前一段的位置,且不會拋出例外。案例涵蓋正式套件與開發分支,但修正仍停留在討論階段。

LangChain 社群於 10 月 10 日提出一項文件切塊定位回報:RecursiveCharacterTextSplitter 啟用 add_start_index=True 時,若原文包含重複短句,後面的切塊可能取得前一處的字元位置。回報者表示,問題可在 langchain-text-splitters 1.1.3 與當時的 master 重現;截至查核時,議題仍開啟,尚未連結修補分支或 PR。社群回報
官方 API 將 add_start_index 定義為把切塊起點加入中繼資料的選項,預設關閉;chunk_overlap 則控制相鄰切塊的重疊字元數。這些位置資訊讓應用能把檢索片段對應回原文,因此除了片段內容,位置本身也是文件處理流程需要驗證的輸出。官方 API 文件
最小案例設定切塊上限為 30、重疊為 20,原文連續出現兩次相同短句。預期三段起點為 0、22、44,實際卻得到 0、0、44,過程沒有例外。回報將原因指向切塊完成後的字串搜尋:程式以「上一段起點+上一段長度-重疊量」估算搜尋起點,再用 str.find 找回位置;短片段可能讓搜尋範圍退回先前內容,再次命中舊副本。重現與原因分析
對 RAG 工程而言,這可能造成引用反白、原文跳轉或鄰近段落擷取指向錯誤區域;這是依定位欄位用途推導的風險,回報未量測模型回答品質。片段文字相同,也意味著單純比對內容未必能抓出錯位。
回報者建議在切分與合併過程保留偏移量,避免事後搜尋;也指出強制起點遞增並不安全,因為不同切塊可能合法地從同一位置開始。團隊可先加入重複短句、空白清理與重疊邊界案例,核對每段在原文中的實際位置。後續應追蹤上游回歸測試與發布版本,再評估既有索引是否需要重建;目前仍缺維護者確認及完整影響範圍。修正討論