QAnything知识库问答系统离线部署(LLM+RAG)

news/2024/11/13 9:02:50/

一、QAnything介绍

(一)简介

QAnything 是网易有道开源的一个问答系统框架,支持私有化部署和SaaS服务两种调用形式。它能够支持多种格式的文件或数据库,提供准确、快速和可靠的问答体验。目前已支持的文件格式包括PDF、Word、PPT、Markdown、Eml、TXT、图片(jpg、png等)以及网页链接等。

(二)特点

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

(三)架构图

QAnything项目是基于langchain,fastchat,transformer,fasttransformer等一系列框架实现的。它有四部分组成:

  • 前端服务
  • 检索模型服务
  • 大模型问答服务
  • 知识库实现

整体框架是基于docker运行的, 不管是windows还是linux , 都是基于docker运行。

二、离线部署(以Linux系统为例)

(一)部署 条件

确保你的电脑或服务器满足以下要求:

必要项最低要求备注
NVIDIA GPU Memory>= 16GB推荐NVIDIA 3090
NVIDIA Driver 版本>= 525.105.17
CUDA 版本>= 12.0
docker compose 版本>=1.27.4docker compose 安装教程

(二)打包镜像

1.先在联网机器上下载docker镜像

docker pull quay.io/coreos/etcd:v3.5.5
docker pull minio/minio:RELEASE.2023-03-20T20-16-18Z
docker pull milvusdb/milvus:v2.3.4
docker pull mysql:latest
docker pull freeren/qanything:v1.2.1

2.打包镜像

docker save quay.io/coreos/etcd:v3.5.5 minio/minio:RELEASE.2023-03-20T20-16-18Z milvusdb/milvus:v2.3.4 mysql:latest freeren/qanything:v1.2.1 -o qanything_offline.tar

3.将镜像压缩包复制到断网机器上,并且在断网机器上加载镜像

docker load -i qanything_offline.tar

(三)下载本项目

git clone https://github.com/netease-youdao/QAnything

(四)下载大模型

1.大模型支持列表

model_nameconv_templateSupported Pulic LLM List
Qwen-7B-QAnythingqwen-7b-qanythingQwen-7B-QAnything
Qwen-1_8B-Chat/Qwen-7B-Chat/Qwen-14B-Chatqwen-7b-chatQwen
Baichuan2-7B-Chat/Baichuan2-13B-Chatbaichuan2-chatBaichuan2
MiniChat-2-3BminichatMiniChat
deepseek-llm-7b-chatdeepseek-chatDeepseek
Yi-6B-ChatYi-34b-chatYi
chatglm3-6bchatglm3ChatGLM3

2.下载大模型(以qwen为例)

切换到assets/custom_models下面

cd assets/custom_models/

去魔搭社区下载Qweb-7B-QAnything

(五)运行代码

运行阿里qwen模型, 如果要换其他模型,可以查阅docs/QAnything_Startup_Usage_README.md 这个文档。

bash ./run.sh -c local -i 0 -b hf -m Qwen-7B-QAnything -t qwen-7b-qanything

运行过程要输入参数(7B) , remote 或local (我选的是remote) , 最后是ip。

remote 和local的区别在于是不是在远程服务器上运行代码,如果是的话,就选择remote,然后年后输入远程服务器ip地址,这样就能够在别的主机上访问。

在运行的过程中,可能会遇到一些前端报错的情况,不需要处理,等运行完就好。

(六)测试

安装成功后,可以在浏览器中输入以下地址进行体验:

  • 前端地址: http://{your_host}:5052/qanything
  • API地址: http://{your_host}:5052/api/

三、效果

最后我们展示下网易qanything的问答效果。

网易qanything问答演示


http://www.ppmy.cn/news/1451949.html

相关文章

微信小程序开发:深入实现地图导航功能【含代码示例】

微信小程序开发:深入实现地图导航功能【含代码示例】 一、引言二、准备工作三、集成地图SDK四、实现地图显示五、添加标记点和路线 一、引言 微信小程序作为一种轻量级的应用程序,凭借其无需安装、即用即走的特点,迅速在移动应用市场中占据了…

【软件工程】概要设计

目录 前言软件设计简介概要设计模块化模块化的评价耦合内聚 面向对象设计原则Liskov替换原则(LSP)开放-封闭原则(OCP)单一职责原则(SRP)接口隔离原则(ISP)依赖倒置原则(D…

关于springboot内置tomcat最大请求数配置的一些问题

前言 springboot内置了tomcat。那么一个springboot web应用,最大的请求链接数是多少呢?很早以前就知道这个是有个配置,需要的时候,百度一下即可。但,事实并非如此,有几个问题我想大多数人还真不知道。比如…

基于Sping Boot集成的websocket实现聊天室

Spring Boot整合WebSocket实现聊天室 Spring Boot 提供了 Websocket 组件 spring-boot-starter-websocket,用来支持在 Spring Boot环境下对Websocket 的使用。 下面我们就以多人在线聊天室为例,演示 Spring Boot 是如何整合Websocket 实现服务端消息推…

python(abi)是什么,有什么作用呢

python(abi) 是一个特殊的提供项,用于指定软件包所支持的Python ABI(Application Binary Interface)版本。 Python ABI是一种约定,用于定义Python解释器和扩展模块之间的二进制接口。它确保了不同版本的Python解释器和扩展模块之…

如何使用提示测试为LLMs构建单元测试?

原文地址:how-to-build-unit-tests-for-llms-using-prompt-testing 确保您的人工智能交付:快速测试完美生成应用程序的基本指南 2024 年 4 月 26 日 如果你曾经编写过软件,你就会知道测试是开发过程中必不可少的一部分。特别是单元测试&#…

JavaWeb--1.Servlet

Servlet&#xff08;基础&#xff09; 1、配置依赖&#xff1a; ​ 在pom.xml文件中加入相关依赖 <dependencies><dependency><groupId>jakarta.servlet</groupId><artifactId>jakarta.servlet-api</artifactId><version>5.0.0&l…

KAN网络认识

首先&#xff0c;这是一个基于柯尔莫哥洛夫-阿诺德表示定理的网络。这个定理指出如果函数f是定义在有界域上的多变量连续函数&#xff08;即最终要拟合的非线性函数是连续的&#xff09;&#xff0c;那么该函数就可以表示为多个单变量、加法连续函数的有线组合。 对于机器学习…