开源项目QAnything:全能型本地知识库问答系统

在当今信息爆炸的时代,如何高效地管理和检索大量数据成为了一个重要课题。网易有道推出的开源项目QAnything,正是为了解决这一问题而生。QAnything是一个本地知识库问答系统,支持多种文件格式和数据库,允许用户在离线状态下进行安装和使用。用户只需将任何格式的本地存储文件放入系统,即可获得准确、快速且可靠的答案。

关键特性

QAnything的主要优势在于它能够处理多种格式的文件,包括PDF、Word、PPT、Excel、Markdown、Email、TXT、图片以及CSV等,这使得它在处理不同来源和类型的数据时表现出极高的灵活性。用户可以轻松地将这些文件投入系统,期待得到迅速且准确的回答,这大大提升了信息检索的效率。

系统的数据安全特性同样值得一提。QAnything支持在断开网络的情况下进行安装和使用,这为那些对数据保密性有高要求的企业和个人提供了强有力的保障。系统的跨语言问答支持也是一个显著的优势,它能够自由地在中文和英文之间切换,不受文档语言的限制,这对于多语言环境的用户来说是一个巨大的便利。

在处理大规模数据时,QAnything的两阶段向量排序技术更是让人眼前一亮。这项技术有效解决了大规模数据检索中常见的准确度下降问题,实现了数据量越大,检索效果越好的优异表现。

在性能方面,QAnything作为一个高性能的生产级系统,它的稳定性和可靠性使其成为企业级应用的理想选择。用户无需进行复杂的配置,一键即可完成安装部署,轻松实现即装即用。

QAnything的易用性也是其一大亮点。无论是个人用户还是企业用户,都能够快速上手,享受到QAnything带来的便捷。而且,QAnything还支持多知识库的问答,让用户能够根据自己的需求,选择和使用不同的知识库。

QAnything采用了BCEmbedding作为其检索组件,这是一个由网易有道开发的中英双语和跨语种语义表征算法模型库。BCEmbedding的强悍双语和跨语种能力,为QAnything提供了强大的语义检索支持,确保了问答结果的准确性和相关性。

QAnything已经在有道速读和有道翻译等多个产品中得到了成功的应用实践,技术成熟度和实用。其开源特性,也为广大开发者和研究者提供了广阔的创新空间。

架构设计

QAnything的架构设计是其高性能问答能力的核心。这一设计采用了创新的两阶段检索方法,特别针对大规模知识库数据场景进行了优化。

架构

在第一阶段,QAnything使用嵌入技术将文档和查询问题转换成高维向量空间中的点,这个过程称为嵌入检索。这一阶段的关键在于,它能够将文本数据转换为能够通过数学方法进行比较和分析的格式。通过这种方式,QAnything能够快速识别和检索与查询最相关的文档或文档的部分。

嵌入检索的优势在于其能够处理各种格式的文档,包括PDF、Word、PPT、Markdown、Eml、TXT、图片以及网页链接等。这使得QAnything成为一个多才多艺的系统,能够跨越不同格式的数据源进行信息检索。

名称RetrievalSTSPairClassificationClassificationRerankingClustering平均值
bge-base-en-v1.537.1455.0675.4559.7343.0537.7447.20
bge-base-zh-v1.547.6063.7277.4063.3854.8532.5653.60
bge-large-en-v1.537.1554.0975.0059.2442.6837.3246.82
bge-large-zh-v1.547.5464.7379.1464.1955.8833.2654.21
jina-embeddings-v2-base-en31.5854.2874.8458.4241.1634.6744.29
m3e-base46.2963.9371.8464.0852.3837.8453.54
m3e-large34.8559.7467.6960.0748.9931.6246.78
bce-embedding-base_v157.6065.7374.9669.0057.2938.9559.43

一阶段检索指标汇总

尽管第一阶段的嵌入检索已经能够提供相当准确的结果,但随着知识库数据量的增加,简单的向量匹配可能不足以保证检索质量。因此,QAnything引入了第二阶段的重排检索,这一阶段利用更复杂的算法对第一阶段的结果进行精细的排序和优化。

重排检索的目标是在已经缩小范围的结果集中,进一步识别出与查询最为相关的文档或文档片段。这一阶段可能涉及到对文档的深入分析,包括但不限于语义理解、上下文关联和相关信息的整合。

模型名称Reranking平均值
bge-reranker-base57.7857.78
bge-reranker-large59.6959.69
bce-reranker-base_v160.0660.06

二阶段检索指标汇总

两阶段检索的优势:

  1. 提高准确性:通过两阶段的检索,QAnything能够在大数据量中保持高准确度,确保用户获得最相关的信息。

  2. 解决检索退化问题:在数据量不断增长的情况下,单纯的基于向量的第一阶段检索可能会出现准确度下降的问题。第二阶段的重排检索有效解决了这一问题,确保了随着数据量的增加,检索性能不降反升。

  3. 优化性能:两阶段检索的设计允许系统在保持高准确度的同时,优化查询响应时间和系统资源的使用效率。

二阶段rerank重排后能实现准确率稳定增长,数据越多效果越好

QAnything的两阶段检索背后,是强大的BCEmbedding模型。这一模型不仅在语义表征评测中表现卓越,而且在跨语言的问答场景中也有着出色的表现。BCEmbedding的EmbeddingModel专注于生成语义向量,而RerankerModel则擅长对搜索结果进行优化和精排。

QAnything还结合了最新的语言模型和算法,如基于LlamaIndex的RAG评测,进一步增强了系统的问答能力。这些技术的融合,使得QAnything在处理复杂查询和大规模数据时,能够提供更加精准和可靠的结果。

安装与使用

系统条件:

  • 对于Linux系统,需要有一个NVIDIA GPU,内存至少为4GB,并且安装了兼容的NVIDIA驱动和CUDA版本。
  • 对于Windows 11 with WSL 2,除了上述的GPU要求外,还需要安装GEFORCE EXPERIENCE和Docker Desktop。

安装步骤

  1. 克隆项目仓库: 打开终端或命令提示符,运行以下命令来克隆QAnything的GitHub仓库到本地机器:

    git clone https://github.com/netease-youdao/QAnything.git
     
  2. 进入项目目录: 克隆完成后,进入项目根目录:

    cd QAnything

  3. 执行启动脚本: 在项目根目录下,执行启动脚本run.sh。这将根据您系统的环境自动配置并启动QAnything服务:

    bash run.sh

    如果您使用的是Windows系统,请先进入WSL环境,然后再执行上述命令。

  4. 指定GPU启动(可选): 如果需要指定特定的GPU进行启动,可以使用以下命令:

    bash run.sh -i 0  # 指定0号GPU启动

  5. 多GPU启动(可选): 如果您有多个GPU,并且希望QAnything使用它们,可以通过指定多个GPU ID来启动:

    bash run.sh -i 0,1  # 指定0号和1号GPU启动

使用QAnything

访问前端页面

安装并启动QAnything服务后,您可以通过以下地址在浏览器中访问前端页面:

http://your_host:5052/qanything/

这里的your_host是您的服务器或本地机器的IP地址或主机名。

使用API接口

如果您希望通过编程方式与QAnything交互,可以使用API接口。API的基本地址是:

http://your_host:8777/api/

具体的API文档可以在以下地址找到:

http://your_host:8777/api/docs

这里提供了API的详细描述、请求方法、参数说明等信息。

关闭服务

当您完成使用并希望关闭QAnything服务时,可以执行关闭脚本close.sh

bash close.sh

注意事项

  • 确保在安装过程中遵循了所有前提条件,包括软件版本和环境配置。
  • 如果在安装或使用过程中遇到问题,可以参考项目的FAQ或在GitHub上提出issue。
  • 根据您的网络环境,可能需要配置代理或VPN来访问某些依赖服务。

QAnything作为一个全能型的本地知识库问答系统,以其强大的功能和灵活的部署方式,为个人和企业提供了一个高效、安全的数据检索解决方案。随着社区的不断壮大和技术的持续迭代,QAnything有望在未来发挥更大的作用。

项目地址:GitHub - netease-youdao/QAnything: Question and Answer based on Anything.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/708293.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux:线程概念 线程控制

Linux:线程概念 & 线程控制 线程概念轻量级进程 LWP页表 线程控制POSIX 线程库 - ptherad线程创建pthread_createpthread_self 线程退出pthread_exitpthread_cancelpthread_joinpthread_detach 线程架构线程与地址空间线程与pthread动态库 线程的优缺点 线程概念…

复分析——第2章——Cauchy定理及其应用(E.M. Stein R. Shakarchi)

第2章 Cauchy定理及其应用 The solution of a large number of problems can be reduced, in the last analysis, to the evaluation of definite integrals; thus mathematicians have been much occupied with this task... However, among many results obtained, a n…

【RabbitMQ】初识 RabbitMQ

初识 RabbitMQ 1.认识 RabbitMQ1.1 介绍1. 2.使用场景1.2.1 推送通知1.2.2 异步任务1.2.3 多平台应用的通信1.2.4 消息延迟1.2.5 远程过程调用 1.3 特性 2.基本概念2.1 生产者、消费者和代理2.2 消息队列2.3 交换机2.3.1 direct2.3.2 topic2.3.3 headers2.3.4 fanout 2.4 绑定2…

基于SpringBoot+VueBBS论坛系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,还…

蓝牙模块的工作原理与电路设计

蓝牙技术是一种短距离无线通信技术,广泛应用于各种智能设备中,如手机、耳机、智能手表等。蓝牙模块作为实现蓝牙通信的核心部件,其工作原理和电路设计对于蓝牙设备的性能和稳定性至关重要。本文将深入解析蓝牙模块的工作原理,包括…

Docker(一)-认识Docker

1.docker理念 Docker是基于Go语言实现的云开源项目。 Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装,分发,部署,运行等生命周期的管理,使用户的应用及其运行环境能够做到”…

18.1 HTTP服务器-极简服务器、请求与响应

1. 极简服务器 大道至简。使用Go语言构建世界上最简单的HTTP服务器,仅需四行代码。 标准库的net/http包提供了多种用于创建HTTP服务器的方法,其中包括: http.HandleFunc("/", rootHandler) 第一参数:访问的url 第二…

Elasticsearch搜索引擎(高级篇)

3.1 查询语法 | 《ElasticSearch入门到实战》电子书 (chaosopen.cn) day09-Elasticsearch02 - 飞书云文档 (feishu.cn) 目录 第一章 DSL查询 1.1 基本语法 1.2 叶子查询 全文检索查询 精确查询 1.3 复合查询 算分函数查询 bool查询 1.4 排序 1.5 分页 基础分页 深度分…

数据可视化:Seaborn

安装Seaborn 进入虚拟环境,在终端中键入 pip install seaborn 即可安装。 初步使用Seaborn 在使用seaborn之前,我们先了解一下seaborn是什么,seaborn是以matplotlib为底层的更简便的python第三方库,它可以更快捷地去设置图形的一…

Web应用安全测试-防护功能缺失

Web应用安全测试-防护功能缺失 1、Cookie属性问题 漏洞描述: Cookie属性缺乏相关的安全属性,如Secure属性、HttpOnly属性、Domain属性、Path属性、Expires属性等。 测试方法: 通过用web扫描工具进行对网站的扫描,如果存在相关…

快速提升沟通能力:客服必备的话术技巧

在现在的这个互联网时代,各行业竞争日益激烈,而客服作为连接商家和消费者的桥梁,无疑是一个重要的岗位。可以说客服是一个极具挑战性的岗位,客服每天需要面对来自全国各地的客户,同时还要对不同地区、不同性格、不同需…

Unity资源 之 最受欢迎的三消游戏开发包 - Bubble Shooter Kit 【免费领取】

三消游戏开发包 - Bubble Shooter Kit 免费领取 前言资源包内容领取兑换码 前言 如果你是一名 Unity 游戏开发者,并且正在寻找一种快速、简单的方式来创建自己的三消游戏,那么 Bubble Shooter Kit 就是你所需要的。 资源包内容 Bubble Shooter Kit 是…

推荐系统三十六式学习笔记:原理篇.矩阵分解10|那些在Netflix Prize中大放异彩的推荐算法

目录 缘起矩阵分解为什么要矩阵分解1 基础的SVD算法2 增加偏置信息3 增加历史行为4 考虑时间因素 总结 我们先前聊过推荐系统中的经典问题,其中有一类就是评分预测。平心而论,评分预测问题只是很典型,其实并不大众。毕竟在实际的应用中&#…

使用Omnipeek进行Wifi/P2P抓包

前言 工作中解决Mirracast投屏连接失败的问题时,遇到了需要抓取wifi数据包的情况,记录一下配置和使用过程。 一、Omnipeek 的安装和配置 1.1 Omnipeek 安装 双击 setup.exe 进行安装 1.2 注册 注册时,版本写 71 ,产生序列号和…

Leetcode刷题笔记10

14. 最长公共前缀 14. 最长公共前缀 - 力扣(LeetCode) 首先,检查边界条件 如果输入的字符串数组为空,直接返回空字符串。 然后使用minmax_element函数找到数组中字典序最小和最大的字符串。 因为公共前缀一定会出现在字典序最…

爬虫相关面试题(其二)

十一 分布式爬虫爬虫原理 一个分布式爬虫,是需要有一个或多个发任务的程序,提取将来需要的任务,主要指的就是任务链接,存到任务队列(redis数据库中),还需要多个执行任务的程序,从任…

微软无所不知的人工智能召回功能“Recall”被推迟,将不会与 Copilot Plus PC 一起提供

微软计划下周推出新的 Copilot Plus 个人电脑,取消其备受争议的 Recall 功能,该功能可以截取您在这些新笔记本电脑上所做的所有操作。该软件制造商推迟了 Recall,以便可以通过 Windows Insider 程序对其进行测试,此前该公司最初承…

解决CentOS的yum命令失效的问题

近日笔者对一台装有 CentOS 7.9 系统的服务器反复折腾,玩到最后发现 yum 命令用不了,总是报下面的错误信息: There was a problem importing one of the Python modules required to run yum. The error leading to this problem was:/usr/l…

eclipse如何导入springboot项目

打开eclipse 找到你的springboot项目 点击finish即可 test02就已经导入进去了 配置一下maven 在将那个springboot项目刷新一下即可 运行成功

服务器数据恢复—vxfs文件系统元数据被破坏的数据恢复案例

服务器存储数据恢复环境: 某品牌MSA2000服务器存储中有一组由8块SAS硬盘组建的raid5磁盘阵列,其中包含一块热备盘。分配了6个LUN,均分配给HP-Unix小机使用。磁盘分区由LVM进行管理,存放的数据主要为Oracle数据库及OA服务端。 服务…