成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

再談大模型長文本分塊,以及分塊在RAG中的作用? 原創

發布于 2024-12-19 14:39
瀏覽
0收藏

“ 向量數據庫的檢索原理,就是存儲不同數據之間的向量關系,在檢索時通過向量關系查詢相關數據 ”

文本分塊也就是chunk技術是大模型領域中非常重要的一項技術,原因就在于大模型眾所周知的問題,上下文窗口限制;雖然說現在大模型的窗口經過幾次擴容之后已經達到了一個非??捎^的長度,但依然還存在很多問題。

比如說,長文本導致的模型幻覺問題;中間丟失現象等多種性能問題;而且,在RAG技術中,長文本也是一個亟待解決的問題。

而現在業內普遍的處理方式就是文本分塊,把一段長文本根據某種方式拆分成多種小的文本塊;這樣就有助于大模型進行處理,也能間接降低大模型的幻覺等問題。

文本分塊

在大模型上下文窗口中文本分塊就比較好理解,這就類似于我們平常看一本很厚的書;我們無法做到一次就給全部看完,因此常見的做法就是今天看一點,明天看一點,然后一段時間之后就看完了。

而我們在看書的過程中,比如昨天看了一部分停了下來;今天接著看,但可能我們一時想不起來昨天看到哪里了;因此就會找到昨天看的大概位置再往前一點,這樣有助于我們回憶昨天看的內容;也有助于上下文的連貫性。

而大模型長文本處理有一種方式也是采用類似的方式,那就是把文本按照chunk_size進行分塊;然后使用chunk_overlap重疊一部分內容。而chunk_overlap重疊的部分就相當于我們看書時往前看的一部分,這樣有助于上下文的連貫性,特別是對大模型這種沒有記憶能力的系統來說。

而在代碼方面具體的表現就如下所示,加載文檔之后使用分詞工具根據不同的長度進行分詞,分詞的長度和重疊部分就是由chunk_size和chunk_overlap來指定,之后再轉化為向量。

"""
加載文檔
"""
def load_documents(directory=dir_path):
    loader = DirectoryLoader(directory)
    documents = loader.load()


    # for document in documents:
    #     print(document)
    # 文檔分割
    text_spliter = CharacterTextSplitter(chunk_size=256, chunk_overlap=10)
    spliter_docs = text_spliter.split_documents(documents)


    return spliter_docs

當然,在一些沒有語義相關的上下文中,也可以不使用chunk_overlap參數;只根據chunk_size或其它方式進行分塊。比如說,今天工作日我在上班;今天天氣不錯;這兩句話從語義上來說沒有任何相關性,因此可以進行完全分塊。

雖然說文本分塊是大模型技術中很常見的一種處理方式,但現在有一個疑問就是;在大模型上下文窗口中這樣的使用方式很容易理解;但在RAG中就存在一個問題。

RAG中一般使用向量數據庫作為數據的存儲方式,原因就在于向量數據庫能很好的保證文本之間的語義關系(也有圖像關系,混合關系等多種情況)。

但長文本被分塊之后,在向量數據庫中的表現形式也是一條一條的記錄;如果說一條語義相關的長文本被拆分成多個小塊,然后存儲在向量數據庫的不同位置。

再談大模型長文本分塊,以及分塊在RAG中的作用?-AI.x社區

這時在進行向量檢索時,向量數據庫是怎么保證檢索內容的相關性的?

難道是因為具有語義相關的內容被保存在相近距離的向量空間中?比如歐氏距離就是通過計算不同向量之間的距離來表示其相關性。

但如果面對著百億級以上的向量存儲需求,向量數據庫怎么保證快速且準確高效的檢索到相關數據? 

個人猜測,長文本被拆分之后,為了保證語義相關性,因此采用了chun_overlap的方式來讓拆分的文本有重疊的內容;根據這些重疊的內容,在進行向量計算的時候會把這相關的數據放到一塊;或者能夠通過一種方式進行快速檢索。

如下圖所示,文本被拆分之后,因為有chunk_overlap參數關聯文本的語義關系;那么,在向量數據庫中就會把語義相關的內容記錄到更近的位置;這樣在檢索的時候,就可以根據向量之間的關系獲取相關的數據。

再談大模型長文本分塊,以及分塊在RAG中的作用?-AI.x社區

這就類似于傳統SQL語句的like功能,可以根據某個字段或語句查詢到多條記錄;然后再從這多條記錄中篩選出語義相關性最高的數據。

但這同樣有新的問題,那就是chunk_overlap只是文檔拆分的一種方式;還有很多其它的方式可以拆分;那么這就說明一件事,chunk_overlap只是一種表象,核心在于怎么保證上下文語義的相關性;如果不使用chunk_overlap的方式,或者不使用歐式距離的計算方式, 那么怎么才能保證文本上下文的相關性呢?

而且,我們都知道大模型是經過訓練和微調的方式,通過不斷調整神經網絡的參數值來“學習”不同文本(多模態)數據之間的關系,那這個學習的過程是不是就是在不斷的計算向量之間的關系?


本文轉載自公眾號AI探索時代 作者:DFires

原文鏈接:??https://mp.weixin.qq.com/s/VL10Snh_jqbtGLR38vOXMQ??


?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 少妇特黄a一区二区三区88av | 精品一区二区三区在线观看国产 | 粉嫩一区二区三区性色av | 国产91视频播放 | 久草综合在线视频 | 综合第一页 | 在线看一区二区 | 久久久精品网站 | 精品毛片在线观看 | 国产精品国产成人国产三级 | 日韩成年人视频在线 | 伊人春色成人 | 久久久久资源 | 91在线视频观看 | 成年人在线观看视频 | 国产一区二区三区亚洲 | 亚州午夜精品 | 视频一二三区 | 亚洲成人999 | www.亚洲 | 狠狠操你 | 亚洲精品视频在线观看视频 | 国产精品资源在线观看 | 精品国产欧美一区二区 | 一级黄色生活视频 | 中文字幕日韩欧美一区二区三区 | 精精精精xxxx免费视频 | 国产精品久久久久久久久久久久 | 中文精品视频 | v亚洲 | 成人国产精品久久久 | 久久99网 | 中文在线一区二区 | 日韩欧美三级 | 国产精品久久久久永久免费观看 | 亚洲成人精品免费 | 亚洲国产一 | 日韩精品免费视频 | 在线视频一区二区三区 | 欧美日韩亚洲在线 | 精品国产乱码久久久久久蜜退臀 |