手把手教你基于 FastGPT 搭建个人知识库

前言 大家好,我是潇潇雨声。我发现在使用 GPT 时,尽管它能够生成一些小红书文案和日志,但内容常常显得空洞缺乏深度。今天我想分享一个解决这个问题的方法,那就是基于开源项目 FastGPT[1]

我们可以通过向 GPT 提供一些有针对性的资料,然后让 AI 根据这些文档进行交互式对话,回答我们的问题。虽然回答的质量可能不会达到极高水平,但至少可以提高一定的质量下限。这就有点像使用 GPT 进行有针对性的训练。

接下来,我将带你安装并使用 FastGPT。

FastGPT

官方简介

FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景!

知识库核心流程图

一,安装 FastGPT

  1. 安装 Docker

如果没有安装 Docker 可以参考我之前写的 手把手教你在 windows 上安装 Dcoker

  1. 创建配置文件
  • 创建 docker-compose.yml
# 非 host 版本, 不使用本机代理
# (不懂 Docker 的,只需要关心 OPENAI_BASE_URL 和 CHAT_API_KEY 即可!)
version: '3.3'
services:
  pg:
    image: ankane/pgvector:v0.5.0 # git
    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.5.0 # 阿里云
    container_name: pg
    restart: always
    ports: # 生产环境建议不要暴露
      - 5432:5432
    networks:
      - fastgpt
    environment:
      # 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果
      - 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: # 生产环境建议不要暴露
      - 27017:27017
    networks:
      - fastgpt
    environment:
      # 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果
      - MONGO_INITDB_ROOT_USERNAME=username
      - MONGO_INITDB_ROOT_PASSWORD=password
    volumes:
      - ./mongo/data:/data/db
  fastgpt:
    container_name: fastgpt
    image: ghcr.io/labring/fastgpt:latest # git
    # 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=1234
      # 中转地址,如果是用官方号,不需要管。务必加 /v1
      - OPENAI_BASE_URL=https://api.openai.com/v1
      - CHAT_API_KEY=替换成你的OPENAI-KEY
      - 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:

「注意:需要将 CHAT_API_KEY 的值换成自己 openai key。」

  • 再创建 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",
        "name""GPT35",
        "maxContext"4000,
        "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
      }
    ],
    "ReRankModels": [],
    "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
    }
  }

  1. 启动

在 docker-compose.yml 同级目录下执行

  1. 拉取镜像
docker-compose pull
  1. 运行容器
docker-compose up -d

二,使用 FastGPT

  1. 访问

浏览器通过http://localhost:3000/进行访问

alt
alt

登录用户名为 root,密码为 docker-compose.yml 环境变量里设置的 DEFAULT ROOT PSW,默认是 1234.

  1. 新建知识库

新建一个知识库,这里我是专门的存储酷壳网站上的文章,所以就命名为酷壳。

alt
  1. 导入文档

通过文件导入已经下载好的文章

alt
alt
alt

确认后就开始将当前数据转化为向量数据

这两篇文章字数可能破完了,完全导入好,所花费的时间可能会有半个小时乃至一个小时.....,由于文本限制问题,按照固定字数拆分若干个数据集

alt

这是已经拆分好的,还有 5 个在排队,先测试一下。

  1. 使用知识库

新建一个应用

alt
  1. 绑定刚刚的知识库
alt
alt
  1. 开始对话,效果展示如下:
alt

这里有个小问题,

alt

翻译如下:您已经超过了每分钟请求的限制次数。对于您的账户(org-FPtm4iWkzMglOZn9J06QAK6F)中的 text-embedding-ada-002 模型来说,每分钟的请求限制是 3 次,您已经使用了 3 次请求,但是您又发送了 1 次请求,所以您需要等待 20 秒后再试。您可以访问https://platform.openai.com/account/rate-limits了解更多信息。如果您在账户https://platform.openai.com/account/billing中添加了付款方式,您可以增加您的请求限制。

粗略的理解,一分钟只能处理三次请求,可以尝试设置多个 key 进行轮询,来解决上述的问题。

如果觉得我的分享对您有帮助,请关注我。创作不易,您的三连就是对我最大的支持。

alt

Reference

[1]

FastGPT: https://github.com/labring/FastGPT

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/263921.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大数据技术基本功-数据采集

产品指南|DataScale自定义采集器功能介绍产品指南|开发 DataScale Collector​​​​​​​

鸿蒙和各大厂合作,是不是要火起来

今年9月底,在华为秋季全场景新品发布会上,华为常务董事、终端BG CEO余承东宣布,鸿蒙原生应用全面启动,HarmonyOS NEXT开发者预览版将在2024年第一季度开放。 近日,腾讯、阿里、美团、网易,外包大厂中软国际…

从零开始创建GPTs 人人都可以编写自己的ChatGPT产品

在这个人工智能迅猛发展的时代,GPT(生成式预训练变换器)已经成为一项令人兴奋的技术,它打开了创意和知识的新大门。无论你是一名编程新手、一位热爱探索的学生,还是对未来充满好奇的专业人士,GPTs都可以为你…

代码随想录算法训练营Day7 | 233.用栈实现队列、225.用队列实现栈

LeeCode 233 用栈实现队列 本题思路:使用两个栈来实现队列,应该怎么做呢?我们通过画图来分析下 入队列的时候,直接在 stackin 入出队列的时候,肯定是先出 1 ,此时把,stackin 中全部 弹出到 入到…

DBeaver连接hive

1.新建hive连接 其中主机填写hive所在节点地址,端口10000为默认,数据库名不填则是默认default数据库,用户名密码填写hadoop集群中能操作hdfs的用户和密码。 2.编辑驱动,驱动的jar包从安装的hive下的jdbc路径下获取,例…

【HarmonyOS开发】ArkTs使用Http封装

1、鸿蒙中如何进行网络请求 1.1 三方库请求 ohos/axios ohos/retrofit ohos/httpclient 1.2 鸿蒙原生请求 ohos.net.http 2、ArkTs请求模块ohos.net.http 本模块提供HTTP数据请求能力。应用可以通过HTTP发起一个数据请求,支持常见的GET、POST、OPTIONS、HEAD…

【电源专题】Buck电源上电震荡谁的错?

在文章:【电源专题】案例:Buck芯片上电瞬间波形震荡?从别的人案例中来学习软启参数中我们通过别人的文章了解到了Buck芯片上电瞬间波形震荡有几个方法可以解决,但主要还是围绕着软启动参数去学习。因为文章中无法知道编者所用的电源芯片和电路,所以无法进行分析。 最近我…

《每天一分钟学习C语言·七》指针、字节对齐等

1、 对于二维数组如a[3][4]可以当做有三个元素的一维数组,每个元素包含四个小元素。 2、 printf(“%-5d”, i); //负号表示左对齐,5d表示空五个光标的位置 3、 栈:先进后出,堆:先进先出 4、 (1&#xff…

零代码助力服装行业数字化转型

内容来自演讲:涂岳俊 | 广州市衣湛国际信息科技有限公司 | CEO 摘要 这篇文章讨论了为什么选择明道云零代码平台,以及它如何帮助服装企业解决各种问题。作者分享了自己的经验,并列举了一些成功的案例来证明零代码平台的优势。文章还提到了在…

分布式锁概述

一、概念 1、什么是分布式锁 我们知道传统进程内的多线程之间可以利用锁机制来实现它的同步,同时进程之间也可以互相通信,那我我们如果使用分布式服务的话,有应该怎么实现集群内多服务之间访问公共资源,并且确保它们不会出现问题…

RobotMaster学习——工序导入,参数设置,轨迹生成

目录 引出1.导入工序2.修改刀具其他刀具参数 3.进行工序分配4.设置TCP5.设置工作站6.工序整体导入配置7.进行计算 总结 引出 RobotMaster的操作流程,从导入工序到生产轨迹。 1.导入工序 2.修改刀具 要选择第七把刀具 其他刀具参数 第一把刀具 第二把刀具 第三把刀…

自制数据库空洞率清理工具-C版-01-EasyClean-V1.0(支持南大通用数据库Gbase8a)

目录 一、环境信息 二、简述 三、支持功能 四、空洞率 五、工具流程图 六、安装包下载地址 七、参数介绍 1、命令模板 2、命令样例 3、参数表格 八、安装步骤 1、配置环境变量 2、生效环境变量 3、检验动态链接是否正常 九、运行效果 一、环境信息 名称值CPUInt…

MySQL——内置函数

目录 一.日期函数 1.current_date() 2.current_time() 3.current_stamp() 4.date_add() 5.date_sub() 6.datediff 7.date 8.now 二.字符串函数 1.charset() 2.concat() 3.length() 4.replace 5.substring(str,postion,length) 6.instr(string,substr…

基于ssm+jsp二手车估值与销售网络平台源码和论文

随着信息化时代的到来,管理系统都趋向于智能化、系统化,二手车估值与销售网络平台也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化&#…

ansible-playbook的Temlates模块 tags模块 Roles模块

Temlates模块 jinja模板架构,通过模板可以实现向模板文件传参(python转义)把占位符参数传到配置文件中去,生产一个目标文本文件,传递变量到需要的配置文件当中 (web开发) nginx.conf.j2 早文件当中配置的是占位符(声明…

vivado 自动派生时钟

自动派生时钟 自动派生的时钟也称为自动生成的时钟。Vivado IDE自动在时钟修改块(CMB)的输出引脚上创建这些的约束,只要已经定义了相关的主时钟。在AMD 7系列设备系列中,CMB有: •MMCM*/PLL* •BUFR •相位器* 在…

Spring源码分析 @Autowired 是怎样完成注入的?究竟是byType还是byName亦两者皆有

1. 五种不同场景下 Autowired 的使用 第一种情况 上下文中只有一个同类型的bean 配置类 package org.example.bean;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class FruitCo…

过度加大SSD内部并发何尝不是一种伤害-part2

方案设计完了,如何验证效果如何呢?作者是这么做的。 第一步,选择模拟环境:PLAN方案在定制的FEMU(Flash Emulation Module)上实现,该模块支持TRIM和多流功能,具体参数如下&#xff1…

modbus_tcp的实现 through python.

0.引言 当前科技似乎处于加速发展期,各个模块都在快速迭代,迭代的速度会让既有的一些经验产生问题,在用python实现modbus_tcp协议时,网上流传的一些代码中import语句会出现问题。导致pymodbus模块用起来很不好用。 这个原因出在…

基于YOLOv8深度学习的智能玉米害虫检测识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…