Win11使用privateGPT进行多文档问答
目标还是用GPT实现局域网内文档内容快速查询。发现privateGPT似乎更接近这个目标。
使用privateGPT进行多文档问答 · ymcui/Chinese-LLaMA-Alpaca Wiki (github.com)
第一步安装llama-cpp-python这里就遇到问题了。
默认的命令是需要编译的,结果就报错了。查了一下,是我的VS太老了,需要VS2019以上版本,来支持cmake的std:c11。
VS2022已经装好了,才发现其实不用按文档上的命令去编译,直接从
Releases · abetlen/llama-cpp-python (github.com)
这里选择适合自己环境的whl,然后本地安装whl就可以了。privateGPT require里面要求llma-cpp-python版本是0.1.68,别选最新版本。
Step 1: 克隆目录并安装依赖包 通过了。
Step 2: 修改配置文件
这一步没什么问题,把MODEL_PATH换成了自己用的文件。这里我是直接把bin复制到了privateGPT目录下,所以只填了文件名。
Step 3: 分析本地文件
运行ingest.py报错了,no module named torch_optim
这里又掉坑里了,第一反应是pip install torch.optim,结果安装成功,怎么看路径也是对的,但是报错还是一样。
正确的方法是uninstall torch和torch.optim,按pytorch官方的安装命令pip3 install torch torchvision torchaudio装好后,就没有报错了。
这次ingest.py终于执行成功了。
再执行privateGPT.py,经过漫长的等待,终于看到了提示符Enter a query:
随便输入个问题,马上就报错了
File "D:\Program Files\Python310\lib\site-packages\llama_cpp\llama.py", line 822, in _create_completion
raise ValueError(
ValueError: Requested tokens (1321) exceed context window of 512
分析了下,是llamacpp的n_ctx使用了默认值512。修改privategpt.py中,llamacpp这一行,增加了n_ctx=model_n_ctx,顺手也加了n_threads参数。
终于能跑起来了!
输入问题后,就听风扇狂转了几分钟,然后答案出来了,虽然结果的效果不怎么样,但是会给出文档来源,可以自己去核对。还是不错的。
实测LangChain策略stuff效果不如refine,参考原文中修改成refine后结果相关性比较高。
更新个问题,解析docx格式文件时,提示
zipfile.BadZipFile: File is not a zip file
解决方法:
新建一个py文件,内容
import nltk
nltk.download('punkt')
nltk.download('averaged_perceptron_tagger')
执行后,下载了nltk的包就不再报错了。下载过程报错就多试几次吧,直到成功为止。