XRAG支持全面的RAG测评Benchmark与Toolkit,涵盖了50+以上的测试指标与RAG的全面评测与失败点优化,支持4类Advanced RAG模块( 查询重构, 先进检索, 问答模型, 后处理) 的对比, 并集成模块内的多种具体实现,支持OpenAI大模型 API。XRAG1.0版本还提供了简单的Web UI Demo、轻交互的数据上传与统一标准格式, 集成了 RAG失败点检测与优化方法。 目前文章和代码已开源发布。
❝
论文标题:XRAG: eXamining the Core - Benchmarking Foundational Component Modules in Advanced Retrieval-Augmented Generation
作者机构:北航、ZGCLAB
论文链接:https://arxiv.org/abs/2412.15529
项目链接:https://github.com/DocAILab/XRAG
项目亮点
一. XRAG-Ollama 本地化检索推理框架
XRAG:灵活且可扩展的RAG框架
XRAG是一个全面且可定制的RAG框架,它通过组件化和模块化的设计,集成了查询重写、高级检索、问答模型和后处理等核心组件。XRAG提供了超过50个测试指标和多种先进算法,以及高效的数据预处理脚本,简化了复杂RAG场景下的模型测试与验证流程,使得用户能够轻松实现和优化他们的RAG模型。
Ollama:高效的本地化推理引擎
Ollama作为专注本地化部署的轻量级推理框架,通过硬件加速、量化压缩和注意力机制优化等技术,显著提升大语言模型在异构计算环境中的推理效率。其模块化设计支持与向量数据库(如ChromaDB)无缝集成,为构建RAG系统提供高性能的本地推理能力支撑,特别适用于需要快速响应且对数据隐私要求严格的场景。
XRAG-Ollama本地化检索推理框架:检索增强生成与高效推理的完美结合
XRAG-Ollama本地化检索推理框架结合了XRAG的检索增强生成能力和Ollama的高效推理能力,提供了更准确、更快速的用户体验。基于XRAG的模块化设计和Ollama的本地化推理优化,这个框架实现了相较于传统推理方法显著的性能提升。通过结合检索增强知识和高效的推理技术,XRAG-Ollama框架为用户提供了敏捷高效的使用体验,使得输出结果更加准确,满足了用户对于高性能RAG系统的需求。
二、Ollama框架:助力XRAG实现高效本地化检索推理
在XRAG-Ollama本地化检索推理框架中,Ollama扮演着至关重要的角色。作为一个开源、易用的本地大模型运行框架,Ollama为XRAG提供了强大的本地化检索推理能力,使得XRAG能够充分发挥其检索增强生成的优势。
为什么本地化部署XRAG?
-
降低外部风险: 使用本地部署可以减少对外部服务的依赖,降低因第三方服务不稳定或数据泄露带来的潜在风险。
-
离线可用性: 本地化的RAG系统不依赖互联网连接,即使在网络中断的情况下也能正常运行,保证服务的连续性和稳定性。
-
数据自主管理:本地部署使用户能够完全掌控数据的存储、管理和处理方式,例如将私有数据嵌入到本地向量数据库中,确保数据处理符合企业自身的安全标准和业务要求。
-
数据隐私与安全:在本地环境中运行RAG系统,可以避免敏感数据通过网络传输带来的泄露风险,确保数据始终处于本地控制范围内。这对于处理机密信息的企业尤为重要。
为什么选择Ollama?
Ollama是一个轻量级、可扩展的框架,用于在本地机器上构建和运行大型语言模型(LLM)。它提供了一个简单的API来创建、运行和管理模型,以及一个预构建模型库,可以轻松用于各种应用程序。它不仅支持多种模型,如DeepSeek、Llama 3.3、Phi 3、Mistral、Gemma 2等,还能够利用现代硬件加速计算,从而为XRAG提供高性能的推理支持。 另外,Ollama还提供了对模型量化的支持,这可以显著降低显存要求。例如,4-bit量化可以将FP16精度的权重参数压缩为4位整数精度,从而大幅减小模型权重体积和推理所需显存。这使得在普通家用计算机上运行大型模型成为可能。
通过与Ollama的结合,XRAG能够在本地高效运行大型语言模型,无需依赖复杂的环境配置和大量的计算资源,大大降低了部署和运行成本。同时,本地部署方案赋予开发者完整的数据处理控制权,支持从原始数据清洗、向量化处理(如通过ChromaDB构建私有知识库)到最终应用落地的全链路定制。其基于本地基础设施的部署架构天然具备离线运行能力,不仅确保了服务连续性,还能满足特殊环境(如涉密网络等)对系统可靠性的严苛要求。
下面是一些可直接下载使用的模型(参考链接):
以下给出几个本地化大模型与GPU的适配方案,供您本地化部署XRAG+Ollama参考:
安装使用
一、安装与使用Ollama
在开始使用Ollama之前,需要确保电脑上安装了Docker或者可以运行exe文件的环境。Docker是一个开源的应用容器引擎,能够让应用的部署变得更容易。如果还没安装,可以访问Docker官网下载并安装适合操作系统的Docker版本。
下载Ollama
Ollama提供了多种安装方式,包括Docker镜像和直接的exe安装包。对于希望直接通过exe安装的用户,可以从Ollama的官方网站或GitHub仓库下载适合自己操作系统的exe安装包。 当你运行 ollama --version
命令成功查询到版本时,表示 Ollama 的安装已经顺利完成,接下来便可以用 pull
命令从在线模型库下载模型来玩了。
拉取和运行模型
无论是通过Docker还是直接exe安装,都可以使用Ollama的命令行工具来拉取和运行模型。例如:
这将从Ollama的模型库中下载llama3.1模型,并在本地运行它,为XRAG提供强大的推理支持。
安装成功测试
通过以上步骤,XRAG能够借助Ollama实现高效的本地化检索推理,为用户提供更准确、更快速的RAG系统体验。
二. 安装XRAG
- 使用conda创建虚拟环境
- 克隆代码到本地并配置环境
- 尝试启动XRAG
- 得到输出为:
证明环境配置基本完成, XRAG已经启动初次使用可能需要填入邮箱
三. 交互式使用XRAG-Ollama框架
启动XRAG并访问Web页面
如页面所示, 我们为 XRAG 框架收集并预处理了三个基准数据集。除此之外, 我们还开发了一个统一的数据集结构, 以促进检索和生成模块的性能测试, 并提供了标准化格式。您可以通过上传指定格式的json文件将您的定制数据集加载到系统中。
选择其中一个数据集再点击Load Dataset,开始加载数据,以Drop为例
加载数据需要一定时间 加载完成后进入配置阶段
配置阶段需要配置的主要内容为使用的生成模型和编码模型
-
对于编码模型, XRAG支持BGE系列及Huggingface库支持的Embedding模型
-
对于生成模型, XRAG支持多种模型,包括:
-
Openai系列模型:XRAG支持Openai模型及所有可以无缝使用Openai框架调用的模型,填入正确的Api Key和Api Base 即可使用
-
Ollama本地大模型:XRAG同样支持本地部署大模型,仅需在本地安装Ollama后,就可以直接离线进行模型的调用,更充分地发挥XRAG框架的能力。
接下来需要配置检索部分与提示词
该部分需要配置的主要内容为:
-
Advanced retriever 方法
-
Pre-retriever 方法
-
Postprocess 方法
-
Text QA Template 与 Refine Template
其中Text QA Template 和 Refine Template 预设了问答任务所需的通用提示词。
Pre-retriever 方法:在检索之前,我们利用预检索组件来优化用户查询,从而提高信息检索过程的质量和相关性。主要方法包括拓展提示:拓宽查询以丰富答案的上下文基础,增强答案生成的上下文基础。
假设文档嵌入(HyDE 技术):将原始查询转换为与索引文档更一致的形式,从而提高检索的一致性和效率。
验证链 (CoVe):执行验证计划,以进一步将系统响应提炼为增强的响应。
Advanced retriever方法:我们模块化了LlamaIndex实现的标准高级方法。例如我们在LexicalBM25检索器中根据语料库中的查询词出现次数和稀有度对文档进行排名。
Simple Fusion Retriever(SQFusion)通过生成相关的子查询来增强查询,并返回所有查询和索引中的前 k 个节点。RRFusion 将索引与基于 BM25 的检索器融合在一起,从而同时捕获语义关系和关键字相关性。
SentenceWindow Retriever 将文档解析为单个句子作为叶节点,在检索到叶节点时并合并周围的句子以增加上下文。
RecursiveChunk Retriever遍历节点关系以根据引用获取节点。
Postprocess 方法:后处理器方法旨在转换和过滤返回节点,从而进一步提高检索的准确性和效率。
XRAG 整合了重新排名器,通过利用上下文理解模型而不是嵌入匹配模型来增强相关性评估的准确度。我们利用 Huggingface和transformers来集成(BGE-BASE)1reranker,它通过 Cross-Encoder 模型处理问题和文档,直接输出相似度分数。ColBERT reranker采用多向量表示进行粒度查询文档匹配。此外,LongContextReorder将高分节点重新定位到列表的顶部和底部,从而加快相关信息的识别。
确认完成配置后点击确定以开始整体流程的构建, 这可能需要一点时间。 随后,您可以使用单个问题测试您的RAG系统。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。