|
落地知識(shí)庫(kù),常見(jiàn)的方案有哪些?以下是三種落地知識(shí)庫(kù)方案
一、基于在線(xiàn)平臺(tái) 以Dify為例,了解如何基于平臺(tái)搭建Agent+RAG的知識(shí)庫(kù) 1、Dify 什么是Dify(Define & Modify)?Dify是一個(gè)開(kāi)源的大語(yǔ)言模型(LLM)應(yīng)用開(kāi)發(fā)平臺(tái)(https://dify.ai/zh),旨在簡(jiǎn)化和加速生成式AI應(yīng)用的創(chuàng)建和部署。該平臺(tái)結(jié)合了后端即服務(wù)(Backend as Service, BaaS)和LLMOps的理念,為開(kāi)發(fā)者提供了一個(gè)用戶(hù)友好的界面和一系列強(qiáng)大的工具,使他們能夠快速搭建生產(chǎn)級(jí)的AI應(yīng)用。它支持多種大型語(yǔ)言模型,如Claude3、OpenAI等,并與多個(gè)模型供應(yīng)商合作,確保開(kāi)發(fā)者能根據(jù)需求選擇最適合的模型。Dify通過(guò)提供強(qiáng)大的數(shù)據(jù)集管理功能、可視化的Prompt編排以及應(yīng)用運(yùn)營(yíng)工具,大大降低了AI應(yīng)用開(kāi)發(fā)的復(fù)雜度。
2、Dify特點(diǎn) 1)低代碼/無(wú)代碼開(kāi)發(fā):Dify通過(guò)可視化的方式允許開(kāi)發(fā)者輕松定義Prompt、上下文和插件等,無(wú)需深入底層技術(shù)細(xì)節(jié)。 2)模塊化設(shè)計(jì):Dify采用模塊化的設(shè)計(jì),每個(gè)模塊都有清晰的功能和接口,開(kāi)發(fā)者可以根據(jù)需求選擇性地使用這些模塊來(lái)構(gòu)建自己的AI應(yīng)用。 3)豐富的功能組件:平臺(tái)提供了包括AI工作流、RAG管道、Agent、模型管理等豐富功能組件,幫助開(kāi)發(fā)者從原型到生產(chǎn)的全過(guò)程。 4)支持多種大語(yǔ)言模型:Dify已支持主流的模型,開(kāi)發(fā)者能夠根據(jù)自己的需求選擇最適合的模型來(lái)構(gòu)建AI應(yīng)用。 3、應(yīng)用場(chǎng)景 Dify提供四種基于LLM構(gòu)建的應(yīng)用程序,可以針對(duì)不同的應(yīng)用場(chǎng)景和需求進(jìn)行優(yōu)化和定制。 Dify + RAG搭建知識(shí)庫(kù)
如何將文檔上傳到Dify知識(shí)庫(kù)構(gòu)建RAG?將文檔上傳到Dify知識(shí)庫(kù)的過(guò)程涉及多個(gè)步驟,從文件選擇、預(yù)處理、索引模式選擇到檢索設(shè)置,旨在構(gòu)建一個(gè)高效、智能的知識(shí)檢索系統(tǒng)。
1) 創(chuàng)建知識(shí)庫(kù):Dify主導(dǎo)航欄中的“知識(shí)”,在此頁(yè)面可以看到已有的知識(shí)庫(kù)。 創(chuàng)建新知識(shí)庫(kù):拖放或選擇要上傳的文件,支持批量上傳,但數(shù)量受訂閱計(jì)劃限制。 空知識(shí)庫(kù)選項(xiàng):如果尚未準(zhǔn)備文檔,可選擇創(chuàng)建空知識(shí)庫(kù)。 外部數(shù)據(jù)源:使用外部數(shù)據(jù)源(如Notion或網(wǎng)站同步)時(shí),知識(shí)庫(kù)類(lèi)型將固定,建議為每個(gè)數(shù)據(jù)源創(chuàng)建單獨(dú)知識(shí)庫(kù)。
2) 文本預(yù)處理與清理:內(nèi)容上傳到知識(shí)庫(kù)之后,需要進(jìn)行分塊和數(shù)據(jù)清洗,這個(gè)階段可以理解為內(nèi)容的預(yù)處理和結(jié)構(gòu)化。 自動(dòng)模式:Dify自動(dòng)分割和清理內(nèi)容,簡(jiǎn)化文檔準(zhǔn)備流程。
自定義模式:對(duì)于需要更精細(xì)控制的情況,可選擇自定義模式進(jìn)行手動(dòng)調(diào)整。 3) 索引模式:根據(jù)應(yīng)用場(chǎng)景選擇合適的索引模式,如高質(zhì)量模式、經(jīng)濟(jì)模式或問(wèn)答模式。 高質(zhì)量模式:利用Embedding模型將文本轉(zhuǎn)換為數(shù)值向量,支持向量檢索、全文檢索和混合檢索。
經(jīng)濟(jì)模式:采用離線(xiàn)向量引擎和關(guān)鍵字索引,雖然準(zhǔn)確率有所降低,但省去了額外的 token 消耗和相關(guān)成本。
問(wèn)答模式:系統(tǒng)會(huì)進(jìn)行文本分詞,并通過(guò)摘要的方式,為每段生成QA問(wèn)答對(duì)。 4) 檢索設(shè)置 (1)在高質(zhì)量索引模式下,Dify 提供三種檢索設(shè)置:向量搜索、全文搜索、混合搜索 向量搜索:將查詢(xún)向量化,計(jì)算與知識(shí)庫(kù)中文本向量的距離,識(shí)別最接近的文本塊。
全文搜索:基于關(guān)鍵字匹配進(jìn)行搜索。 混合搜索:結(jié)合向量搜索和全文搜索的優(yōu)勢(shì)。 (2)在經(jīng)濟(jì)索引模式下,Dify 提供單一檢索設(shè)置:倒排索引和TopK 倒排索引:一種為快速檢索文檔中的關(guān)鍵字而設(shè)計(jì)的索引結(jié)構(gòu)。 TopK和分?jǐn)?shù)閾值:設(shè)置檢索結(jié)果的數(shù)量和相似度閾值。 Dify + Agent 如何在Dify平臺(tái)搭建Agent?在Dify平臺(tái)上,通過(guò)選擇模型、編寫(xiě)提示、添加工具與知識(shí)庫(kù)、配置推理模式及對(duì)話(huà)開(kāi)啟器,最后進(jìn)行調(diào)試預(yù)覽并發(fā)布為Webapp,實(shí)現(xiàn)Agent的創(chuàng)建與部署。 1) 探索與集成應(yīng)用模板 Dify平臺(tái)提供了豐富的“探索”(Explore)部分,其中包含多個(gè)代理助理的應(yīng)用模板。用戶(hù)可以直接將這些模板集成到自己的工作區(qū)中,快速開(kāi)始使用。同時(shí)還允許用戶(hù)創(chuàng)建自定義代理助理,以滿(mǎn)足特定的個(gè)人或組織需求。 2) 選擇推理模型 代理助理的任務(wù)完成能力很大程度上取決于所選LLM模型的推理能力。建議使用如GPT-4等更強(qiáng)大的模型系列,以獲得更穩(wěn)定、更精確的任務(wù)完成結(jié)果。 3)編寫(xiě)提示與設(shè)置流程 在“說(shuō)明”(Instructions)部分,用戶(hù)可以詳細(xì)編寫(xiě)代理助理的任務(wù)目標(biāo)、工作流程、所需資源和限制條件等提示信息。這些信息將幫助代理助理更好地理解并執(zhí)行任務(wù)。 4) 添加工具與知識(shí)庫(kù) 工具集成:在“工具”(Tools)部分,用戶(hù)可以添加各種內(nèi)置或自定義工具,以增強(qiáng)代理助理的功能。這些工具可以包括互聯(lián)網(wǎng)搜索、科學(xué)計(jì)算、圖像創(chuàng)建等,幫助代理助理與現(xiàn)實(shí)世界進(jìn)行更豐富的交互。 知識(shí)庫(kù):在“上下文”(Context)部分,用戶(hù)可以整合知識(shí)庫(kù)工具,為代理助理提供外部背景知識(shí)和信息檢索能力。 5) 推理模式設(shè)置 Dify支持兩種推理模式:Function Calling和ReAct Function Calling:對(duì)于支持該模式的模型(如GPT-3.5、GPT-4),建議使用此模式以獲得更好更穩(wěn)定的性能。 ReAct:對(duì)于不支持Function Calling的模型系列,Dify提供了ReAct推理框架作為替代方案,以實(shí)現(xiàn)類(lèi)似的功能。 6)配置對(duì)話(huà)開(kāi)啟器 用戶(hù)可以為代理助理設(shè)置對(duì)話(huà)開(kāi)場(chǎng)白和初始問(wèn)題,以便在用戶(hù)首次與代理助理交互時(shí),展示其可以執(zhí)行的任務(wù)類(lèi)型和可以提出的問(wèn)題示例。 7) 調(diào)試與預(yù)覽 在將代理助理發(fā)布為應(yīng)用程序之前,用戶(hù)可以在Dify平臺(tái)上進(jìn)行調(diào)試和預(yù)覽,以評(píng)估其完成任務(wù)的有效性和準(zhǔn)確性。 8) 應(yīng)用程序發(fā)布 一旦代理助理配置完成并經(jīng)過(guò)調(diào)試,用戶(hù)就可以將其發(fā)布為Web應(yīng)用程序(Webapp),供更多人使用。這將使得代理助理的功能和服務(wù)能夠跨平臺(tái)、跨設(shè)備地提供給更廣泛的用戶(hù)群體。
二、基于開(kāi)源項(xiàng)目 Langchain-Chatchat本地知識(shí)庫(kù)(開(kāi)源模型)搭建 LangChain-Chatchat 基于 ChatGLM 等大語(yǔ)言模型與 LangChain 等應(yīng)用框架實(shí)現(xiàn),開(kāi)源、可離線(xiàn)部署的 RAG 與 Agent 應(yīng)用項(xiàng)目,目標(biāo)期望建立一套對(duì)中文場(chǎng)景與開(kāi)源模型支持友好、可離線(xiàn)運(yùn)行的知識(shí)庫(kù)問(wèn)答解決方案。 1、Langchain-Chatchat 介紹 此項(xiàng)目支持市面上主流的開(kāi)源 LLM、 Embedding 模型與向量數(shù)據(jù)庫(kù),可實(shí)現(xiàn)全部使用開(kāi)源模型離線(xiàn)私有部署。同時(shí)也支持 OpenAI GPT API 的調(diào)用,并將在后續(xù)持續(xù)擴(kuò)充對(duì)各類(lèi)模型及模型 API 的接入。
1)實(shí)現(xiàn)原理 1. 加載文件 → 2. 讀取文本 → 3. 文本分割 → 4. 文本向量化 → 5. 問(wèn)句向量化 → 6. 在文本向量中匹配最相似的 Top K 個(gè) → 7. 將匹配的文本作為上下文,結(jié)合問(wèn)題構(gòu)造 Prompt → 8. 提交至 LLM 生成回答,如下圖所示
從文檔處理角度來(lái)看,實(shí)現(xiàn)流程如下:
2)功能介紹 3)模型框架支持 本項(xiàng)目中已經(jīng)支持市面上主流的如 GLM-4-Chat 與 Qwen2-Instruct 等新近開(kāi)源大語(yǔ)言模型和 Embedding 模型,這些模型需要用戶(hù)自行啟動(dòng)模型部署框架后,通過(guò)修改配置信息接入項(xiàng)目,本項(xiàng)目已支持的本地模型部署框架如下:
除上述本地模型加載框架外,項(xiàng)目中也為可接入在線(xiàn) API 的 One API 框架接入提供了支持,支持包括 OpenAI ChatGPT、Azure OpenAI API、Anthropic Claude、智譜清言、百川 等常用在線(xiàn) API 的接入使用。 2、構(gòu)建本地知識(shí)庫(kù)的步驟 1). 環(huán)境配置 在構(gòu)建本地知識(shí)庫(kù)之前,需要確保滿(mǎn)足一定的硬件與軟件要求。硬件方面,推薦使用NVIDIA顯卡配置,具體取決于模型大小。軟件方面,需要確保Python環(huán)境和必要的依賴(lài)庫(kù)安裝,如langchain、faiss、chroma等。 2). 模型下載與初始化 使用Git LFS安裝工具來(lái)下載模型文件,并確保模型文件夾名稱(chēng)與配置文件中的模型名稱(chēng)一致。接著,通過(guò)示例腳本初始化知識(shí)庫(kù)和配置文件,包括設(shè)置大模型存放路徑、嵌入模型等。 3). 數(shù)據(jù)處理與向量化 構(gòu)建知識(shí)庫(kù)的關(guān)鍵步驟之一是數(shù)據(jù)處理與向量化。這包括讀取文本數(shù)據(jù)、將文本分割成可管理和理解的部分、使用嵌入模型將文本轉(zhuǎn)換為向量等。Langchain-Chatchat提供了完善的工具鏈來(lái)支持這些步驟,如DirectoryLoader用于加載文件夾中的文件,CharacterTextSplitter用于切割文檔,以及OpenAIEmbeddings用于計(jì)算嵌入向量。 4). 匹配查詢(xún)與生成答案 在向量庫(kù)中查找與問(wèn)題最相似的部分,并集成上下文和問(wèn)題以生成答案,是使用Langchain-Chatchat構(gòu)建知識(shí)庫(kù)問(wèn)答機(jī)器人的另一個(gè)關(guān)鍵步驟。這通常涉及使用語(yǔ)言模型(LLM)進(jìn)行理解和生成。Langchain-Chatchat支持多種開(kāi)源模型和向量數(shù)據(jù)庫(kù),如ChatGLM、LLaMA、Qwen、Yi等模型,以及FAISS、Chroma、Milvus等向量數(shù)據(jù)庫(kù),滿(mǎn)足不同需求與場(chǎng)景。 5). 部署與訪(fǎng)問(wèn) 完成上述步驟后,可以通過(guò)一鍵啟動(dòng)服務(wù)來(lái)訪(fǎng)問(wèn)Web UI或API服務(wù)。Langchain-Chatchat提供了詳細(xì)的啟動(dòng)指南和訪(fǎng)問(wèn)鏈接,使得開(kāi)發(fā)者能夠輕松地在本地或網(wǎng)絡(luò)受限環(huán)境中部署問(wèn)答機(jī)器人。 三、從0開(kāi)始搭建 1、本地部署 RAG 知識(shí)庫(kù)的核心優(yōu)勢(shì) 數(shù)據(jù)隱私保護(hù):所有數(shù)據(jù)在本地處理,避免敏感信息外泄,尤其適合教育、醫(yī)療等隱私敏感領(lǐng)域812。 成本控制:長(zhǎng)期使用成本顯著低于依賴(lài)云服務(wù) API,老舊設(shè)備(如 16GB 內(nèi)存 + 8GB 顯存)也能運(yùn)行12。 定制化能力:支持私有知識(shí)庫(kù)嵌入(如企業(yè)文檔、個(gè)人筆記),提升模型回答的精準(zhǔn)性812。 離線(xiàn)可用性:無(wú)需網(wǎng)絡(luò)連接,解決服務(wù)器擁堵問(wèn)題,響應(yīng)速度更快 2、開(kāi)源模型(可本地部署) 1).Meta 的 LLaMA 系列(美國(guó)) LLaMA/LLaMA 2:參數(shù)規(guī)模 7B-70B,開(kāi)源推動(dòng)社區(qū)衍生模型(如 Alpaca、Vicuna)。 應(yīng)用場(chǎng)景:學(xué)術(shù)研究、定制化開(kāi)發(fā)。 2).Mistral AI 系列(法國(guó)) Mistral 7B/8x7B:高效小參數(shù)模型,性能媲美更大規(guī)模模型。 Mixtral 8x22B:混合專(zhuān)家(MoE)架構(gòu),支持多語(yǔ)言。 3).中國(guó)開(kāi)源模型 智譜AI的 ChatGLM-6B/GLM-4:中英雙語(yǔ)優(yōu)化,支持低成本部署。 零一萬(wàn)物 Yi 系列:Yi-34B 在多項(xiàng)基準(zhǔn)測(cè)試中表現(xiàn)優(yōu)異。 深度求索的 DeepSeek:數(shù)學(xué)與代碼能力突出。 3 從零到一使用Ollama搭建本地大模型與知識(shí)庫(kù) Ollama是一款簡(jiǎn)單易用的開(kāi)源工具,能夠讓你在本地輕松運(yùn)行各種大模型。它支持多種操作系統(tǒng),包括Windows、Mac和Linux,甚至可以在樹(shù)莓派這樣的低功耗設(shè)備上運(yùn)行。Ollama的安裝和使用都非常簡(jiǎn)單,特別適合初學(xué)者和想要快速搭建本地大模型的開(kāi)發(fā)者。 1)、安裝Ollama 下載與安裝 訪(fǎng)問(wèn)Ollama的官方網(wǎng)站:https://ollama.com/ 點(diǎn)擊下載按鈕,選擇適合你操作系統(tǒng)的版本進(jìn)行下載。 安裝包下載完成后,雙擊運(yùn)行安裝程序,按照提示完成安裝。 驗(yàn)證安裝 安裝完成后,打開(kāi)命令行工具(在Windows中是CMD或PowerShell,Mac中是Terminal)。 輸入ollama -v,如果顯示版本號(hào),則表示安裝成功。 2)、配置Ollama 為了避免大模型占用過(guò)多C盤(pán)空間,你可以修改Ollama的模型保存路徑。
修改環(huán)境變量 右鍵點(diǎn)擊“此電腦”(Windows)或“系統(tǒng)偏好設(shè)置”(Mac),選擇“屬性”或“高級(jí)系統(tǒng)設(shè)置”。 進(jìn)入“環(huán)境變量”設(shè)置,新建一個(gè)名為OLLAMA_MODELS的變量,并指向你希望存放模型的目錄。 3)、下載并運(yùn)行大模型 選擇并下載大模型 Ollama支持多種大模型,你可以在Ollama的官方模型庫(kù)中選擇合適的模型進(jìn)行下載。 例如,要下載經(jīng)過(guò)中文微調(diào)的Llama3-8b大模型,你可以在命令行中輸入:
運(yùn)行大模型 下載完成后,模型會(huì)自動(dòng)啟動(dòng)一個(gè)對(duì)話(huà)界面。你可以開(kāi)始與它進(jìn)行交互了。 4)、安裝并使用AnythingLLM AnythingLLM是一個(gè)功能強(qiáng)大的大模型開(kāi)發(fā)工具,可以幫助你更好地管理和使用本地大模型。 下載與安裝 訪(fǎng)問(wèn)AnythingLLM的官方網(wǎng)站:https://useanything.com/ 下載并安裝適合你操作系統(tǒng)的版本。 配置并連接Ollama 打開(kāi)AnythingLLM,在配置界面中輸入Ollama服務(wù)器的地址(默認(rèn)是http://127.0.0.1:11434)。 選擇你想要使用的Ollama模型。 5)、創(chuàng)建本地知識(shí)庫(kù) 上傳并導(dǎo)入文檔
在AnythingLLM中,創(chuàng)建一個(gè)新的工作空間,并上傳你的私有知識(shí)文檔。 將上傳的文件導(dǎo)入到工作空間中,并等待文件向量化入庫(kù)。 設(shè)置知識(shí)庫(kù)模式
根據(jù)你的需求,選擇合適的知識(shí)庫(kù)模式。 6)、應(yīng)用與擴(kuò)展 現(xiàn)在,你已經(jīng)成功搭建了一個(gè)本地的大模型與知識(shí)庫(kù),可以隨時(shí)隨地與它進(jìn)行交互了。 你還可以根據(jù)需要,繼續(xù)下載和運(yùn)行其他大模型,或者擴(kuò)展你的知識(shí)庫(kù)。 |




























