知识库Qanyting部署问题总结
说明
QAnything (Question and Answer based on Anything) 是致力于支持任意格式文件或数据库的本地知识库问答系统,可断网安装使用。
这是网易开源的一个项目,地址在:https://github.com/netease-youdao/QAnything
项目主页:https://qanything.ai/
这个项目涉及的中间件有:elasticsearc、etcd、minio、milvus、mysql
我在安装过程遇到一些错误,总结下错误和解决办法。
安装遇到的问题及解决办法
1. elasticsearch启动报错
failed to obtain node locks, tried [/usr/share/elasticsearch/data]; maybe these locations are not writable or multiple nodes were started on the same data path
问题分析
Elasticsearch 默认以用户 elasticsearch(UID 1000)运行。需要确保数据目录的所有权和权限正确。
解决方法:修改用户所有者和权限
sudo chown -R 1000:1000 volumes/es/data
sudo chmod -R 755 volumes/es/data
2. etcd目录权限问题
"msg":"check file permission","error":"directory "/etcd" exist, but the permission is "drwxrwxrwx". The recommended permission is "-rwx------" to prevent possible unprivileged access to the data"
问题分析
etcd对数据目录的权限要求比较严格,建议设置为只有所有者有读写执行权限,也就是700(drwx------)。而当前的权限是777,意味着所有用户都有完全访问权限,这可能导致安全隐患,所以etcd在启动时检查到这个不符合要求,就报错了。
解决办法:修改所有者和权限
docker stop dh-milvus-etcd-local
sudo chmod 700 ./volumes/etcd/ -R
sudo chown -R root:root ./volumes/etcd/
3. etcd租约(lease)问题
{"level":"warn","ts":"2025-03-18T01:50:40.877Z","caller":"etcdserver/server.go:1159","msg":"failed to revoke lease","lease-id":"694d94023955a43a","error":"etcdserver: request timed out"}
之前映射的etcd目录下有之前开发保存的文件,全部清空重建目录就好了
4. milvus启动失败
Connection Refused on port 53100 、failed to connect 172.21.0.6:53100
53100 is the port of rootcoord node. “Connection refused” indicated the rootcoord failed to initialize. A possible reason is the rootcoord could not connect to the Etcd service.
You can check the log of the rootcoord, there should be errors about etcd.
参考信息: https://github.com/milvus-io/milvus/discussions/34459
5.访问大模型报错
Error calling OpenAI API: temperature not in (0.0, 2.0]
解决方法:qanything_kernel/connector/llm/llm_for_openai_api.py中将temperature从0改为0.6
temperature: float = 0.6
另一个语义分割调用错误
在使用语义分割onnx模型遇到的问题
AttributeError: module 'onnxruntime' has no attribute 'get_device'
AttributeError: module 'onnxruntime' has no attribute 'SessionOptions'
错误原因:onnxruntime-gpu 1.20版本废弃了这个接口,下降为1.16就好了