FastGPT:利用大模型重新定义传统知识库

引言

传统知识库的痛点

传统知识库广泛应用于企业文档管理、客户支持等场景,但随着信息量和复杂度的增加,存在以下显著问题:

  • 数据难整合: 结构化与非结构化数据分散,更新维护成本高。
  • 检索不精准: 依赖关键词匹配,难以理解语义,导致检索结果不相关或无效。
  • 用户体验差: 操作繁琐、学习曲线陡峭,缺乏智能和个性化支持。

AI时代对知识库需求

在信息爆炸和数字化转型背景下,企业需要更加智能的知识库。结合AI大模型的知识库具备以下优势:

  • 语义级检索: 通过语义理解,提供精准的查询结果。
  • 智能交互: 支持自然语言对话,用户体验更佳。
  • 自动化维护: 实现数据的自动整合与更新,降低维护成本。

在大模型的加持下,让以上问题有了新的解法,今天我们来介绍FastGPT如何利用AI大模型重新定义传统知识库。

01.

FastGPT知识库工作原理

01 FastGPT简介

FastGPT是一个基于大语言模型(LLM)的智能化平台,擅长理解和处理自然语言。它通过深度学习技术,可以从各种数据源中自动提取和整合信息,生成语义丰富的知识库,并实现智能化的响应和检索。

02 FastGPT知识库工作原理

图片

  1. 数据预处理:将文本拆分成更小的片段,比如:句子、段落。

  2. 文本向量化:利用大模型生成语义高维向量。

  3. 索引构建:将生成的语义向量构建成索引,通常包括向量索引和倒排索引。索引有助于快速检索相关片段,提高响应速度。

  4. 检索与匹配:当用户查询时,查询内容也会被向量化,并在索引中匹配相关的语义向量

  5. AI对话:利用大模型的上下文理解能力,理解用户需求,生成自然回答。

02.

搭建FastGPT知识库步骤

我们先来看一张FastGPT的部署架构图,主要包括FastGPT、MongoDB、PostgreSQL、OneAPI:

图片

FastGPT有多个版本,分别为PgVector、Milvus、zilliz cloud,分别对应不同的配置要求,如下图:

图片

文本仅作演示,因此选择PgVector版本

前置工作

Step1 确保网络环境

如果使用OpenAI等国外模型接口,请确保可以正常访问,否则会报错:Connection error

Step2 准备 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/v2.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
# 如失效,自行百度~

开始部署

Step1 下载 docker-compose.yml

所有 docker-compose.yml 配置文件中 MongoDB 为 5.x,需要用到AVX指令集,部分 CPU 不支持,需手动更改其镜像版本为 4.4.24(需要自己在docker hub下载,阿里云镜像没做备份)

Linux 快速脚本

mkdir fastgpt
cd fastgpt
curl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json# pgvector 版本(测试推荐,简单快捷)
curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/files/docker/docker-compose-pgvector.yml
# milvus 版本
# curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/files/docker/docker-compose-milvus.yml
# zilliz 版本
# curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/files/docker/docker-compose-zilliz.yml

Step2 启动容器

在 docker-compose.yml 同级目录下执行。请确保docker-compose版本最好在2.17以上,否则可能无法执行自动化命令。

# 启动容器
docker-compose up -d
# 等待10s,OneAPI第一次总是要重启几次才能连上Mysql
sleep 10
# 重启一次oneapi(由于OneAPI的默认Key有点问题,不重启的话会提示找不到渠道,临时手动重启一次解决,等待作者修复)
docker restart oneapi

Step3 打开 OneAPI 添加模型

简单说明一下OneAPI的作用和原理,这里可以把OneAPI当作一个接口网关:

  • 默认情况下,FastGPT 只配置了 GPT 的模型,如果你需要接入其他模型,需要进行一些额外配置。
  • One API 是一个 OpenAI 接口管理 & 分发系统,可以通过标准的 OpenAI API 格式访问所有的大模型,开箱即用。
  • FastGPT 可以通过接入 One API 来实现对不同大模型的支持

通过 ip:3001 访问OneAPI,默认账号为 root 密码为 123456

在oneapi中添加合适的AI模型渠道,如果搭建服务器可以访问openai,则可以跳过此步骤.

图片

如果想使用国内大模型或者本地部署的模型,*下文会涉及*

Step4 访问 FastGPT

目前可以通过 ip:3000 直接访问(注意防火墙)。登录用户名为 root,密码为docker-compose.yml环境变量里设置的 DEFAULT_ROOT_PSW

图片

02.

接入国产大模型

如果无法科学上网,或者想接入国产大模型,甚至知识库可能设置一些敏感数据,想接入本地大模型的,可以参考本章节,这里以接入国产大模型为例,接入本地大模型类似。

FastGPT可以统一接入不同模型的核心原理,是借助了另一个开源项目的能力:oneapi

项目地址:https://github.com/songquanpeng/one-api

Step1 打开oneapi,添加渠道

图片

因为这里只是做演示用途,我们可以使用阿里灵积提供的免费开源大模型

模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models

我们这里使用 qwen1.5-1.8b-chat 作为文本处理模型,text-embedding-v2 作为索引模型(文本向量)

密钥获取地址:https://dashscope.console.aliyun.com/apiKey

图片

Step2 测试渠道

图片

添加 text-embedding-v2 渠道方法同理

Step3 修改FastGPT配置文件

测试通过后,我们需要修改FastGPT的配置文件,然后重启FastGPT

打开 fastgpt/config.json,在llmModels下添加 qwen1.5-1.8b-chat 的配置,注意 datasetProcess 需要设置为 true,如下图所示:

图片
在这里插入图片描述

在 vectorModels 标签下添加 text-embedding-v2

图片
在这里插入图片描述

重启FastGPT

docker-compose down
docker-compose up -d

Step4 创建知识库

打开FastGPT,点击左侧“知识库”,右上角点击 “创建”

图片

选择“通用知识库

图片

文本处理模型选择刚刚配置好的 qwen1.5-1.8b-chat,索引模型选择 text-embedding-v2

图片

创建完成后,进入知识库,点击创建/导入,这里以导入文本数据集为例

图片

这里准备了一个docx文本数据,这里描述了发生故障的时间和根因。实际操作中,可以使用企业内部沉淀的学习资料,故障复盘等、操作手册等

图片

导入时,选择“本地文件

图片

图片

数据处理方式

图片

关于训练模式的选择:

  • 直接分段:将文本按一定的规则进行分段处理后,转成可进行语义搜索的格式,适合绝大多数场景。不需要调用模型额外处理,成本低。
  • 增强处理(实验):通过子索引以及调用模型生成相关问题与摘要,来增加数据块的语义丰富度,更利于检索。需要消耗更多的存储空间和增加 AI 调用次数。
  • 问答拆分:根据一定规则,将文本拆成一段较大的段落,调用AI 为该段落生成问答对。有非常高的检索精度,但是会丢失很多内容细节。

上传数据

图片

图片

创建应用

点击工作台,创建“简易应用”

图片

填写应用名字,选择“知识库+对话引导”

图片

创建成功后,进入应用,修改AI模型:qwen1.5-1.8b-chat

图片

选择AI模型

可以根据需要调整模型温度、回复上限、和聊天记录数量

图片

关联知识库

图片

选择刚刚创建的知识库

图片

图片

发布应用

图片

问答测试

选择我们刚刚创建好的应用,就可以开始聊天了

图片

我们尝试提问某天发生了什么故障,以及根因是什么?

图片

可以看出,FastGPT根据知识库给出了准确答案,根据AI进行了扩展,问答下方有标注答案应用的出处

图片

点击回答下方的查看详情,可以看到知识库的工作流程。

首先,FastGPT会根据将用户提问的问题交给向量模型做向量化,然后匹配本地知识库索引

图片

结合上下文发送给AI大模型,生成自然语言的回答。

图片

这里再简单说明下使用文本向量作为索引模型的原因:

文本向量的原理

  1. 什么是文本向量:可以把文本向量想象成一个由数字组成的“坐标”,用来表示一句话或一段文字。比如,假设我们把每句话都放在一张巨大的地图上,这些数字就是地图上表示它们的位置。
  2. 为什么要这样做:当两句话的意思很相似时,它们的“坐标”会在地图上靠得很近;如果意思差很多,坐标就会离得远。这种方式能帮助计算机理解哪些句子在说同一件事。
  3. 如何生成这种“坐标”:生成这些坐标的方法有很多,比如通过机器学习,让计算机“读”大量的文本,学会用数字来表达语义信息。这样一来,计算机就能理解一些复杂的语言含义,而不仅仅是词语的表面意思。

FastGPT知识库使用文本向量的原因

  1. 更聪明的搜索:传统的搜索只能匹配关键词,如果用户的提问和知识库中的表达方式不完全一样,可能找不到正确的答案。而用文本向量,系统可以理解提问的真正意思,即使用词不同,也能找到相关的答案。
  2. 应对不同的说法:人们表达同一个意思的方式可能千差万别。文本向量能让系统识别这些不同的表达,从而更好地理解用户的问题。
  3. 更灵活:随着知识库中的信息增加,文本向量可以帮助系统更容易地找到新知识,保持回答的准确性,而不需要频繁更新或手动调整。

总的来说,FastGPT之所以用文本向量作为索引方式,是因为它可以更智能、更灵活地理解和处理用户的提问,让系统在搜索和回答问题时更加精准。

总结

本篇文章详细介绍了如何使用FastGPT搭建向量知识库。FastGPT充分利用了大模型的自然语言处理和对话能力,大幅提高了知识搜索的精确度,同时优化了用户的使用体验。

此外,文章还阐述了FastGPT知识库的工作原理。通过将文本转换为向量来建立索引,并借助大模型的上下文理解能力,系统能够为用户生成准确且符合语境的回答。

这种方法不仅提升了信息检索的效率,还显著改善了用户与知识库的交互方式。

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL分区表原理、案例的灵活应用

PostgreSQL分区表的灵活应用 通常情况下,扫描一个大表会很慢,需要扫描整张表格,如果能够把大表分拆成小表,查询数据的时猴,只扫描数据所属的小表,就能大大降低扫描时间,提高查询速度。 1、简介 PostgreS…

【前端开发必备小技巧】前端代码规范Vue篇

文章目录 🟢 前端代码规范🟢 一、前端代码规范Vue篇👉1、Vue编码基础👉1.1、组件规范👉1.2、模板中使用简单的表达式👉1.3、指令都使用缩写形式👉1.4、 标签顺序保持一致👉1.5、必须…

【Kotlin设计模式】Kotlin实现适配器模式

前言 适配器模式(Adapter Pattern)的核心将某个类的接口转换成客户端期望的另一个接口表示,使得客户端能够通过自己期望的接口与不兼容的类进行交互。适配器模式有三种实现方式,分别是类适配器模式、对象适配器模式、 接口适配器模式。 我们假设有个视频…

mysql 创建数据库和表,以及对表字段的操作

目录 前言1. 创建数据库2. 选择数据库3. 创建表4. 添加字段5. 修改字段6. 删除字段总结 前言 在MySQL中,你可以通过SQL语句来创建数据库、表,以及在表中添加、修改、删除字段。下面我将分别展示这些操作的示例。 1. 创建数据库 首先,你需要…

3D Tiles的4x4的仿射变换矩阵

前言 项目需要,使用Cesium技术,把STL格式模型加载进去。 一、格式转换 第一步,先将STL文件转换为glTF格式 第二步,将glTF文件转换为3D Tiles格式,使用Cesium ion 二、矩阵整体结构 这个矩阵是一个4x4的仿射变换矩阵&…

3154. 到达第 K 级台阶的方案数

3154. 到达第 K 级台阶的方案数 题目链接:3154. 到达第 K 级台阶的方案数 代码如下: //参考链接:https://leetcode.cn/problems/find-number-of-ways-to-reach-the-k-th-stair/solutions/2782792/liang-chong-fang-fa-ji-yi-hua-sou-suo-zu…

LeetCode题练习与总结:单词搜索Ⅱ--212

一、题目描述 给定一个 m x n 二维字符网格 board 和一个单词(字符串)列表 words, 返回所有二维网格上的单词 。 单词必须按照字母顺序,通过 相邻的单元格 内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻…

中智科学技术评价研究中心与中企数研究院实现全面合作

8月29日,中智科学技术评价研究中心与《中国企业报》集团数字化发展研究院在北京顺喜山庄成功举办“数字经济GBC生态系统管理平台”项目实施落地座谈会及研究院高层管理集训班,并签署了项目合作协议。此次合作标志着双方将在“数字中国发展战略”的大背景…

人工智能领域正经历模型规模变革,小型语言模型(SLM)崛起,挑战“规模至上”观念。

在人工智能领域,一场关于模型规模的深刻变革正在悄然发生。长久以来,科技巨头们热衷于庞大语言模型(LLM)的开发竞赛,但如今,小型语言模型(SLM)正以其独特的优势逐步崭露头角&#xf…

WordNet介绍——一个英语词汇数据库

传统语义知识库最常见的更新方法是依赖人工手动更新,使用这种更新方法的语义知识库包括最早的 WordNet、FrameNet和 ILD,以及包含丰富内容的 ConceptNet和 DBPedia。此类语义知识库的特点是以单词作为语义知识库的基本构成元素,以及使用预先设…

Linux安装Hadoop(单机版)详细教程

目录 一、JDK安装 1、下载JDK安装包 2、解压下载的JDK安装包 3、移动并重命名JDK包 4、配置Java环境变量 5、验证安装是否成功 二、Hadoop安装 1、下载Hadoop安装包 2、解压Hadoop安装包 3、配置Hadoop环境变量 4、修改配置文件 5、验证Hadoop是否安装成功 三&…

代码随想录——回文子串(Leetcode 647)

题目链接 我的题解(双指针) 思路: 当然,以下是对您提供的代码的解释: class Solution {public int countSubstrings(String s) {// 初始化回文子字符串的数量int count 0;// 遍历字符串的每个字符,使用…

sicp每日一题[1.38]

Exercise 1.38 In 1737, the Swiss mathematician Leonhard Euler published a memoir D e F r a c t i o n i b u s C o n t i n u i s De\ Fractionibus\ Continuis De Fractionibus Continuis, which included a continued fraction expansion for e − 2 e − 2 e−2, wh…

NCH DrawPad Pro for Mac/Win:强大的图像编辑处理软件

NCH DrawPad Pro for Mac/Win是一款功能全面的图像编辑和设计软件,专为Mac和Windows用户设计。它不仅适用于专业设计师,也深受业余爱好者和创意工作者的喜爱。DrawPad Pro凭借其丰富的绘图工具、强大的编辑功能和便捷的模板库,为用户提供了卓…

Android JNI 设置环境变量

setenv 在 Android JNI 中&#xff0c;setenv 是一个 C 标准库函数&#xff0c;用于设置环境变量。你可以通过 JNI 调用这个函数来设置或修改环境变量&#xff1a; #include <jni.h> #include <cstdlib> // For setenvextern "C" JNIEXPORT void JNICA…

OpenCV杂项图像变换(2)线性混合函数blendLinear()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 执行两个图像的线性混合&#xff1a; dst ( i , j ) weights1 ( i , j ) ∗ src1 ( i , j ) weights2 ( i , j ) ∗ src2 ( i , j ) \texttt{…

策略模式+模版方法模式+简单工厂模式混用优化代码复杂分支问题

说明 这篇博客是在复杂场景使用策略和工厂模式代替分支语句升级版&#xff0c;增加了模版方法模式。将支付类的公共逻辑抽取到模板类中&#xff0c;使整个支付逻辑更加灵活&#xff0c;进一步优化了代码结构&#xff0c;提升了软件的可维护性和可读性。 流程图如下 先看一遍流…

.NET 多版本兼容的精美 WinForm UI控件库

目录 前言 项目介绍 项目使用 项目源码 项目案例 项目组件 项目地址 前言 有粉丝小伙伴在后台留言咨询有没有WinForm 控件库推荐&#xff0c;现在就给安排上。 .NET 平台进行 Windows 应用程序开发的我们来说&#xff0c;找一个既美观又实用的 WinForm UI 控件库至关重…

STM32通过ADM3222完成UART转232通信电平转换

1、简介 单片机默认串口输出电平是UART信号,但是在实际项目中经常需要将其转换成232电平,此时就需要ADM3222芯片来完成电平的转换,下面对使用过程进行总结。 2、硬件电路 从上图中可以看到芯片需要对1、18进行配置才能进行工作,通过查阅手册可知,1引脚需要配置低电平,…

Java算法之循环排序(Cyclic Sort)

简介 循环排序&#xff08;Cyclic Sort&#xff09;是一种最小化移动次数的原地排序算法&#xff0c;它利用了数组元素的初始顺序。如果一个元素不在它最终应该在的位置&#xff0c;循环排序会找到这个元素应该在的位置&#xff0c;并将该位置的元素交换过来&#xff0c;直到这…