项目地址:https://github.com/imartinez/privateGPT
搭建完整的 RAG 系统,与 FastGPT 相比,界面比较简单。但是底层支持比较丰富,可用于知识库的完全本地部署,包含大模型和向量库。适用于保密级别比较高,或者完全不想使用收费模型和服务的情况。
PrivateGPT 提供了整体转换、入库、存储、匹配、合成答案,图形界面的解决方案,并提供图形界面用于检索操作。
RAG 所面对的问题,比如不够准确,多文档组合生成答案这些问题,需要进一步细化工具,似乎不能通过架构来解决。另外,由于多数本地部署的模型效果与 ChatGPT 差距比较大,这里只是看到了本地部署的架构和实现的可能性,部署后用户是否能接受其效果,还待验证。
核心功能是通过简单的操作,实现对本地文件的检索和问答,功能相对单一。
整体工具链使用了 poetry 构建,安装相对方便。但由于包含了深度学习库,肯定比一般项目复杂很多,安装时间长,占空间大。
Dockerfile 如果写得有一点问题(频繁更新,难免有错),就会面临至少部分内容重新下载打包的问题。另外,由于可插拔的选项比较多,还需要用户进一步设置。
相对简单的项目,代码主要在架构和调用其它工具,依赖 llama-index,并实现了扩展,如支持几个主流向量数库,后面可能接入更多模型和向量库。可作为一种集成的方案,或者支持各种组件插拔的 Hub 使用。
$ git clone https://github.com/imartinez/privateGPT
$ cd privateGPT
vi settings.yaml
建议第一次运行时将 llm 设置为 openai,整体调通后,再使用本地 llm 下载模型;否则太过复杂,不容易定位问题。
RUN addgroup worker
RUN adduser --ingroup worker --system worker
$ docker build . -f Dockerfile.local --build-arg HTTP_PROXY=xxx --build-arg HTTPS_PROXY=xxx -t private-gpt
如果直接执行失败,建议以 root 用户启动 bash 进行调试
$ docker run --rm -p 8080:8080 -e OPENAI_API_KEY=xxx -e HTTP_PROXY=xxx -e HTTPS_PROXY=xxx --entrypoint bash -u 0 -it private-gpt
$ .venv/bin/python -m private_gpt
在 localhost 8080 端口可打开 gradio 应用
gradio 主要用作 demo,实现功能比较简单,比如上传文档后无法删除,文本切块大小和模型的对应关系需要提前设置。