LLMs之RAG之IncarnaMind:IncarnaMind的簡介(提高RAG召回率的兩個優(yōu)化技巧=滑塊遍歷反向查找+獨立查詢)、安裝、使用方法之詳細攻略
導讀:在IncarnaMind項目中,提出了幾個優(yōu)化技巧,是非常值得我們在優(yōu)化RAG系統(tǒng)的時候,進行思考和借鑒。
>> 文檔分塊能夠提高相似度檢索中的效率和準確性:可以通過小分塊和大分塊的結(jié)合來優(yōu)化檢索效果。分塊大小需要權(quán)衡,分塊不宜太大,否則會影響檢索效果;分塊也不宜太小,以免檢索結(jié)果不完整。
>> 分塊技巧—滑塊遍歷和反向查找(用小分塊保證盡可能找到更多的相關(guān)內(nèi)容,用大分塊保證內(nèi)容完整性):在相似度檢索時,可以使用滑塊遍歷結(jié)果,根據(jù)小塊的信息反向查找大塊內(nèi)容,以便提交給語言模型作為上下文。比如Langchain中ParentDocumentRetriever(父文檔檢索器)就采用了這一思路。
>> 用LLM將用戶的提問轉(zhuǎn)換成獨立查詢:當用戶提問后,重新提煉問題并拆分成多個獨立查詢。通過過濾掉無用信息,使得查詢更準確,進而提升用戶體驗和檢索結(jié)果的質(zhì)量。
相關(guān)文章
LLMs之RAG:知識檢索增強生成方法(搭建本地知識庫、利用外掛信息庫增強LLMs自身能力的一種方法,外部知識檢索+LLMs生成回復(fù)=知識問答任務(wù))的簡介、實現(xiàn)方法(LangChain/Loc……等)、案例應(yīng)用之詳細攻略
https://yunyaniu.blog.csdn.net/article/details/130215772
IncarnaMind的簡介
IncarnaMind允許你使用大型語言模型(LLMs)如GPT與你的個人文件(PDF,TXT)進行聊天。盡管OpenAI最近推出了GPT模型的微調(diào)API,但它不允許base版本的預(yù)訓練模型學習新數(shù)據(jù),而且響應(yīng)可能容易受到事實幻覺的影響。利用我們的滑塊窗口分塊機制和集合檢索器,可以有效地查詢地面真實文檔中的精細和粗粒度信息,以增強LLMs。
GitHub地址:https://github.com/junruxiong/IncarnaMind
1、版本更新
開源和本地LLMs支持
開源和本地LLMs支持
推薦模型:我們主要使用Llama2系列模型進行測試,并建議使用llama2-70b-chat(完整或GGUF版本)以獲得最佳性能。隨時嘗試其他LLMs。
系統(tǒng)要求:運行GGUF量化版本需要超過35GB的GPU RAM。
備用開源LLMs選項
備用開源LLMs選項
內(nèi)存不足:如果受到GPU RAM的限制,請考慮使用Together.ai API。它支持llama2-70b-chat和大多數(shù)其他開源LLMs。此外,您可以獲得25美元的免費使用額度。
即將推出:將來將發(fā)布更小型和經(jīng)濟實惠的微調(diào)模型。
注意事項
如何使用GGUF模型:有關(guān)獲取和使用量化GGUF LLM的說明(類似于GGML),請參考此視頻(從10:45到12:30)。
即將推出的功能前端UI界面
經(jīng)過微調(diào)的小型開源LLMs
OCR支持
異步優(yōu)化
支持更多文檔格式。
視頻地址:https://user-images.githubusercontent.com/44308338/268073295-89d479fb-de90-4f7c-b166-e54f7bc7344c.mp4
2、應(yīng)對的挑戰(zhàn)及其提出的解決方案
固定分塊:傳統(tǒng)的RAG工具依賴于固定的分塊大小,限制了它們在處理不同數(shù)據(jù)復(fù)雜性和上下文方面的適應(yīng)能力。
自適應(yīng)分塊:我們的滑塊窗口分塊技術(shù)根據(jù)數(shù)據(jù)復(fù)雜性和上下文動態(tài)調(diào)整窗口大小和位置,以實現(xiàn)RAG的細粒度和粗粒度數(shù)據(jù)訪問平衡。
精度與語義:當前的檢索方法通常要么側(cè)重于語義理解,要么側(cè)重于精確檢索,但很少兩者兼顧。
單文檔限制:許多解決方案一次只能查詢一個文檔,限制了多文檔信息檢索
多文檔會話問答:支持跨多個文檔同時進行簡單和多跳查詢,打破了單文檔限制。
文件兼容性:支持PDF和TXT文件格式。
穩(wěn)定性:IncarnaMind與OpenAI GPT、Anthropic Claude、Llama2和其他開源LLMs兼容,確保穩(wěn)定的解析。LLM模型兼容性:支持OpenAI GPT、Anthropic Claude、Llama2和其他開源LLMs。
(1)、流程圖—高級架構(gòu)
(2)、流程圖—滑塊窗口分塊
3、不同模型的性能對比表
MetricsGPT-4GPT-3.5Claude 2.0Llama2-70bLlama2-70b-ggufLlama2-70b-api
ReasoningHighMediumHighMediumMediumMedium
SpeedMediumHighMediumVery LowLowMedium
GPU RAMN/AN/AN/AVery HighHighN/A
SafetyLowLowLowHighHighLow
IncarnaMind的安裝
1、環(huán)境配置以及閉源模型的密鑰
環(huán)境配置
3.8 ≤ Python < 3.11與Conda
密鑰一個/所有OpenAI API密鑰,Anthropic Claude API密鑰,Together.ai API密鑰或HuggingFace Meta Llama模型的令牌
2、安裝
1.1. 克隆存儲庫git clone https://github.com/junruxiong/IncarnaMindcd IncarnaMind1.2. 設(shè)置創(chuàng)建Conda虛擬環(huán)境:conda create -n IncarnaMind python=3.10激活:conda activate IncarnaMind安裝所有要求:pip install -r requirements.txt單獨安裝llama-cpp,如果您要運行量化本地LLMs:>> 對于NVIDIA GPU支持,請使用cuBLASCMAKE_ARGS="-DLLAMA_CUBLAS=on" FORCE_CMAKE=1 pip install llama-cpp-python==0.1.83 --no-cache-dir>> 對于Apple Metal(M1/M2)支持,請使用CMAKE_ARGS="-DLLAMA_METAL=on" FORCE_CMAKE=1 pip install llama-cpp-python==0.1.83 --no-cache-dir在configparser.ini文件中設(shè)置您的一個/所有API密鑰:[tokens]OPENAI_API_KEY = (替代)ANTHROPIC_API_KEY = (替代)TOGETHER_API_KEY = (替代) IncarnaMind的使用方法
1、基礎(chǔ)用法
上傳和處理您的文件
第一步,上傳和處理您的文件
將所有文件(請正確命名每個文件以最大化性能)放入/data目錄,然后運行以下命令以攝入所有數(shù)據(jù):(在運行命令之前,您可以刪除/data目錄中的示例文件)
python docs2db.py
運行
第二步,運行
為了開始對話,請運行如下命令:
python main.py
聊天
第三步, 聊天和提問任何問題
等待腳本需要您的輸入,如下所示。
Human: