本地部署DeepSeek+DiFy平臺(tái)構(gòu)建智能體應(yīng)用
在大模型實(shí)際應(yīng)用落地時(shí)候,利用智能體平臺(tái),構(gòu)建本地的向量化知識(shí)庫(kù),基于RAG知識(shí)增強(qiáng)技術(shù)和大模型的推理能力,提升效率。本文簡(jiǎn)要介紹RAG、大模型微調(diào)和大模型蒸餾的特點(diǎn),通用智能體平臺(tái),并在本地部署DiFy智能體平臺(tái),利用本地部署的DeepSeek模型和知識(shí)庫(kù)構(gòu)建智能體應(yīng)用。
1、RAG、微調(diào)和蒸餾
大模型的落地使用主要有RAG、微調(diào)和蒸餾幾種方式,每種方式有各自的特點(diǎn)和適用場(chǎng)景。
1.1 RAG介紹
RAG(Retrieval-Augmented Generation)檢索增強(qiáng)生成是一種將外部知識(shí)檢索與大語(yǔ)言模型生成能力結(jié)合的混合架構(gòu)。其核心思想是通過(guò)檢索外部知識(shí)庫(kù)(如文檔、數(shù)據(jù)庫(kù)、網(wǎng)頁(yè)等),彌補(bǔ)大模型靜態(tài)訓(xùn)練數(shù)據(jù)的局限性;在生成答案時(shí)直接依賴(lài)檢索到的證據(jù),減少模型憑空編造內(nèi)容的可能性,降低幻覺(jué)風(fēng)險(xiǎn)。RAG無(wú)需重新訓(xùn)練模型,僅需更新知識(shí)庫(kù)即可適配不同專(zhuān)業(yè)領(lǐng)域(如醫(yī)療、法律)。類(lèi)似將大模型視為一個(gè)“推理專(zhuān)家”,而RAG系統(tǒng)為其配備了一個(gè)“實(shí)時(shí)資料庫(kù)助手”。在回答問(wèn)題時(shí),助手先查找相關(guān)資料,專(zhuān)家再結(jié)合資料生成最終答案。不過(guò)RAG依賴(lài)檢索質(zhì)量,若知識(shí)庫(kù)不完整或檢索策略不當(dāng),可能影響效果。
圖片
RAG的典型流程分為數(shù)據(jù)準(zhǔn)備、檢索階段、增強(qiáng)生成三個(gè)階段:
- 數(shù)據(jù)準(zhǔn)備階段:構(gòu)建可供檢索的高質(zhì)量知識(shí)庫(kù),包括數(shù)據(jù)收集、數(shù)據(jù)預(yù)處理和數(shù)據(jù)向量化。數(shù)據(jù)收集包括私域內(nèi)專(zhuān)業(yè)文檔(PDF/Text)、數(shù)據(jù)庫(kù)、網(wǎng)頁(yè)、API實(shí)時(shí)數(shù)據(jù)等;數(shù)據(jù)預(yù)處理將長(zhǎng)文本切分為語(yǔ)義連貫的片段(如每段512詞),并清洗數(shù)據(jù),形成標(biāo)準(zhǔn)化格式;向量化(Embedding)則是使用嵌入模型(如BERT、Sentence-BERT)將文本塊轉(zhuǎn)為稠密向量(dense vector),并存儲(chǔ)至向量數(shù)據(jù)庫(kù)(如FAISS、Milvus、Pinecone等)。
- 檢索階段:從知識(shí)庫(kù)中快速找到與用戶(hù)問(wèn)題最相關(guān)的文本片段,包括用戶(hù)查詢(xún)向量化、相似性檢索。用戶(hù)查詢(xún)向量化是使用與知識(shí)庫(kù)相同的嵌入模型,將用戶(hù)問(wèn)題轉(zhuǎn)為向量;相似性檢索計(jì)算查詢(xún)向量與知識(shí)庫(kù)向量的相似度(余弦相似度、歐氏距離),返回Top-K相關(guān)片段(通常K=3~10);重排序使用交叉編碼器(Cross-Encoder)對(duì)Top-K結(jié)果精細(xì)排序,提升相關(guān)性判斷。其中檢索算法又分為稠密檢索、稀疏檢索和混合檢索。
- 增強(qiáng)生成階段:將檢索到的證據(jù)融入生成過(guò)程,輸出最終答案,包括上下文構(gòu)造和生成控制。上下文構(gòu)造是將檢索到的文本片段與用戶(hù)問(wèn)題拼接為提示(Prompt);生成控制則約束模型僅基于檢索內(nèi)容生成,避免偏離證據(jù)(通過(guò)提示工程或模型微調(diào)實(shí)現(xiàn))。
1.2 大模型微調(diào)
大模型微調(diào)(Fine-tuning)是一種遷移學(xué)習(xí)技術(shù),通過(guò)在預(yù)訓(xùn)練大模型(如GPT、BERT、LLAMA等)的基礎(chǔ)上,使用領(lǐng)域特定數(shù)據(jù)進(jìn)行額外訓(xùn)練,使模型適應(yīng)特定任務(wù)(如醫(yī)療問(wèn)答、法律文本分析、代碼生成等)。其核心思想是復(fù)用通用知識(shí)(預(yù)訓(xùn)練階段獲得)并注入領(lǐng)域?qū)S兄R(shí),從而在少量數(shù)據(jù)下實(shí)現(xiàn)高性能。類(lèi)似理解為將預(yù)訓(xùn)練模型視為“通才”,通過(guò)微調(diào)將其轉(zhuǎn)變?yōu)椤皩?zhuān)才”。
圖片
大模型微調(diào)的典型流程分為數(shù)據(jù)準(zhǔn)備、模型選擇與配置、微調(diào)訓(xùn)練、評(píng)估與部署四個(gè)階段:
- 數(shù)據(jù)準(zhǔn)備:構(gòu)建與目標(biāo)任務(wù)匹配的高質(zhì)量訓(xùn)練集。通過(guò)收集數(shù)據(jù)、標(biāo)注數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行去噪和清洗、標(biāo)準(zhǔn)化格式、與預(yù)訓(xùn)練模型匹配等數(shù)據(jù)預(yù)處理方式,確保微調(diào)數(shù)據(jù)與真實(shí)應(yīng)用場(chǎng)景分布一致。
- 模型選擇與配置:選擇合適的預(yù)訓(xùn)練模型并配置微調(diào)策略。微調(diào)策略分為全參數(shù)微調(diào)和參數(shù)高效微調(diào)(PEFT),常用方法包括LoRA(Low-Rank Adaptation)注入低秩矩陣,僅訓(xùn)練新增參數(shù)、Adapter在Transformer層間插入小型適配模塊、Prefix-Tuning在輸入前添加可學(xué)習(xí)前綴向量。
- 微調(diào)訓(xùn)練:通過(guò)迭代優(yōu)化,使模型適應(yīng)目標(biāo)任務(wù)。
- 評(píng)估部署:驗(yàn)證模型性能并部署到生產(chǎn)環(huán)境。建立評(píng)估指標(biāo)如準(zhǔn)確率、F1值、Recall率以及人工評(píng)分,對(duì)比微調(diào)模型與基線模型的實(shí)際效果,迭代優(yōu)化模型。
1.3 大模型蒸餾
大模型蒸餾是一種模型壓縮技術(shù),通過(guò)將復(fù)雜的大模型中的知識(shí)遷移到更輕量的小模型,在減少模型體積和計(jì)算資源需求的同時(shí),盡可能保留原模型的性能。其核心思想是讓學(xué)生模型不僅學(xué)習(xí)訓(xùn)練數(shù)據(jù)的標(biāo)簽(硬標(biāo)簽),還模仿教師模型的輸出分布(軟標(biāo)簽)或中間特征。
圖片
大模型蒸餾的典型流程分為教師模型訓(xùn)練、知識(shí)遷移和學(xué)生模型訓(xùn)練三個(gè)階段:
- 教師模型訓(xùn)練:訓(xùn)練一個(gè)高性能的大模型(教師),作為知識(shí)來(lái)源。教師模型通常為參數(shù)量大、結(jié)構(gòu)復(fù)雜的模型(如BERT、GPT-3、ResNet-152),并且在目標(biāo)任務(wù)(分類(lèi)、生成等)上達(dá)到高精度。
- 知識(shí)遷移設(shè)計(jì):定義學(xué)生模型需要模仿的知識(shí)類(lèi)型及遷移方式,包括輸出層知識(shí)遷移(軟標(biāo)簽蒸餾)、中間層知識(shí)遷移(特征蒸餾)和關(guān)系知識(shí)遷移關(guān)鍵方法。軟標(biāo)簽教師模型輸出的概率分布(如分類(lèi)任務(wù)中各類(lèi)別的概率);特征匹配是強(qiáng)制學(xué)生模型的中間層特征(如Transformer隱藏狀態(tài)、CNN特征圖)與教師模型對(duì)齊;關(guān)系匹配是捕捉教師模型中樣本間的關(guān)系(如樣本對(duì)之間的相似性)。
- 學(xué)生模型訓(xùn)練:利用教師模型的知識(shí)和訓(xùn)練數(shù)據(jù),訓(xùn)練輕量化的學(xué)生模型。
1.4 智能體概念
智能體(AI Agent)是一種能夠感知環(huán)境、自主決策并執(zhí)行任務(wù)的智能系統(tǒng),其核心特征包括自主性、交互性、適應(yīng)性、目標(biāo)導(dǎo)向性等。其基本組成包括:
- 感知(Perception):感知是Agent與外部世界互動(dòng)的橋梁,負(fù)責(zé)收集和解析環(huán)境數(shù)據(jù)。
- 規(guī)劃(Planning):規(guī)劃是Agent的決策大腦,把目標(biāo)拆解成可執(zhí)行的步驟,制定實(shí)現(xiàn)目標(biāo)的策略。
- 記憶(Memory):記憶分為短期和長(zhǎng)期,允許Agent存儲(chǔ)和檢索信息,支持學(xué)習(xí)和長(zhǎng)期知識(shí)積累。短期記憶,能在對(duì)話中記住用戶(hù)的問(wèn)題和偏好,提供即時(shí)的個(gè)性化服務(wù)。長(zhǎng)期記憶,會(huì)存儲(chǔ)先前研究的數(shù)據(jù)和結(jié)果,用于新項(xiàng)目,加速發(fā)現(xiàn)過(guò)程。
- 工具使用(Tools Use):工具使用是指Agent利用外部資源或工具增強(qiáng)其能力。這些工具可以是API、軟件庫(kù)、硬件設(shè)備或其他服務(wù)。
- 行動(dòng)(Action):行動(dòng)是Agent執(zhí)行任務(wù)和與環(huán)境互動(dòng)的具體行為。它基于規(guī)劃和記憶執(zhí)行具體動(dòng)作,完成任務(wù)并響應(yīng)環(huán)境。
圖片
智能體的發(fā)展依賴(lài)于大模型、強(qiáng)化學(xué)習(xí)、多模態(tài)融合等技術(shù),尤其是大模型顯著提升了其自然交互與復(fù)雜推理能力。
2、通用智能體平臺(tái)選擇
在實(shí)際的應(yīng)用落地時(shí)候,利用智能體平臺(tái),構(gòu)建本地的向量化知識(shí)庫(kù),基于RAG知識(shí)增強(qiáng)技術(shù)和大模型的推理能力,提升問(wèn)題分析和處理的效率。通用的智能體平臺(tái)有很多,比如開(kāi)源的DiFy、LangChain、CherryStudio等,商業(yè)版的有Coze、騰訊混元等。各平臺(tái)有不同的特性,以下是DiFy、LangChain和Coze平臺(tái)的特性對(duì)比。
1)易用性DiFy提供可視化界面和低代碼配置,支持非技術(shù)人員參與開(kāi)發(fā),適合快速構(gòu)建生產(chǎn)級(jí)應(yīng)用;LangChain學(xué)習(xí)曲線陡峭,需熟悉模塊化組件(如Chains、Agents)和編程接口,適合技術(shù)背景較強(qiáng)的開(kāi)發(fā)者;Coze通常提供拖拽式界面和預(yù)置模板,強(qiáng)調(diào)快速部署AI Bot,適合輕量級(jí)應(yīng)用開(kāi)發(fā)。
圖片
2)功能特性DiFy集成RAG引擎、Agent框架和多模型支持;支持Prompt編排、數(shù)據(jù)操作和API集成;提供LLMOps全生命周期管理。LangChain模塊化設(shè)計(jì)(Model I/O、Retrieval、Agents等),支持復(fù)雜鏈?zhǔn)秸{(diào)用和動(dòng)態(tài)代理交互,開(kāi)源生態(tài)豐富。Coze專(zhuān)注于Bot開(kāi)發(fā),集成對(duì)話管理、插件市場(chǎng)和多模態(tài)交互,提供預(yù)訓(xùn)練工作流和自動(dòng)化部署工具。
圖片
3)社區(qū)生態(tài)DiFy社區(qū)處于早期階段,依賴(lài)官方文檔和企業(yè)支持,集成第三方工具較少。LangChain開(kāi)源社區(qū)活躍,GitHub Star超8.7萬(wàn),支持多語(yǔ)言版本(Python/JS),集成向量數(shù)據(jù)庫(kù)、工具和插件豐富。Coze為大廠產(chǎn)品,依賴(lài)官方生態(tài)支持,插件市場(chǎng)和應(yīng)用模板豐富,但社區(qū)貢獻(xiàn)有限。
圖片
4)開(kāi)源性質(zhì)DiFy完全開(kāi)源(Apache 2.0協(xié)議),允許代碼修改和二次開(kāi)發(fā),社區(qū)版功能受限,企業(yè)版需商業(yè)授權(quán)。LangChain完全開(kāi)源(Apache 2.0協(xié)議),社區(qū)貢獻(xiàn)活躍,支持自定義模塊和工具集成,但缺乏統(tǒng)一的產(chǎn)品化支持。Coze為為閉源商業(yè)平臺(tái),提供云服務(wù)和API調(diào)用,擴(kuò)展性依賴(lài)官方接口。
圖片
5)問(wèn)題分類(lèi)Dify擅長(zhǎng)處理企業(yè)級(jí)應(yīng)用開(kāi)發(fā),如知識(shí)庫(kù)問(wèn)答、自動(dòng)化工作流和API服務(wù)部署。LangChain適用于需深度定制的問(wèn)題,如多模型協(xié)作、復(fù)雜邏輯鏈設(shè)計(jì)。Coze聚焦對(duì)話場(chǎng)景(如客服、娛樂(lè)Bot),支持多平臺(tái)分發(fā)和輕量化交互。
6)模型支持Dify兼容最廣泛,支持OpenAI、Anthropic、Llama系列等商業(yè)/開(kāi)源模型,可本地部署或調(diào)用云端API。LangChain通過(guò)模塊化接口連接多種模型(如Hugging Face、Azure OpenAI),靈活性高但需開(kāi)發(fā)者配置。Coze優(yōu)先集成字節(jié)生態(tài)模型(如豆包系列),對(duì)國(guó)產(chǎn)模型(如GLM、MoonShot)支持較好,但擴(kuò)展性受限。
3、DiFy智能體平臺(tái)本地化部署
3.1 DeepSeek本地化部署
參考文章“DeepSeek-R1模型本地部署”
1)在本地運(yùn)行deepseek模型
ollama run deepseek-r1:1.5b2)在本地運(yùn)行Embedding模型
ollama pull bge-m33.2 Dify平臺(tái)部署
3.2.1 克隆Dify代碼倉(cāng)庫(kù)
克隆Dify源代碼至本地環(huán)境。
#git clone https://github.com/langgenius/dify.git --branch 0.15.3
Cloning into 'dify'...
remote: Enumerating objects: 144842, done.
remote: Counting objects: 100% (1116/1116), done.
remote: Compressing objects: 100% (505/505), done.
remote: Total 144842 (delta 926), reused 613 (delta 611), pack-reused 143726 (from 3)
Receiving objects: 100% (144842/144842), 78.11 MiB | 1.94 MiB/s, done.
Resolving deltas: 100% (106284/106284), done.
Note: checking out 'ca19bd31d42fb87c83b91541c473ebae85e9d14e'.3.2.2 啟動(dòng) Dify
1)進(jìn)入 Dify 源代碼的 Docker 目錄
cd dify/docker2)復(fù)制環(huán)境配置文件
cp .env.example .env3)啟動(dòng) Docker 容器
#docker-compose --version
docker-compose version 1.28.6, build 5db8d86f
#如果版本是 Docker Compose V2,使用以下命令:
docker compose up -d
#如果版本是 Docker Compose V1,使用以下命令:
docker-compose up -d啟動(dòng)報(bào)錯(cuò),需要配置合適的docker鏡像源
#docker-compose up -d
Creating network "docker_default" with the default driver
Creating network "docker_ssrf_proxy_network" with driver "bridge"
Creating network "docker_milvus" with driver "bridge"
Creating network "docker_opensearch-net" with driver "bridge"
Pulling web (langgenius/dify-web:0.15.3)...
ERROR: Get https://registry-1.docker.io/v2/: read tcp 192.168.112.110:60148->52.1.121.53:443: read: connection reset by peer如果提示NGINX端口沖突,修改相應(yīng)的配置文件
ERROR: for docker_nginx_1 Cannot start service nginx: driver failed programming external connectivity on endpoint docker_nginx_1 (87803a54cea3e36c8628fdd2e3a9795cfe7696e952fefeabedc3089bdf9b4843): Bind for 0.0.0.0:80 failed: port is already allocated進(jìn)入到dify文件夾下
cd /dify/docker
vi .env
#找到 EXPOSE_NGINX_PORT 在780行,改成你需要的端口默認(rèn)是80 ps:
#------------------------------
#Docker Compose Service Expose Host Port Configurations
#------------------------------
EXPOSE_NGINX_PORT=10080
EXPOSE_NGINX_SSL_PORT=443
#保存退出
:wq!再執(zhí)行命令
[root@tango-01 docker]# docker-compose up -d
Creating network "docker_default" with the default driver
Creating network "docker_ssrf_proxy_network" with driver "bridge"
Creating network "docker_milvus" with driver "bridge"
Creating network "docker_opensearch-net" with driver "bridge"
Creating docker_weaviate_1 ... done
Creating docker_web_1 ... done
Creating docker_ssrf_proxy_1 ... done
Creating docker_db_1 ... done
Creating docker_redis_1 ... done
Creating docker_sandbox_1 ... done
Creating docker_api_1 ... done
Creating docker_worker_1 ... done
Creating docker_nginx_1 ... done最后檢查是否所有容器都正常運(yùn)行:
[root@tango-01 docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2dae908116e8 nginx:latest "sh -c 'cp /docker-e…" 49 seconds ago Up 46 seconds 0.0.0.0:10080->80/tcp, 0.0.0.0:10443->443/tcp docker_nginx_1
6265cf210cf0 langgenius/dify-api:0.15.3 "/bin/bash /entrypoi…" 51 seconds ago Up 11 seconds 5001/tcp docker_worker_1
d942f95f499c langgenius/dify-api:0.15.3 "/bin/bash /entrypoi…" 51 seconds ago Up 11 seconds 5001/tcp docker_api_1
12faac266945 langgenius/dify-sandbox:0.2.10 "/main" 56 seconds ago Restarting (2) 14 seconds ago docker_sandbox_1
5a259dcc231b redis:6-alpine "docker-entrypoint.s…" 56 seconds ago Up 51 seconds (healthy) 6379/tcp docker_redis_1
3217f01bdbc7 postgres:15-alpine "docker-entrypoint.s…" 56 seconds ago Up 52 seconds (healthy) 5432/tcp docker_db_1
345e4ad02636 langgenius/dify-web:0.15.3 "/bin/sh ./entrypoin…" 56 seconds ago Up 51 seconds 3000/tcp docker_web_1
89be23ea9754 ubuntu/squid:latest "sh -c 'cp /docker-e…" 56 seconds ago Up 50 seconds 3128/tcp docker_ssrf_proxy_1
b8ed98f311c2 semitechnologies/weaviate:1.19.0 "/bin/weaviate --hos…" 56 seconds ago Up 51 seconds docker_weaviate_1在這個(gè)輸出中,應(yīng)該可以看到包括3個(gè)業(yè)務(wù)服務(wù)api/worker/web,以及6個(gè)基礎(chǔ)組件weaviate/db/redis/ nginx/ssrf_proxy/ sandbox。
4)登錄DiFy平臺(tái):http://xx.xx.xx.xx/install,默認(rèn)端口是80
登錄進(jìn)入主界面
圖片
3.3 構(gòu)建智能體
3.3.1 大模型接入
在Dify中,按模型的使用場(chǎng)景將模型分為以下4類(lèi):
- 系統(tǒng)推理模型:在創(chuàng)建的應(yīng)用中,用的是該類(lèi)型的模型。智聊、對(duì)話名稱(chēng)生成、下一步問(wèn)題建議用的也是推理模型。已支持的系統(tǒng)推理模型供應(yīng)商:OpenAI、Azure OpenAI Service、DeepSeek、Anthropic、Hugging Face Hub、Replicate、Xinference、OpenLLM、訊飛星火、文心一言、通義千問(wèn)、Minimax、ZHIPU(ChatGLM)等
- Embedding模型。在知識(shí)庫(kù)中,將分段過(guò)的文檔做Embedding用的是該類(lèi)型的模型。在使用了知識(shí)庫(kù)的應(yīng)用中,將用戶(hù)的提問(wèn)做Embedding處理也是用的該類(lèi)型的模型。已支持的Embedding模型供應(yīng)商:OpenAI、ZHIPU(ChatGLM)、Jina AI(Jina Embeddings)、Rerank模型等。
- Rerank模型:用于增強(qiáng)檢索能力,改善LLM的搜索結(jié)果。已支持的 Rerank 模型供應(yīng)商:Cohere、Jina AI(Jina Reranker)等
- 語(yǔ)音轉(zhuǎn)文字模型。將對(duì)話型應(yīng)用中,將語(yǔ)音轉(zhuǎn)文字用的是該類(lèi)型的模型。已支持的語(yǔ)音轉(zhuǎn)文字模型供應(yīng)商:OpenAI等
1)在設(shè)置中添加大模型,本地部署選擇ollama
圖片
2)選擇Ollama,添加本地部署的DeepSeek模型

注:Ollama默認(rèn)綁定到127.0.0.1:11434,需通過(guò)環(huán)境變量OLLAMA_HOST修改監(jiān)聽(tīng)地址:打開(kāi)系統(tǒng)設(shè)置 → 搜索并進(jìn)入編輯賬戶(hù)環(huán)境變量。在用戶(hù)變量中新建或修改變量:
- 變量名:OLLAMA_HOST
- 變量值:xx.xx.xx.xx:11434
3)配置Embedding模型
圖片
查看模型列表
圖片
3.3.2 創(chuàng)建知識(shí)庫(kù)
1)在DiFy平臺(tái)創(chuàng)建知識(shí)庫(kù)

2)導(dǎo)入文件,定義切分規(guī)則和模型
圖片
3)配置Embedding模型
圖片
4)查看導(dǎo)入的文件詳情
圖片
3.3.3 創(chuàng)建智能體應(yīng)用
1)在DiFy平臺(tái)創(chuàng)建工作流并運(yùn)行

2)運(yùn)行智能體,輸出結(jié)果

DiFy平臺(tái)工具集相對(duì)還是少了一些,有些第三方工具調(diào)用比如飛書(shū)文檔需要額外授權(quán),體驗(yàn)上也會(huì)差一些。
參考資料:
































