本地智能文档问答系统 - QAnything

教育   2024-06-03 18:00   上海  
没想到之前发布的本地大模型+知识库的攻略,得到了很多志同道合之友的认可,可见这里的需求有多大。详细请见以下文章:
Ollama+WebUI+AnythingLLM,构建安全可靠的个人/企业知识库
发布后,有很多朋友咨询细节问题,有关注AnythingLLM的知识库部署的问题。的确,本地知识库构建+大模型联用,这是大部分个人和企业级的现实需求,而目前还没有成熟的产品可以直接使用。
未来,这也只能依赖于个人/企业自行搭建,除非和三方服务商签订保密协议,但这需要行业的逐渐成熟和形成相关法规。
今天再为大家分享一个可以部署在本地的问答知识库——QAnything,这是一个由国内公司网易开发的应用。
在亲自试用了2周后,我才将这个应用攻略发布出来,分享给有需求的朋友们。
1. 什么是QAnything

QAnything (Question and Answer based on Anything) 是致力于支持任意格式文件或数据库的本地知识库问答系统,可断网安装使用。

任何格式的本地文件都可以往里扔,即可获得准确、快速、靠谱的问答体验。

目前已支持格式: PDF(pdf),Word(docx),PPT(pptx),XLS(xlsx),Markdown(md),电子邮件(eml),TXT(txt),图片(jpg,jpeg,png),CSV(csv),网页链接(html)

2. 特点
  • 数据安全,支持全程拔网线安装使用。
  • 支持跨语种问答,中英文问答随意切换,无所谓文件是什么语种。
  • 支持海量数据问答,两阶段向量排序,解决了大规模数据检索退化的问题,数据越多,效果越好。
  • 高性能生产级系统,可直接部署企业应用。
  • 易用性,无需繁琐的配置,一键安装部署,拿来就用。
  • 支持选择多知识库问答。
    有一个最重要的原因,它可以选择多个知识库同时问答,而这点是AnythingLLM或其它知识库做不到的。

3. 原理和架构 - Rerank


QAnything用了两阶段检索的技术,使用rerank的方式,使检索和召回率提高,这正是私有化知识库所关注的核心指标。
一阶段检索使用的大模型和参数:

二阶段检索:

4. 基础大模型:
QAnything使用的是阿里的通义千问作为基础大模型,并在此基础上做了微调,大大加强了问答的能力。如果需要商用请遵循千问的license,具体请参阅:通义千问
5. 快速使用
QAnything提供了Saas服务和本地部署两种方式。先看看基于Saas的界面和使用情况。
浏览器直接访问以下地址,不需要任何魔法:QAnything (youdao.com)

创建知识库
点击知识库,点击新建,输入名称后,即可创建一个本地知识库的界面。比如创建名为“智能问答机器人”的知识库。

上传文档/添加网址
QAnything提供了两种获取知识的方式,上传文档和网址。根据自己情况选择,操作过程简易顺畅。不得不说,国内公司在应用软件的开发上,确实更友好一些。

文档很快就上传成功,而且QAnything还支持图片格式的PDF文档,而且从我的测试结果来看,准确率还是相当高的。这点比AnythingLLM要更强。
网址解析也轻松完成,甚至可以解析不容易访问的网址,比如某些技术文档等。

录入问答
在录入问答界面,你可以根据知识库输入准备好的问答内容,以提高召回率。效果类似于模型fine-tuning(微调),但不是。

多知识库选择
左边点击多个知识库为紫色,则可以对不同知识库同时进行问答。

问答操作
如和LLM产品对话一般,直接将你的问题提出来,QAnything会快速响应并回答。而且在最后,会将知识库内的参考内容标记出来,同时提供相关性,供你做验证。这点就避免了大模型黑盒造成的不确定性,让你使用起来心里更有把握。

6. 私有化部署
关于私有化部署,着实遇到了不少困难。我使用的是Windows11专业版。(为了研究大模型本地化部署的各种实际落地项目,刚刚升级了硬件,4080显卡+32G内存,出了大血但体验感爆升)
我相信大部分看到此文章的朋友们使用的都是Windows系统,在此我详细分析一下如何部署的。
Python部署:
前提:
python 3.10以上版本

如果是Windows系统,则需要安装Ubuntu 20.04以上版本,确保有WSL。以及GEFORCE EXPERIENCE 535.104+ (如果使用GPU)

git clone -b qanything-python-v1.3.1 https://github.com/netease-youdao/QAnything.git
cd QAnything
pip install -e .

注意,由于在本地部署QAnything,同时还需要配置大模型。故请注意自己的电脑配置:

在Windows WSL或Linux环境下运行3B大模型(MiniChat-2-3B)要求显存>=10GB

bash scripts/run_for_3B_in_Linux_or_WSL.sh


在Windows WSL或Linux环境下运行7B大模型(自研Qwen-7B-QAnything)要求显存>=24GB

bash scripts/run_for_7B_in_Linux_or_WSL.sh


在Windows WSL或Linux环境下运行Openai API,使用GPU

bash scripts/run_for_openai_api_with_cpu_in_Linux_or_WSL.sh

然后在浏览器中打开http://0.0.0.0:8777/qanything/即可访问UI界面。
更多细节请参考官方文档:QAnything/README_zh.md at qanything-python-v1.3.1 · netease-youdao/QAnything · GitHub
Docker部署(推荐):
下载项目:
打开终端:
git clone https://github.com/netease-youdao/QAnything.git

进入项目根目录执行启动脚本

cd QAnything
bash run.sh # 默认在0号GPU上启动

前端页面

运行成功后,即可在浏览器输入以下地址进行体验。

前端地址: http://your_host:5052/qanything/

同时,QAnything还支持API调用,具体请参考官方文档:

QAnything/docs/API.md at master · netease-youdao/QAnything · GitHub

关键点:

Windows系统一定要配置Ubuntu双系统,确保WSL/WSL2能够正常运行。这对于Windows系统确实不友好,是个大坑。希望以后能优化。

7. 总结

总的来说,QAnything是款不错的产品,开源支持本地部署,解决了知识库保密的痛点,同时在使用体验上,不输目前几款主流LLM+知识库解决方案。

本地知识库+LLM的解决方案已经已经被业确定为未来的发展方向了不管是模型厂商还是应用厂商,未来都会布局服务。因为知识是资源,是核心,谁有知识,谁就能在商业市场上抢占先机。

期待未来有更好的解决方案,使企业/个人的知识在大模型的加持下,更容易得到应用。

—— E N D ——
文字:Jason

AI技术应用派

ID : AI_Supply_Station

一起探索AIGC的实践


算法数据侠
Hi, 今日的你比昨日更优秀!算法数据侠致力于最全最优质的AI算法与数据集分享,不定期更新AI算法/数据集、竞赛TOP方案和前沿学术速递,期待各位小侠客共勉!
 最新文章