Kernel Memory 入门系列:文档预处理
Kernel Memory 入門系列:文檔預處理
Embedding為我們提供了問題理解和文檔檢索的方法,但是面對大量的文檔,如果在用于提問的時候再進行文檔的Embedding的話,那這個過程是非常耗時的,再加之我們的文檔并不會頻繁變化,所以我們可以對文檔進行預處理,提升檢索的效率。
文檔的預處理大致分為了幾個步驟:
-
文檔的準備
首先需要把我們已有的文檔整理出來,起碼是需要進行檢索的這些文檔。文檔的格式不會有很大的限制,可以是docx,也可以是pdf或者ppt,當然也可以是txt或者markdown,哪怕是圖片、網頁或者其他可以提取文本的文檔格式都可以。
-
文本的提取
文本提取的過程,就是將已經整理好的文檔中的文字提取出來,根據不同的文檔類型匹配相應的提取方法。Kernel Memory中已經默認集成了docx、excel、ppt、pdf、plaintext(markdown、text)、json、image(via OCR)等類型的文本提取方法,如果有其他的文檔類型,也可以自行添加。
-
文本的分片
我們的文檔往往比較大,如果直接進行檢索使用的話,會導致最終的提示詞上下文太長,從而造成Token的浪費。另外提示詞太長的話,生成的速度也會變慢,從而費時費錢。
其實另外一個最主要的原因是embedding的接口是有token限制的,所以太長的話要么造成信息丟失,要么引起生成錯誤。
所以最好的方法就是將文本進行分片處理。Kernel Memory中提供了一個默認的分片方法,根據文本的長度、段落、句子、標點符號等進行分片,當然也可以自行添加。 -
文檔存儲
這里其實只是做一個持久化的過程,可以用于管理文檔處理的進度。
-
文本的Embedding
將分片好的文本進行Embedding,得到對應的向量。根據實際的需求,可以選用不同的Embedding模型,但是需要確保,最終和最終檢索所使用的Embedding模型保持一致。
-
存儲到向量數據庫
將Embedding的結果存儲到向量數據庫中,這樣的話,我們就可以在檢索的時候,直接從向量數據庫中讀取向量,而不需要再進行Embedding,從而提升檢索的效率。
一些其他的過程:
整個文檔預處理的過程是講已有的文本最終轉化為向量,存儲到向量數據庫的過程。在這個處理流程中,另外需要消息隊列來管理處理的進度。如果需要進行的文檔的更新的話,可以使用文檔刪除的方法,將文檔從向量數據庫中刪除,然后重新進行文檔導入處理。
總結
以上是生活随笔為你收集整理的Kernel Memory 入门系列:文档预处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Blazor入门100天 : 自做一个支
- 下一篇: 讯景 RX 7600 显卡海外上架:频率