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