1 功能
- 整体功能,想解决什么问题
- 官方说明:FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景!
- 个人体会:在不用编程的情况下,快速建立简单的本地知识库。
- 当前解决了什么问题,哪些问题解决不了
- 作者团队可能是觉得大模型本身太单薄了,希望通过结合其它工具,做一个中间层的方案,用大模型解决更多问题。
- 向下接入了多个大模型:GPT、Claude、Spark、ChatGLM 等;向上除了提供 很好用的 Web 工具,还提供了类似 OpenAI 的 API 供其它程序接入其功能,如:微信,飞书……;针对本地知识库,实现了数据的解析,存储,问答功能,并做了一些优化(评价本地知识库效果是一个非常复杂的问题,不在此讨论)。
- 提供了工作流 Flow,个人感觉对于想开箱即用的人来说有些复杂;对于深度使用者略显单薄。
- 计算 Embedding 以及答案的合成都需要连网使用。
- 提供哪些功能点,其中哪些是刚需
- 基本的与大模型聊天问答功能
- 本地知识库支持,虽然不是最先进最强大的技术栈,但对于中小规模的数据,个人数据是可用的,这是此项目的核心功能。
- 支持手动录入知识,以回答重要的问题。
- 包装一些常用功能,比如翻译,将一些定制 prompt 作成”应用“,以提供特定类型的服务。官方文档中展示了一些典型的使用场景,很有启发性。
- 界面清晰,舒服。
- 用户使用难度,操作逻辑是否过于复杂
- 最简单的方法就是直接用作者在官网部署的服务,没有难度。
- 本地部署,尽管没有现成的文档,但有脚本 run.sh,可以启动多个 docker,也很好用。
- 在我见过的 RAG Web 项目中,FastAI 界面是做的最好的。
- 使用场景
- 用 FastGPT 给单位的文档做个知识库,考虑到部署和学习成本,可能是目前性价比最高的方案。
2 技术栈
-
技术栈是什么:
- 工具
- NextJs + TypeScript + ChakraUI
- 代码量大部分由 TypeScript 编写。
- 数据库
- Postgres (Vector 版本:ankane/pgvector:v0.5.0)存储向量
- MongoDB 用于存取其他数据,比如用户知识库的文本部分,聊天记录,不定长,可能被扩展的数据,便于文本检索。
- 其它
- python:做了一些文档转换内容处理的工作,代码很少,几乎没用到。
- go 语言:实现文档服务 DocSite
- 工具
-
现有底层工具消化了哪些常用功能
- 我对 JS 不太熟,看不太出来
-
代码分析(使用 cloc 工具统计)
- github 项目下载内容 183M,主要为.git 和 DocSite
- 代码主要由 TypeScript 编写,约 4.5W 行(不计生成的 JS 代码)
- 核心代码在:FastGPT/projects/app/src
3 商业模式
- 用户可以使用 FastGPT源码 部署自己的工具,也可以在其官网使用现成的线上版服务。使用 openai 的服务时,费用同 openai;同时,还提供了一些其它的收费服务。为了合规,把名字的名字换了一下,一看价格就明白了。
- 同时出售商业版,收费见:https://doc.fastgpt.in/docs/pricing/。
- 开源产品,以服务方式提供,对用户来说也比较方便经济。
4 使用方法
- 安装
cd FastGPT/files/deploy/fastgpt
配置 docker-compose.yml:如果已经启了一些本地服务,可能发生端口冲突,需要调整设置;另外,还要设置数据库的用户名密码,API_KEY 等。
. run.sh
这里使用 docker-compose 启动了多个 docker 容器,非常方便。
-
使用
在登录界面用 root/1234 登录(密码可在 docker-compose.yml 中设置)
5 个人体会
5.1 整体评价
FastGPT 是一个产品导向的工具,相对于其它 github 上的试验型工具,更像是一个完整的产品。在业务分析,使用场景,交互设计,界面设计,易用性方面都很优秀。
另外,它提供 API 的方式与其它工具配合使用。利用 API_KEY 的方式,无缝替换 ChatGPT,从而引入本地知识和自定义问题及答案。对于二创,前端代码非常多,直接拿来也不好改,不如直接调用其 API。
5.2 使用感受
作为最终用户,使用感受如下:
当组织或者个人有万千上万个文档,不太可能通过界面一个一个导入,需要使用 API 构建知识库,
可以针对某一个知识库问答,它不仅给出答案,还给显示内容来源,可看到引用的原文,让答案有据可查,又不仅仅是搜索,我觉得这个真的是刚需。
在产品设计方面,也看到了作者对产品功能的理解和对解决方案的设计。
可以把知识分为三层:
- 手工录入的重要知识(常为问题答案对)
- 从本地文档中获取的知识
- 通用知识(LLM 自带)
6 参考
- 介绍视频
- 技术文档
- 部署方法视频(这个视频好像录的比较早,当前版本更为易用)
- *3 分钟把高质量 AI 知识库 FastGPT 装进企业微信