三分鐘快速構(gòu)建大語(yǔ)言模型AI知識(shí)庫(kù)
FastGPT
FastGPT 是一個(gè)基于 LLM 大語(yǔ)言模型的知識(shí)庫(kù)問(wèn)答系統(tǒng),提供開(kāi)箱即用的數(shù)據(jù)處理、模型調(diào)用等能力。同時(shí)可以通過(guò) Flow 可視化進(jìn)行工作流編排,從而實(shí)現(xiàn)復(fù)雜的問(wèn)答場(chǎng)景!
知識(shí)庫(kù)核心流程圖
圖片
圖片來(lái)源:https://doc.fastgpt.in
私有化部署
這里使用 Docker Compose 快速進(jìn)行 FastGPT 私有化部署
1、安裝 Docker
# 安裝 Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl enable --now docker
# 安裝 docker-compose
curl -L https://github.com/docker/compose/releases/download/2.20.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
# 驗(yàn)證安裝
docker -v
docker-compose -v
如果已經(jīng)安裝,直接跳過(guò)就是
2、容器編排
創(chuàng)建一個(gè)本地目錄并且進(jìn)入該目錄
mkdir tinywan-fastgpt
cd tinywan-fastgpt
以上創(chuàng)建目錄路徑為/d/Tinywan/GPT/tinywan-fastgpt
docker-compose.yml 配置文件
version: '3.3'
services:
pg:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.5.0 # 阿里云
container_name: pg
restart: always
ports: # 生產(chǎn)環(huán)境建議不要暴露
- 5432:5432
networks:
- fastgpt
environment:
# 這里的配置只有首次運(yùn)行生效。修改后,重啟鏡像是不會(huì)生效的。需要把持久化數(shù)據(jù)刪除再重啟,才有效果
- POSTGRES_USER=username
- POSTGRES_PASSWORD=password
- POSTGRES_DB=postgres
volumes:
- ./pg/data:/var/lib/postgresql/data
mongo:
image: mongo:5.0.18
# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云
container_name: mongo
restart: always
ports: # 生產(chǎn)環(huán)境建議不要暴露
- 27017:27017
networks:
- fastgpt
environment:
# 這里的配置只有首次運(yùn)行生效。修改后,重啟鏡像是不會(huì)生效的。需要把持久化數(shù)據(jù)刪除再重啟,才有效果
- MONGO_INITDB_ROOT_USERNAME=username
- MONGO_INITDB_ROOT_PASSWORD=password
volumes:
- ./mongo/data:/data/db
fastgpt:
container_name: fastgpt
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:latest # 阿里云
ports:
- 3000:3000
networks:
- fastgpt
depends_on:
- mongo
- pg
restart: always
environment:
# root 密碼,用戶(hù)名為: root
- DEFAULT_ROOT_PSW=123465
# 中轉(zhuǎn)地址,如果是用官方號(hào),不需要管
- OPENAI_BASE_URL=https://api.openai.com/v1
- CHAT_API_KEY=sb-xxx
- DB_MAX_LINK=5 # database max link
- TOKEN_KEY=any
- ROOT_KEY=root_key
- FILE_TOKEN_KEY=filetoken
# mongo 配置,不需要改. 如果連不上,可能需要去掉 ?authSource=admin
- MONGODB_URI=mongodb://username:password@mongo:27017/fastgpt?authSource=admin
# pg配置. 不需要改
- PG_URL=postgresql://username:password@pg:5432/postgres
volumes:
- ./config.json:/app/data/config.json
networks:
fastgpt:
注:請(qǐng)?zhí)顚?xiě)CHAT_API_KEY對(duì)應(yīng)的值。
config.json 配置文件
{
"SystemParams": {
"pluginBaseUrl": "",
"vectorMaxProcess": 15,
"qaMaxProcess": 15,
"pgHNSWEfSearch": 100
},
"ChatModels": [
{
"model": "gpt-3.5-turbo-1106",
"name": "GPT35-1106",
"price": 0,
"maxContext": 16000,
"maxResponse": 4000,
"quoteMaxToken": 2000,
"maxTemperature": 1.2,
"censor": false,
"vision": false,
"defaultSystemChatPrompt": ""
},
{
"model": "gpt-3.5-turbo-16k",
"name": "GPT35-16k",
"maxContext": 16000,
"maxResponse": 16000,
"price": 0,
"quoteMaxToken": 8000,
"maxTemperature": 1.2,
"censor": false,
"vision": false,
"defaultSystemChatPrompt": ""
},
{
"model": "gpt-4",
"name": "GPT4-8k",
"maxContext": 8000,
"maxResponse": 8000,
"price": 0,
"quoteMaxToken": 4000,
"maxTemperature": 1.2,
"censor": false,
"vision": false,
"defaultSystemChatPrompt": ""
},
{
"model": "gpt-4-vision-preview",
"name": "GPT4-Vision",
"maxContext": 128000,
"maxResponse": 4000,
"price": 0,
"quoteMaxToken": 100000,
"maxTemperature": 1.2,
"censor": false,
"vision": true,
"defaultSystemChatPrompt": ""
}
],
"QAModels": [
{
"model": "gpt-3.5-turbo-16k",
"name": "GPT35-16k",
"maxContext": 16000,
"maxResponse": 16000,
"price": 0
}
],
"CQModels": [
{
"model": "gpt-3.5-turbo-1106",
"name": "GPT35-1106",
"maxContext": 16000,
"maxResponse": 4000,
"price": 0,
"functionCall": true,
"functionPrompt": ""
},
{
"model": "gpt-4",
"name": "GPT4-8k",
"maxContext": 8000,
"maxResponse": 8000,
"price": 0,
"functionCall": true,
"functionPrompt": ""
}
],
"ExtractModels": [
{
"model": "gpt-3.5-turbo-1106",
"name": "GPT35-1106",
"maxContext": 16000,
"maxResponse": 4000,
"price": 0,
"functionCall": true,
"functionPrompt": ""
}
],
"QGModels": [
{
"model": "gpt-3.5-turbo-1106",
"name": "GPT35-1106",
"maxContext": 1600,
"maxResponse": 4000,
"price": 0
}
],
"VectorModels": [
{
"model": "text-embedding-ada-002",
"name": "Embedding-2",
"price": 0.2,
"defaultToken": 700,
"maxToken": 3000
}
],
"AudioSpeechModels": [
{
"model": "tts-1",
"name": "OpenAI TTS1",
"price": 0,
"voices": [
{
"label": "Alloy",
"value": "alloy",
"bufferId": "openai-Alloy"
},
{
"label": "Echo",
"value": "echo",
"bufferId": "openai-Echo"
},
{
"label": "Fable",
"value": "fable",
"bufferId": "openai-Fable"
},
{
"label": "Onyx",
"value": "onyx",
"bufferId": "openai-Onyx"
},
{
"label": "Nova",
"value": "nova",
"bufferId": "openai-Nova"
},
{
"label": "Shimmer",
"value": "shimmer",
"bufferId": "openai-Shimmer"
}
]
}
],
"WhisperModel": {
"model": "whisper-1",
"name": "Whisper1",
"price": 0
}
}
3、啟動(dòng)容器
通過(guò)命令docker-compose pull 獲取更新版本的鏡像
圖片
通過(guò)命令docker-compose up -d 啟動(dòng)容器
圖片
查看容器啟動(dòng)情況
圖片
4、訪(fǎng)問(wèn) FastGPT
目前可以通過(guò) ip:3000 直接訪(fǎng)問(wèn)。這里是本地部署,所以直接通過(guò) http://127.0.0.1:3000 直接訪(fǎng)問(wèn)即可。
部署成功訪(fǎng)問(wèn)頁(yè)面如下所示
圖片
登錄用戶(hù)名為 root,密碼為docker-compose.yml環(huán)境變量里設(shè)置的 DEFAULT_ROOT_PSW。
登錄成功訪(fǎng)問(wèn)頁(yè)面如下所示
圖片
構(gòu)建知識(shí)庫(kù)
創(chuàng)建知識(shí)庫(kù)
成功登錄后,新建一個(gè)知識(shí)庫(kù),取名開(kāi)源技術(shù)小棧。
圖片
通過(guò)文件將個(gè)人經(jīng)歷導(dǎo)入到知識(shí)庫(kù)中
【新建/導(dǎo)入】【文件導(dǎo)入】
圖片
確認(rèn)后就開(kāi)始將當(dāng)前數(shù)據(jù)轉(zhuǎn)化為向量數(shù)據(jù)
圖片
選擇文件導(dǎo)入時(shí),可以選擇直接分段方案。直接分段會(huì)利用句子分詞器對(duì)文本進(jìn)行一定長(zhǎng)度拆分,最終分割中多組的q。如果使用了直接分段方案,我們建議在應(yīng)用設(shè)置引用提示詞時(shí),使用通用模板即可,無(wú)需選擇問(wèn)答模板。
導(dǎo)入成功
圖片
至此,個(gè)人知識(shí)庫(kù)已經(jīng)建好了。嘗試進(jìn)行測(cè)試問(wèn)答
圖片
鏈接訓(xùn)練數(shù)據(jù)
https://mp.weixin.qq.com/s/1GD8eKrxJWXdgS3OKR4VHQ
https://mp.weixin.qq.com/s/BFdfDXHavZ_jZwVaFq2duQ
https://mp.weixin.qq.com/s/mNhMCzUtLUKrIzqSVa-qZA
https://mp.weixin.qq.com/s/n4n-0UCWJW9u2N1ca3HisQ
https://mp.weixin.qq.com/s/WXAPxHYteX7h1Hu73KEnFQ
https://mp.weixin.qq.com/s/chI8IbenaMFejvS7blLsBw
圖片
等待所有數(shù)據(jù)準(zhǔn)備就緒
圖片
使用知識(shí)庫(kù)
創(chuàng)建應(yīng)用
使用知識(shí)庫(kù)必須要?jiǎng)?chuàng)建一個(gè)應(yīng)用
圖片
關(guān)聯(lián)知識(shí)庫(kù)
設(shè)置了開(kāi)場(chǎng)白并且選擇綁定對(duì)應(yīng)知識(shí)庫(kù)開(kāi)源技術(shù)小棧
圖片
點(diǎn)擊保存預(yù)留后,可以直接在右邊調(diào)試預(yù)覽框預(yù)覽對(duì)話(huà)進(jìn)行文檔內(nèi)容測(cè)試。
開(kāi)始對(duì)話(huà)
圖片
圖片
點(diǎn)擊鏈接查看知識(shí)庫(kù)引用
圖片
打開(kāi)對(duì)應(yīng)鏈接可以直接跳轉(zhuǎn)到微信公眾號(hào)文章地址
總結(jié)
構(gòu)建私有數(shù)據(jù)訓(xùn)練服務(wù),針對(duì)問(wèn)題提供精準(zhǔn)回答??梢酝ㄟ^(guò)AI服務(wù)訓(xùn)練自有數(shù)據(jù),形成AI知識(shí)庫(kù),然后創(chuàng)建不同的機(jī)器人針對(duì)用戶(hù)問(wèn)題提供精準(zhǔn)回答。并且可以通過(guò)API接口很方便整合到自己的產(chǎn)品服務(wù)中。