三分鐘快速構(gòu)建大語言模型AI知識庫
FastGPT
FastGPT 是一個基于 LLM 大語言模型的知識庫問答系統(tǒng),提供開箱即用的數(shù)據(jù)處理、模型調(diào)用等能力。同時可以通過 Flow 可視化進(jìn)行工作流編排,從而實現(xiàn)復(fù)雜的問答場景!
知識庫核心流程圖
圖片
圖片來源: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
# 驗證安裝
docker -v
docker-compose -v
如果已經(jīng)安裝,直接跳過就是
2、容器編排
創(chuàng)建一個本地目錄并且進(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)行生效。修改后,重啟鏡像是不會生效的。需要把持久化數(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)行生效。修改后,重啟鏡像是不會生效的。需要把持久化數(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 密碼,用戶名為: root
- DEFAULT_ROOT_PSW=123465
# 中轉(zhuǎn)地址,如果是用官方號,不需要管
- 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:
注:請?zhí)顚慍HAT_API_KEY對應(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、啟動容器
通過命令docker-compose pull 獲取更新版本的鏡像
圖片
通過命令docker-compose up -d 啟動容器
圖片
查看容器啟動情況
圖片
4、訪問 FastGPT
目前可以通過 ip:3000 直接訪問。這里是本地部署,所以直接通過 http://127.0.0.1:3000 直接訪問即可。
部署成功訪問頁面如下所示
圖片
登錄用戶名為 root,密碼為docker-compose.yml環(huán)境變量里設(shè)置的 DEFAULT_ROOT_PSW。
登錄成功訪問頁面如下所示
圖片
構(gòu)建知識庫
創(chuàng)建知識庫
成功登錄后,新建一個知識庫,取名開源技術(shù)小棧。
圖片
通過文件將個人經(jīng)歷導(dǎo)入到知識庫中
【新建/導(dǎo)入】【文件導(dǎo)入】
圖片
確認(rèn)后就開始將當(dāng)前數(shù)據(jù)轉(zhuǎn)化為向量數(shù)據(jù)
圖片
選擇文件導(dǎo)入時,可以選擇直接分段方案。直接分段會利用句子分詞器對文本進(jìn)行一定長度拆分,最終分割中多組的q。如果使用了直接分段方案,我們建議在應(yīng)用設(shè)置引用提示詞時,使用通用模板即可,無需選擇問答模板。
導(dǎo)入成功
圖片
至此,個人知識庫已經(jīng)建好了。嘗試進(jì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)備就緒
圖片
使用知識庫
創(chuàng)建應(yīng)用
使用知識庫必須要創(chuàng)建一個應(yīng)用
圖片
關(guān)聯(lián)知識庫
設(shè)置了開場白并且選擇綁定對應(yīng)知識庫開源技術(shù)小棧
圖片
點擊保存預(yù)留后,可以直接在右邊調(diào)試預(yù)覽框預(yù)覽對話進(jìn)行文檔內(nèi)容測試。
開始對話
圖片
圖片
點擊鏈接查看知識庫引用
圖片
打開對應(yīng)鏈接可以直接跳轉(zhuǎn)到微信公眾號文章地址
總結(jié)
構(gòu)建私有數(shù)據(jù)訓(xùn)練服務(wù),針對問題提供精準(zhǔn)回答。可以通過AI服務(wù)訓(xùn)練自有數(shù)據(jù),形成AI知識庫,然后創(chuàng)建不同的機(jī)器人針對用戶問題提供精準(zhǔn)回答。并且可以通過API接口很方便整合到自己的產(chǎn)品服務(wù)中。