本地部署AI问答知识库
介绍
在当今信息爆炸的时代,我们常常需要处理大量的信息并且寻找特定的答案。AI问答知识库是一种基于人工智能技术的系统,旨在通过理解自然语言问题并从存储的知识库中提取相关信息,以准确、快速地回答用户的问题。这种技术不仅在搜索引擎、智能助手和客户服务领域有着广泛的应用,还在医疗、金融、教育等各个领域展现了巨大的潜力。
本地部署优势
虽然云端提供了便捷的AI服务,但有时在本地部署AI问答知识库可能更为合适。首先,本地部署可以提供更高的隐私和安全性,特别是对于一些敏感的数据或机密信息而言。其次,本地部署可以更好地控制资源和成本,避免了对云服务的依赖。此外,本地部署还可以提供更快的响应速度和更好的定制化,满足特定业务需求。
技术架构

技术选型
采用FastGpt来实现本地知识库
FastGPT 的能力与优势
FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景!
-
项目开源
FastGPT 遵循附加条件 Apache License 2.0 开源协议,你可以 Fork 之后进行二次开发和发布。FastGPT 社区版将保留核心功能,商业版仅在社区版基础上使用 API 的形式进行扩展,不影响学习使用。
-
独特的 QA 结构
针对客服问答场景设计的 QA 结构,提高在大量数据场景中的问答准确性。
-
可视化工作流
通过 Flow 模块展示了从问题输入到模型输出的完整流程,便于调试和设计复杂流程。
-
无限扩展
基于 API 进行扩展,无需修改 FastGPT 源码,也可快速接入现有的程序中。
-
便于调试
提供搜索测试、引用修改、完整对话预览等多种调试途径。
-
支持多种模型
支持 GPT、Claude、文心一言等多种 LLM 模型,未来也将支持自定义的向量模型。
功能清单
1. 专属 AI 客服
通过导入文档或已有问答对进行训练,让 AI 模型能根据你的文档以交互式对话方式回答问题。

2. 简单易用的可视化界面
FastGPT 采用直观的可视化界面设计,为各种应用场景提供了丰富实用的功能。通过简洁易懂的操作步骤,可以轻松完成 AI 客服的创建和训练流程。

3. 自动数据预处理
提供手动输入、直接分段、LLM 自动处理和 CSV 等多种数据导入途径,其中"直接分段"支持通过 PDF、WORD、Markdown 和 CSV 文档内容作为上下文。FastGPT 会自动对文本数据进行预处理、向量化和 QA 分割,节省手动训练时间,提升效能。

4. 工作流编排
基于 Flow 模块的工作流编排,可以帮助你设计更加复杂的问答流程。例如查询数据库、查询库存、预约实验室等。

5. 强大的 API 集成
FastGPT 对外的 API 接口对齐了 OpenAI 官方接口,可以直接接入现有的 GPT 应用,也可以轻松集成到企业微信、公众号、飞书等平台。

准备工作
服务器配置要求
服务器需要安装好docker环境
部署过程
部署架构图

部署说明
安装 Docker 和 docker-compose
bash
# 安装 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
# 如失效,自行百度~
给docker中的容器创建一个共用网络
docker network create my-network
安装m3e矢量模型
css
docker run -d --name m3e --network my-network -p 3030:6008 registry.cn-hangzhou.aliyuncs.com/fastgpt_docker/m3e-large-api
安装one-api
css
docker run --name one-api --network my-network -d --restart always -p 3200:3000 -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api
添加阿里通义千问模型和M3E模型
配置m3e矢量模型
默认密钥为:sk-aaabbbcccdddeeefffggghhhiiijjjkkk



安装FastGpt
1.创建目录并下载 docker-compose.yml
ruby
mkdir fastgpt
cd fastgpt
curl -O https://raw.githubusercontent.com/labring/FastGPT/main/files/deploy/fastgpt/docker-compose.yml
curl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json
2.修改 docker-compose.yml 的环境变量
修改docker-compose.yml
中的OPENAI_BASE_URL
(API 接口的地址,需要加/v1)和CHAT_API_KEY
(API 接口的凭证)。
使用 OneAPI 的话,OPENAI_BASE_URL=OneAPI访问地址/v1;CHAT_API_KEY=令牌

3.修改config.json 配置文本模型和矢量模型

3.启动容器
在 docker-compose.yml 同级目录下执行
bash
# 进入项目目录
cd 项目目录
# 启动容器
docker-compose pull
docker-compose up -d
4.初始化 Mongo 副本集(4.6.8以前可忽略)
php
# 查看 mongo 容器是否正常运行
docker ps
# 进入容器
docker exec -it mongo bash
# 连接数据库(这里要填Mongo的用户名和密码)
mongo -u myusername -p mypassword --authenticationDatabase admin
# 初始化副本集。如果需要外网访问,mongo:27017 可以改成 ip:27017。但是需要同时修改 FastGPT 连接的参数(MONGODB_URI=mongodb://myname:mypassword@mongo:27017/fastgpt?authSource=admin => MONGODB_URI=mongodb://myname:mypassword@ip:27017/fastgpt?authSource=admin)
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "mongo:27017" }
]
})
# 检查状态。如果提示 rs0 状态,则代表运行成功
rs.status()

使用案例
部署好后,访问http://localhost:3001/

1.添加知识库




2.创建应用




3.聊天测试

系统集成
fastgpt支持接入到其它系统里


参考文献:
one-api
M3E矢量模型
zhuanlan.zhihu.com/p/675271031
fastgpt