{card-describe title="前言"}
失踪人口回归啦!最近chatpgt火出了圈,逛了逛Github,发现一个有趣的项目,可以搭建一个私人的ChatGPT的模型,搜索了下国内社区,没有相应的教程,就把自己摸索的结果编成文章,供各位参考。
{/card-describe}
{mtitle title="正文开始"/}
{lamp/}
设备配置
{message type="warning" content="私人ChatGPT需要在本地训练模型,请保证个人设备性能足够,跑崩了本人不负责啊"/}
- 型号:Apple Macbook Pro
- 芯片:M1 Pro
- 内存:16G
- Python版本:3.11
{dotted startColor="#ff6c6c" endColor="#1989fa"/}
项目地址
{anote icon="fa-github" href="https://github.com/jyan1011/privateGPT" type="success" content="jyan1011/privateGPT"/}
{dotted startColor="#ff6c6c" endColor="#1989fa"/}
Python环境安装
{tabs}
{tabs-pane label="通过homebrew安装"}
$ brew update
$ brew install python@3.11{/tabs-pane}
{tabs-pane label="通过安装包安装"}
{abtn icon="iconfont icon-python" color="#1e415e" href="https://www.python.org/downloads/" radius="10px" content="Python3下载"/}
{/tabs-pane}
{/tabs}
{dotted startColor="#ff6c6c" endColor="#1989fa"/}
下载项目
使用
git clone命令:$ git clone https://github.com/jyan1011/privateGPT.git- 下载Zip包并解压:{anote icon="fa-github" href="https://github.com/jyan1011/privateGPT/archive/refs/heads/main.zip" type="secondary" content="点击下载"/}
{dotted startColor="#ff6c6c" endColor="#1989fa"/}
安装项目依赖
- 进入项目目录,并找到
requirements.txt文件 使用pip命令安装依赖
$ pip3 install -r requirements.txt输出以下内容,依赖安装成功
Successfully installed MarkupSafe-2.1.2 PyYAML-6.0 SQLAlchemy-2.0.13 aiohttp-3.8.4 aiosignal-1.3.1 ...(以下内容省略)
{dotted startColor="#ff6c6c" endColor="#1989fa"/}
下载语言模型
LLM:默认为ggml-gpt4all-j-v1.3-groovy.bin 。如果您喜欢不同的GPT4All-J兼容模型,只需下载后在您的文件中引用即可。
{dotted startColor="#ff6c6c" endColor="#1989fa"/}
编辑配置文件
- 重命名项目目录下的
example.env文件名为.env - 编辑
.env文件
{card-describe title="参数说明"}
MODEL_TYPE: supports LlamaCpp or GPT4All
PERSIST_DIRECTORY: is the folder you want your vectorstore in
MODEL_PATH: Path to your GPT4All or LlamaCpp supported LLM
MODEL_N_CTX: Maximum token limit for the LLM model
EMBEDDINGS_MODEL_NAME: SentenceTransformers embeddings model name (see https://www.sbert.net/docs/pretrained_models.html)
{/card-describe}
{alert type="warning"}
注意:由于加载嵌入的方式,第一次运行脚本时,需要互联网连接才能下载嵌入模型本身。
{/alert}
{dotted startColor="#ff6c6c" endColor="#1989fa"/}
引入测试集
{callout color="#4d6def"}
项目自带一个默认的测试集:state_of_the_union.txt
{/callout}
- 将所有测试集文件放入目录
source_documents中 支持的文件类型包括:
.csv:CSV表格文件.docx:Microsoft Word.doc:Microsoft Word.enex:印象笔记.eml:电子邮件.epub:电子书epub格式.html:HTML网页文件.md:markdown文档.msg:Outlook文件.odt:开放文本文档.pdf:便携式文档(PDF)pptx:PPT幻灯片文档.ppt:幻灯片文档.txt:文本文件 (UTF-8编码)
运行以下命令以引入所有数据:
$ python ingest.py输出应如下所示:
Creating new vectorstore Loading documents from source_documents Loading new documents: 100%|██████████████████████| 1/1 [00:01<00:00, 1.73s/it] Loaded 1 new documents from source_documents Split into 90 chunks of text (max. 500 tokens each) Creating embeddings. May take some minutes... Using embedded DuckDB with persistence: data will be stored in: db Ingestion complete! You can now run privateGPT.py to query your documents
{callout color="#4d6def"}
执行导入后程序将创建一个包含本地向量存储的文件夹。每个测试集导入可能需要20-30秒的时间(具体取决于文档的大小)您可以根据需要引入任意数量的文档,所有文档都将累积在本地嵌入数据库中,如果需要清空数据库请删除db文件夹
{/callout}
{alert type="warning"}
注意:在导入过程中,数据仅会保存在您的本地环境中。您可以在没有互联网连接的情况下进行导入,但首次运行采集脚本时需要下载嵌入模型,此时仍需要互联网连接。
{/alert}
{dotted startColor="#ff6c6c" endColor="#1989fa"/}
开始提问
要开始问题,请运行如下命令:
$ python privateGPT.py并等待脚本需要您的输入。
> Enter a query:输入您的问题并按回车键后,需要等待 20-30 秒(具体取决于您的计算机性能),而LLM模型会根据您的提问开始准备答案。完成后,系统将会将打印回答并同时打印它回答所引用的文档中的4个来源。然后,您可以提出另一个问题而无需重新运行脚本,只需再次等待输入提示即可。
{alert type="warning"}
注意:您可以关闭互联网连接,脚本仍然有效。没有数据会离开您的本地环境。
{/alert}
如果需要关闭脚本,则在输入问题时输入exit并回车即可。
{dotted startColor="#ff6c6c" endColor="#1989fa"/}
拓展
该脚本还支持可选的命令行参数来修改其行为。您可以通过在终端中运行命令来查看这些参数的完整列表。
$ python privateGPT.py --help{lamp/}
{mtitle title="正文结束"/}
5 条评论
大师
真棒
谢谢
这是新版评论系统的测试
我回来啦