【AI大模型】RAG 入门指南:从零开始构建一个 RAG 系统

RAG From Scratch 系列教程-1:RAG系统 想象一下你有一个非常博学的朋友,但他所有的知识都停留在2021年。现在你想问他"2023年世界杯冠军是谁?",他肯定答不上来。这就是当前大语言模型(LLM)面临的问题——它们的知识受限于训练时的数据。传统解决方法是对模型进行"微调"(fine-tuning),就像给朋友补课一样。但这相当于让他重新学习所有知识,既费时又昂贵。于是,聪明的AI工程师们发明了RAG(检索增强生成)技术,相当于给AI装了个"外挂U盘"!当用户提问时,系统会先从你的专属数据库/文档中搜索相关内容。 阅读详情

前言

从零开始构建一个应用可以让我们快速理解应用的各个部分。

这个方法其实非常适用于 RAG。

我在以前的文章中有介绍过 RAG 的概念、原理以及应用等,但其实,亲自动手来构建一个 RAG 系统或许能够让我们更快速的理解 RAG 到底是什么。

本文将为读者提供一个从零开始搭建一个 RAG 应用的入门教程。

RAG 简介

在开始之前,我还是打算再次简要的介绍一下 RAG。

在 Meta 的官方 Blog 上有这样一段话:

Building a model that researches and contextualizes is more challenging, but it’s essential for future advancements. We recently made substantial progress in this realm with our Retrieval Augmented Generation (RAG) architecture, an end-to-end differentiable model that combines an information retrieval component (Facebook AI’s dense-passage retrieval system) with a seq2seq generator (our Bidirectional and Auto-Regressive Transformers BART model). RAG can be fine-tuned on knowledge-intensive downstream tasks to achieve state-of-the-art results compared with even the largest pretrained seq2seq language models. And unlike these pretrained models, RAG’s internal knowledge can be easily altered or even supplemented on the fly, enabling researchers and engineers to control what RAG knows and doesn’t know without wasting time or compute power retraining the entire model.

这段话主要讲述了一个新的模型架构,也就是 RAG (检索增强生成) 的重要性和优势。可以概括为以下几点:

  1. 1. 构建一个能够进行研究和上下文分析的模型虽然更具挑战性,但对未来的技术进步非常关键;
  2. 2. 通过在知识密集的下游任务上微调,RAG 可以实现最先进的结果,比现有的最大的预训练序列到序列语言模型还要好;
  3. 3. 与传统的预训练模型不同,RAG 的内部知识可以轻松地动态更改或补充。也就是说,研究人员和工程师可以控制 RAG 知道和不知道的内容,而不需要浪费时间或计算资源重新训练整个模型。

这段话信息量很大,但是作为初学者,简而言之:

RAG 的本质是在传递给 LLM 的提示语中,通过一个检索工具来添加自己的数据。

接下来,我们就要开始准备我们的 RAG 应用了。

RAG 系统的高层组件

  • • 一组文档,正式说法为语料库
  • • 用户输入
  • • 语料库和用户输入之间的相似性度量

这是简化版的 RAG 组件系统,我们不需要考虑向量存储,甚至目前还不需要 LLM。

以下是一篇 RAG 论文中的系统概述:

【AI大模型】RAG 入门指南:从零开始构建一个 RAG 系统_自然语言处理

它假设了很多背景信息,比我们预设的简化版要复杂的多。

对于想要深入研究的人来说,这篇论文很有价值,但是对于我们想要入门的人来说,通过一步一步构建自己的 RAG 系统来学习才更适合。

RAG 系统的查询步骤

  1. 查询用户输入
  2. 进行相似性度量
  3. 对用户输入和检索到的文档进行后处理

这里的后处理即将检索到的文档和用户输入发送给 LLM 进行处理,最终生成回答。

相似性度量是指用来评估两个对象之间相似程度的方法。在文本处理和信息检索中,相似性度量可以帮助我们确定两个文本之间的相似度。在 RAG 系统中,我们可以使用这些相似性度量方法之一来比较用户输入和文档集合中的每个文档,从而找到最相关的文档。

从零开始构建 RAG 系统

现在,我们将以一个具体的案例从零开始来构建一个 RAG 系统。

以下是简化版的流程图。

【AI大模型】RAG 入门指南:从零开始构建一个 RAG 系统_agi_02

以下是具体步骤。

获取文档集合

我们首先定义一个简单的文档语料库。

corpus_of_documents = [       "Take a leisurely walk in the park and enjoy the fresh air.",       "Visit a local museum and discover something new.",       "Attend a live music concert and feel the rhythm.",       "Go for a hike and admire the natural scenery.",       "Have a picnic with friends and share some laughs.",       "Explore a new cuisine by dining at an ethnic restaurant.",       "Take a yoga class and stretch your body and mind.",       "Join a local sports league and enjoy some friendly competition.",       "Attend a workshop or lecture on a topic you're interested in.",       "Visit an amusement park and ride the roller coasters."   ]
定义和执行相似性度量

现在我们需要一种方法来衡量我们将要接收的用户输入与我们组织的文档集合之间的相似性。

可以说,最简单的相似性度量是杰卡德相似性。

杰卡德相似性(Jaccard Similarity)是一种衡量两个集合相似程度的简单方法。它计算两个集合的交集和并集的比例,用于比较两个文本之间的相似性。简而言之就是,杰卡德相似性看两个集合中共同元素的数量占所有元素的总数量的比例。

对语料库进行预处理

由于我们需要进行相似性度量,所以需要将字符串处理成集合。

我们可以使用最简单的方式来进行预处理,也就是将字符串转换为小写并按照空格分割。

# 将语料库字符串按照空格分割,并返回杰卡德相似性的结果   def jaccard_similarity(query, document):       query = query.lower().split(" ")       document = document.lower().split(" ")       intersection = set(query).intersection(set(document))       union = set(query).union(set(document))       return len(intersection)/len(union)

然后,我们需要定义一个函数,该函数接受用户的精确查询和我们的语料库,并根据相似性的结果将最匹配的文档返回给用户。

def return_response(query, corpus):       similarities = []       for doc in corpus:           similarity = jaccard_similarity(user_input, doc)           similarities.append(similarity)       return corpus_of_documents[similarities.index(max(similarities))]

现在,我们可以试着运行一下。

定义用户查询输入。

user_input = "I like to hike"

将输出的结果打印出来。

print(return_response(user_input, corpus_of_documents))

【AI大模型】RAG 入门指南:从零开始构建一个 RAG 系统_语言模型_03

如果不想在自己电脑上配置 Python 环境,可以直接使用线上的 Python 编辑器,比如:https://www.programiz.com/python-programming/online-compiler/

至此,我们已经构建出了一个最基本的 RAG 系统。

相似性问题

由于我们选择了一个非常简单的相似性度量方法来学习,所以会带来一些问题。

它没有语义概念,只是简单地看两个文档中有哪些词,然后进行对比。

也就是说,只要我们提供的用户输入里包含这些词,那么我们就会得到相同的结果,因为那就是最接近的文档。

比如,我将用户输入换成了 user_input = "I don't like to hike"。

【AI大模型】RAG 入门指南:从零开始构建一个 RAG 系统_ai_04

输出结果和上文的输出结果一样。

这是一个在 RAG 中会经常遇到的话题,我们会在后面解决这个问题。

目前,我们还没有对我们检索到的文档进行任何后处理。只是实现了 RAG 的「检索」功能。

下一步是通过结合 LLM 来增强生成。

添加 LLM

要方便快捷的添加 LLM,我们可以直接在本地机器上运行一个开源的 LLM。

这里,我将使用 Ollama 的 Llama 3.1 模型。当然,你也可以使用 OpenAI 的 GPT-4 或 Anthropic 的 Claude 或者其他 LLM。

可以到 ollama 官网下载安装自己想要的 LLM:https://ollama.com/

现在,我们需要对代码做些修改了。

如果是在本地运行 LLM,那么,你需要在自己电脑上配置好 Python 相关的环境,这样在后续步骤中,才能将代码运行起来。

现在,需要引入一些库。

import requests   import json

我们的步骤会有所变化:

  1. 1. 获取用户输入;
  2. 2. 获取最相似的文档(通过我们的相似性度量来衡量);
  3. 3. 将这个文档作为提示语传递给 LLM;
  4. 4. 最后将结果返回给用户。
user_input = "I like to hike"   relevant_document = return_response(user_input, corpus_of_documents)   full_response = []      prompt = """   You are a bot that makes recommendations for activities. You answer in very short sentences and do not include extra information.   This is the recommended activity: {relevant_document}   The user input is: {user_input}   Compile a recommendation to the user based on the recommended activity and the user input.   """

定义好以上步骤之后,我们现在来调用 Ollama 的 API。

在编辑此代码之前,你需要先运行 LLM 在后台,直接在命令行里输入 ollama serve 即可。

url = 'http://localhost:11434/api/generate'   data = {       "model": "llama3.1",       "prompt": prompt.format(user_input=user_input, relevant_document=relevant_document)   }   headers = {'Content-Type': 'application/json'}   response = requests.post(url, data=json.dumps(data), headers=headers, stream=True)   try:       count = 0       for line in response.iter_lines():           if line:               decoded_line = json.loads(line.decode('utf-8'))                              full_response.append(decoded_line['response'])   finally:       response.close()      print(''.join(full_response))

运行以上代码,即可看到结果。

【AI大模型】RAG 入门指南:从零开始构建一个 RAG 系统_agi_05

现在我们已经从零开始构建了一个完整的 RAG 系统。

现在 LLM 就可以直接帮我们处理上文提到的相似性问题。如果把用户输入改成 I don't like to hike.,那么我们会得到以下这样的回答。

【AI大模型】RAG 入门指南:从零开始构建一个 RAG 系统_ai_06

总结以及改进点

尽管我们已经搭建出了一个完整的 RAG 系统,但是,真实场景下的 RAG 系统也许会更加复杂,涉及向量数据库(Vector Database)、嵌入(Embedding)和提示语工程(Prompt Engineering)等。

如果想要更加深入的学习 RAG,你也许需要在此基础之上考虑以下的一些改进点。

  1. 文档数量:更多的文档可能意味着更多的推荐,目前,我们只给 LLM 提供一个文档。我们可以输入多个文档作为“上下文”,让模型根据用户输入提供更个性化的推荐。
  2. 文档的深度/大小:更高质量的内容和包含更多信息的长文档可能更好。
  3. 提供给 LLM 的文档部分:如果我们有更大或更全面的文档,我们可能只想添加这些文档的部分内容,或者多个文档的部分内容,或一些变体。在词汇中,这称为分块(chunking)。
  4. 文档存储工具:我们可能会以不同的方式或不同的数据库存储文档。特别是如果我们有大量文档,可能会考虑将它们存储在向量存储中。
  5. 相似性度量:我们如何衡量相似性是至关重要的,我们可能需要在性能和全面性之间权衡。
  6. 文档和用户输入的预处理:我们可以在将用户输入传递给相似性度量之前进行一些额外的预处理或增强。例如,我们可以使用嵌入将输入转换为向量。
  7. 提示语:我们可以对 LLM/模型使用不同的提示语,并根据我们想要的输出进行调整,以获得我们想要的结果。

程序员为什么要学大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

事实上,抢你饭碗的不是AI,而是会利用AI的人。

继科大讯飞、阿里、华为等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?

与其焦虑……

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉优快云大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

​

一、LLM大模型经典书籍

AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

在这里插入图片描述

二、640套LLM大模型报告合集

这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)

在这里插入图片描述

三、LLM大模型系列视频教程

在这里插入图片描述

四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)

在这里插入图片描述

LLM大模型学习路线 ↓

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。

  • 内容:

    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
    • L1.4.1 知识大模型
    • L1.4.2 生产大模型
    • L1.4.3 模型工程方法论
    • L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。

  • 内容:

    • L2.1 API接口
    • L2.1.1 OpenAI API接口
    • L2.1.2 Python接口接入
    • L2.1.3 BOT工具类框架
    • L2.1.4 代码示例
    • L2.2 Prompt框架
    • L2.3 流水线工程
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。

  • 内容:

    • L3.1 Agent模型框架
    • L3.2 MetaGPT
    • L3.3 ChatGLM
    • L3.4 LLAMA
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。

  • 内容:

    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

这份 LLM大模型资料 包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉优快云大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

​

RAG 入门指南:从零开始构建一个 RAG 系统 在开始之前,我还是打算再次简要的介绍一下 RAG。在 Meta 的官方 Blog 上有这样一段话:这段话主要讲述了一个新的模型架构,也就是RAG (检索增强生成)的重要性和优势。可以概括为以下几点:1. 构建一个能够进行研究和上下文分析的模型虽然更具挑战性,但对未来的技术进步非常关键;2. 通过在知识密集的下游任务上微调,RAG 可以实现最先进的结果,比现有的最大的预训练序列到序列语言模型还要好;3. 与传统的预训练模型不同,RAG 的内部知识可以轻松地动态更改或补充。 阅读详情

相关推荐

【AI大模型应用开发】3.2 RAG实战 - RAG应用+UI实现加载本地文件并对话

前面我们实现了RAG基本流程,今天我们在此基础上给它加个UI界面,在浏览器打开,实现上传本地文件、解析,并用大模型实现与该文档的对话。也就是一个阉割版demo版的ChatPDF或知识库对话系统。

同学小张的博客 3054

RAG与知识库搭建,手把手教你构建RAG系统

自从发现可以利用自有数据来增强大语言模型(LLM)的能力以来,如何将 LLM 的通用知识与个人数据有效结合一直是热门话题。关于使用微调(fine-tuning)还是检索增强生成(RAG)来实现这一目标的讨论持续不断。检索增强生成 (RAG) 是一种使用来自私有或专有数据源的信息来辅助文本生成的技术。它将检索模型(设计用于搜索大型数据集或知识库)和生成模型(例如大型语言模型 (LLM),此类模型会使用检索到的信息生成可供阅读的文本回复)结合在一起。

qkh1234567的博客 5180

电力电子技术进阶:从基础到实战的完整学习路径

本文系统阐述了电力电子技术从基础到实战的完整学习路径。首先解析了电力电子作为“电能魔术师”的核心作用,随后深入剖析了数学工具、电路电磁场与半导体器件三大基础支柱。文章重点讲解了DC-DC、DC-AC、AC-DC等核心变换拓扑,并探讨了从经典PID到现代模型预测控制(MPC)的控制策略。最后,分享了硬件设计、软件调试、电磁兼容(EMC)等实战经验与前沿趋势,为学习者提供了清晰的进阶指南。

weixin_29204205的博客 447

RAG 系统的基本搭建流程

RAG系统搭建流程包括文档的加载与切割,大模型接口封装等,最后进行部署与维护。该流程旨在提升信息检索和文本生成的效率与准确性,满足用户需求。

u012121721的博客 1859

【自动驾驶规划】Lattice Planner

Lattice Planner简介 LatticePlanner算法属于一种局部轨迹规划器,输出轨迹将直接输入到控制器,由控制器完成对局部轨迹的跟踪控制。因此,Lattice Planner输出的轨迹是一条光滑无碰撞满足车辆运动学约束和速度约束的平稳安全的局部轨迹。Lattice Planner的输入端主要由三部分组成,感知及障碍物信息、参考线信息及定位信息。局部规划模块的输出是带有速度信息的一系列轨迹点组成的轨迹,其保证了车辆控制器在车辆跟踪控制过程中的平稳性和安全性。 局部规划模块的输出是带有速

uytguytgf的博客 6497

从星形到三角形:永磁同步电机FOC+SVPWM控制的相位偏移与扇区重构

本文深入探讨了将FOC+SVPWM控制方案从星形接法永磁同步电机移植到三角形接法时遇到的核心挑战。文章重点解析了由绕组连接方式差异导致的30度相位偏移问题,并详细阐述了如何为此重构扇区判断逻辑、矢量作用时间计算以及电流采样变换,为工程师提供了从理论到实践的完整移植指南。

ujm5678901的博客 544

【AI大模型】RAG 入门指南:从零开始构建一个 RAG 系统,大模型入门到精通,收藏这篇就足够了!

本文将为读者提供一个从零开始搭建一个 RAG 应用的入门教程。

2401_82469710的博客 961

electron windows设置镜像地址环境变量报错npm error `ELECTRON_MIRROR` is not a valid npm option

如果你是在使用某个特定的脚本或配置文件,请检查该文件中是否有不正确的配置项,并进行相应的修正。确保你遵循electron的官方安装指南,并且没有包含不必要的或错误的配置选项。如果问题依然存在,可以查看npm的官方文档或者相关社区获取更多帮助。

qq_36158551的博客 3324

【宠粉赠书】大模型RAG实战:RAG原理、应用与系统构建

为了回馈粉丝们的厚爱,今天小智给大家送上一套大模型RAG实战指南——《大模型RAG实战:RAG原理、应用与系统构建》。这是一本已经被市场公认的大模型RAG的标准性著作,极具实战性和技巧性,阅读本书,先人一步实现能力跃迁,提升你的开发技能,与我们一起在智能开发的道路上不断前行。

踏雨歌青春,诗酒趁年华 5890

工控上位机开发学习路线与核心技术解析

工控上位机开发是工业自动化领域的关键技术,通过计算机软件实现对工业设备的监控与控制。其核心在于掌握工业通信协议(如Modbus、OPC UA)、数据处理算法和可视化开发三大能力。上位机系统需要高效解析设备通信协议,处理实时数据,并提供直观的人机交互界面。在智能制造浪潮下,掌握C#语言和工业协议开发能力成为工程师的核心竞争力。典型应用场景包括生产线监控、设备远程运维等。本文基于工业现场实践经验,详解从协议解析到界面优化的全链路开发要点,特别针对Modbus协议调优、WPF性能优化等高频问题提供解决方案。

weixin_30376083的博客 550

Flink上传的Jar包去了哪里?大数据

在使用Flink时,我们通常会将应用程序打包成Jar文件并将其上传到Flink集群以执行。总结起来,Flink上传的Jar包实际上会暂时存储在JobManager的本地文件系统中的一个临时目录中。在上传过程中,Flink会将Jar文件存储在JobManager的本地文件系统中的一个临时目录中。一般来说,Flink会在。希望本文对你解答了Flink上传的Jar包去了哪里的疑问,并且能够帮助你更好地理解Flink的工作原理。接下来,我们可以使用Flink命令行工具将Jar文件提交到Flink集群。

AlianBlank的博客 865

RAG 入门指南:从零开始构建一个 RAG 系统,大模型入门到精通,收藏这篇就足够了!

我在以前的文章中有介绍过 RAG 的概念、原理以及应用等,但其实,亲自动手来构建一个 RAG 系统或许能够让我们更快速的理解 RAG 到底是什么。

瓦罗兰特顶级C位的博客 1037

锂电池SOC估计 | 基于LSTM长短期记忆神经网络的锂电池SOC估计(附matlab完整代码)

锂电池SOC估计 | 基于LSTM长短期记忆神经网络的锂电池SOC估计(附matlab完整代码)

前程算法屋的博客 1023

AIGC实战之如何构建出更好的大模型RAG系统

本文介绍了如何构建出更好的大模型RAG系统,希望能对学习大语言模型和RAG的同学们有所帮助。 文章目录 1. 前言 2. S1 初级RAG 3. S2 高级RAG 3.1 模型测 3.2 策略测 3.3 模型微调测 4. S3 超级RAG 5. 本书作者 6. 内容简介 7. 购买链接

weixin_43178406的博客 3万+

linux 基于debian/ubuntu AB系统适配(二)-updateEngine移植

其实A/B系统的原理很简单,大部分的工作都集中在uboot上,rootfs只是起到一个辅助的作用,但这个作用也就必不可少的。你会发现在这个其中并没有kernel的参与。

badbayyj的博客 1033

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【粉丝福利社】大模型RAG应用开发:构建智能生成系统

在数字化和信息爆炸的时代,自然语言处理(Natural Language Processing,NLP)技术已成为推动创新和提升效率的关键驱动力。尤其是在需要精准、实时地进行信息交互的应用中,如问答系统、客户支持和专业文档管理等,如何让生成模型实现高效且精准的信息生成与检索成为核心需求。

愚公智库 11万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

大模型好书推荐 | 大模型RAG实战:RAG原理、应用与系统构建(附PDF)

《大模型RAG实战:RAG原理、应用与系统构建》是一本由NLP和AI领域的资深技术专家联合撰写的实战指南。随着大模型技术的爆发,尤其是ChatGPT等产品的兴起,知识库问答产品迅速走红,引发了RAG(检索增强生成)系统的广泛关注与讨论。

AAI666666的博客 2124

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: 大模型实体书卖出10000册!这本《实战AI大模型》PDF无敌了
下一篇: Transformer+BERT,最通识易懂的书《BERT基础教程:Transformer大模型实战》
Llama-Turbo
博客等级 码龄4年 9901粉丝 2022原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值