AI Agent从无到有48: RAG 检索调优实战 — 上下文压缩、排序与相似性分数

【信息科学与工程学】计算机科学与自动化——第三百零五篇 计算机系统中的各类运算操作01 编号类型领域运算操作运算类型算法算法的详细设计及数学分析参数列表及参数的数值设计应用场景 (100+条)集合运算​1集合运算关系代数并集 (Union)集合运算归并排序去重合并两个集合,去除重复元素。时间复杂度 O(n+m),n,m为两集合大小。输入:集合A, B。输出:A∪B。数据集成、多表结果合并、去重后的全量数据提取。2集合运算关系代数交集 (Intersection)集合运算哈希交集找出同时属于两个集合的元素。平均时间复杂度 O(min(n,m)),最坏 O(n*m)。输入:集合A, B。输出:A∩ 阅读详情

纲要

  • 检索调优的必要性
    • 原始向量检索的固有局限
    • 调优的核心目标:提升召回率与答案精准度
  • 上下文压缩机制
    • LLMChainExtractor:基于大模型提取相关片段
    • LLMChainFilter:基于大模型进行文档级筛选
    • DocumentCompressorPipeline:串联多个压缩器构建处理流水线
  • 排序优化策略
    • “Lost in the Middle”现象解析
    • LongContextReorder:重排文档顺序以提升关键信息捕获率
  • 相似性分数过滤
    • similarity_search_with_score:获取带相关性分数的检索结果
    • 自定义打分逻辑与元数据写入
  • 进阶方向:知识图谱增强 RAG(GraphRAG)
  • 完整可运行示例:基于模拟模型演示压缩与排序全流程

引言

在 RAG 系统中,向量数据库返回的初步检索结果通常包含大量冗余、无关或排序不佳的内容[reference:0]。直接将未经处理的原始文档片段馈入大模型,不仅会浪费宝贵的上下文窗口资源,更可能因噪声干扰而显著降低最终回答的质量。

因此,在检索阶段之后引入调优环节——涵盖上下文压缩、智能排序与相似性分数过滤——已成为提升 RAG 应用准确性的关键路径。LangChain 提供了一套即插即用的调优组件,能够在不改动核心检索逻辑的前提下,显著优化检索结果的质量[reference:1][reference:2]。本文将结合实际代码,系统演示如何在不依赖外部 API 的情况下实现上述优化策略。

上下文压缩:从粗糙检索到精炼上下文

上下文压缩器能够有效过滤检索结果中与查询无关的内容,或直接从文档中提取最相关的句子。LangChain 提供了 LLMChainExtractor(基于大模型提取相关片段)和 LLMChainFilter(基于大模型决定是否保留整篇文档)两种压缩器,并支持通过 DocumentCompressorPipeline 将多个压缩器串联为复杂的处理流水线[reference:3][reference:4]。

环境准备

以下示例使用 FakeListChatModel 模拟大模型行为,以展示压缩效果,无需真实 API 调用。

安装依赖:

pip install langchain langchain-core langchain-community chromadb

LLMChainExtractor:提取相关片段

LLMChainExtractor 会对每一篇文档进行分析,仅提取其中与查询相关的部分,生成新的精简文档[reference:5]。

from langchain_community.embeddings.fake import FakeEmbeddings
from langchain_community.vectorstores import Chroma
from langchain_core.documents import Document
from langchain.retrievers import ContextualCompressionRetriever
from langchain.retrievers.document_compressors import (
    LLMChainExtractor,
    LLMChainFilter,
    DocumentCompressorPipeline,
)
from langchain_community.chat_models.fake import FakeListChatModel

# 1. 构建测试向量库
docs = [
    Document(page_content="LangChain 支持 OpenAI、DeepSeek 等多种模型。"),
    Document(page_content="RAG 系统包含加载、切片、嵌入、检索、生成等步骤。"),
    Document(page_content="模型部署需考虑延迟、成本以及云端或本地的选择。"),
    Document(page_content="今日天气晴朗,适宜户外运动。"),
]
embeddings = FakeEmbeddings(size=128)
vectorstore = Chroma.from_documents(docs, embeddings, collection_name="tune")
base_retriever = vectorstore.as_retriever(search_kwargs={"k": 3})

# 2. 使用 LLMChainExtractor 进行压缩
# 模拟大模型:返回与查询相关的精简内容
extract_llm = FakeListChatModel(responses=["模型部署需考虑延迟、成本以及云端或本地的选择。"])
extractor = LLMChainExtractor.from_llm(extract_llm)
compression_retriever = ContextualCompressionRetriever(
    base_compressor=extractor,
    base_retriever=base_retriever,
)
results = compression_retriever.invoke("如何部署模型?")
print("压缩后文档数:", len(results))
for doc in results:
    print("内容:", doc.page_content)

ContextualCompressionRetriever 接受一个 base_compressor(即压缩器)和一个 base_retriever(即基础检索器),在检索后自动对结果进行压缩处理[reference:6][reference:7]。

LLMChainFilter:文档级快速筛选

LLMChainFilter 用于决定是否保留整篇文档,而不修改其文本内容。模拟大模型需返回 “YES” 或 “NO”[reference:8]。

filter_llm = FakeListChatModel(responses=["YES", "NO", "YES"])
compressor_filter = LLMChainFilter.from_llm(filter_llm)
filter_retriever = ContextualCompressionRetriever(
    base_compressor=compressor_filter,
    base_retriever=base_retriever,
)
results = filter_retriever.invoke("如何部署模型?")
print("过滤后文档数:", len(results))

DocumentCompressorPipeline:流水线组合

通过 DocumentCompressorPipeline 可以将多个压缩器串联执行,实现更复杂的处理流程[reference:9]。

pipeline = DocumentCompressorPipeline(transformers=[compressor_filter, extractor])
pipeline_retriever = ContextualCompressionRetriever(
    base_compressor=pipeline,
    base_retriever=base_retriever,
)
results = pipeline_retriever.invoke("如何部署模型?")
print("管道压缩后文档数:", len(results))

排序优化:应对“Lost in the Middle”现象

研究表明,大模型在处理长上下文时,更容易记住文档开头和结尾的内容,而对中间部分的信息容易忽略——这一现象被称为“Lost in the Middle”[reference:10][reference:11]。LangChain 的 LongContextReorder 通过将最相关的文档排在序列的首尾两端,将次相关文档置于中间,从而有效提升关键信息被模型捕获的概率[reference:12]。

from langchain_community.document_transformers import LongContextReorder

# 模拟一批检索结果
retrieved_docs = [
    Document(page_content="北京故宫是中国明清两代的皇家宫殿。"),
    Document(page_content="天气炎热,注意防暑。"),
    Document(page_content="故宫博物院收藏了大量珍贵文物。"),
    Document(page_content="今日油价调整。"),
    Document(page_content="故宫每日限流8万人次。"),
]

reorder = LongContextReorder()
reordered_docs = reorder.transform_documents(retrieved_docs)
print("重排序后的文档顺序:")
for i, doc in enumerate(reordered_docs):
    print(f"{i+1}: {doc.page_content}")

执行后可以看到,与“故宫”最相关的文档被移到了首尾位置,无关信息则被排布到中间区域,从而优化了模型对关键信息的注意力分配[reference:13]。

相似性分数过滤与自定义打分

多数向量数据库支持 similarity_search_with_score 方法,能够在返回文档的同时给出相关性分数。开发者可以利用该分数进行阈值过滤,或将分数写入文档的 metadata 中供后续环节使用。

# 使用同一向量库进行带分数的检索
results_with_score = vectorstore.similarity_search_with_score("模型部署", k=2)
for doc, score in results_with_score:
    print(f"分数: {score:.4f},内容: {doc.page_content}")

# 将分数写入文档元数据
scored_docs = []
for doc, score in results_with_score:
    doc.metadata["score"] = score
    scored_docs.append(doc)
print("第一个文档的分数:", scored_docs[0].metadata["score"])

进阶方向:知识图谱增强 RAG(GraphRAG)

当知识库中存在大量实体及其复杂关联关系时,单纯依靠向量相似度难以有效挖掘间接关联信息。GraphRAG 在传统 RAG 架构基础上引入知识图谱,利用图结构遍历查询实体相关的其他节点(例如通过“栖息地”或“食性”找到关联物种),将图遍历结果与向量检索结果融合,从而提供更全面的上下文信息。LangChain 已提供 GraphRetriever 等组件支持该模式,尤其适用于生物分类、法律案例关联、产品配件推荐等需要多跳推理的场景。

参考文档

官方文档

参考链接

总结

检索调优的核心目标是将 RAG 系统从“能搜到”升级为“搜得准、答案精”。上下文压缩有效去除噪声信息,智能排序避免关键内容被模型忽略,相似性分数过滤则进一步提升了信噪比。

上述组件具有高度的灵活性,可在不改动核心检索逻辑的前提下自由组合与叠加。从简单的向量检索出发,逐步引入压缩、排序与分数过滤机制,将能够构建出高质量、高可靠性的 RAG 应用。

【信息科学与工程学】【数据中心】第三十五篇 云计算数据中心的学科知识04 编号学科(课程)核心知识点在云计算/云存储/云网络/云安全/云MaaS中的作用代表教材/资料/论文 + 数学方程式列表工业界应用D1421​云原生数据库:TiDB​HTAP(混合事务/分析处理)、分布式SQL、水平扩展、强一致(Raft)、自动故障恢复、与MySQL兼容、TiFlash列式引擎提供弹性扩展的分布式数据库;支撑高并发在线交易与实时分析教材:《TiDB in Action》PingCAP(2020) 论文:《TiDB: A Raft-based HTAP Database》(2017) 阅读详情

相关推荐

AI学习-langchain

也可以安装一下读取环境变量的依赖。

qq_62408075的博客 332

RAG进阶实战:查询重写、语义分块与混合检索技术详解

RAG(检索增强生成)是一种将外部知识检索与大语言模型生成能力结合的关键技术,其核心原理在于通过向量检索定位相关文档片段,再注入LLM上下文以提升回答准确性与事实性。然而,基础RAG常因语义漂移、分块失当、单模态检索局限等问题导致召回率低、幻觉频发。技术价值体现在显著提升垂直领域问答的精准度、可解释性与工程鲁棒性。典型应用场景包括法律合同审查、医疗报告解析、专利相似性分析等对术语准确性、数值保真度和逻辑完整性要求极高的任务。本文聚焦查询重写与语义分块两大进阶技术,结合混合检索与重排序实践,提供可复现的工业级

huqiyes的专栏 385

传输线的特征阻抗

信号源内阻与所接传输线的特性阻抗大小相等且相位相同,或传输线的特性阻抗与所接负载阻抗的大小相等且相位相同,分别称为传输线的输入端或输出端处于阻抗匹配状态,简称为阻抗匹配。否则,便称为阻抗失配。有时也直接叫做匹配或失配。指一个电路输入端的等效阻抗。在输入端上加上一个电压源U,测量输入端的电流I,则输入阻抗Rin就是U/I。可以把输入端想象成一个电阻的两端,这个电阻的阻值,就是输入阻抗。- 对于电压驱动的电路,输入阻抗越大,则对电压源的负载就越轻,因而就越容易驱动,也不会对信号源有影响;

学海无涯的专栏 4464

大模型技术实战:Prompt工程、RAG与Agent系统详解

大模型技术正在重塑人工智能应用开发范式,其核心在于如何有效引导模型完成特定任务。Prompt Engineering作为基础交互方式,通过结构化提示设计可显著提升输出质量与稳定性。检索增强生成(RAG)技术则通过向量搜索与知识库结合,解决了模型知识局限性与时效性问题。Agent系统进一步实现了复杂任务的自动化编排,结合工具调用与决策推理能力。这些技术在电商客服、金融分析等场景中已展现显著价值,例如某案例通过提示优化将客服解决率提升40%,RAG系统使法规查询准确率达到94%。理解这些核心方法论的工程实现,是

weixin_33695082的博客 359

MinerU与Docling:智能文档处理框架对比

本文对比分析了MinerU和Docling两大智能文档处理框架。MinerU专注于高精度PDF解析,采用多模态AI技术,在学术文献、金融报表等复杂文档处理上表现优异;Docling则定位企业级多格式文档处理平台,支持10+格式转换,更适合文档管理系统等场景。技术层面,MinerU基于VLM模型实现端到端处理,Docling采用插件化多后端架构。性能测试显示MinerU精度更高(95%+),但资源消耗较大;Docling处理速度更快(1-3秒/页),部署更灵活。

轩哥的个人研究和成长记录 1911

数字蓝牙功放

数字蓝牙功放(TPA3110+BK8000L),基于D类数字功放芯片TPA3116蓝牙功放,HIFI级带滤波15Wx2蓝牙数字功放,支持有线和蓝牙两种音源输入

runweipa的博客 1419

AI4Research 综述 25 人工智能如何助力科研

本文系统综述了人工智能(AI)在科研领域的应用(AI4Research),提出了涵盖科学理解、学术调研、科学发现、学术写作和同行评审五大任务的新分类体系。研究梳理了AI在跨学科科研中的核心能力,包括文本/图表理解、文献检索、假设生成、实验自动化、论文撰写与评审等关键环节。文章不仅整合了相关多学科应用和资源(如数据集、工具库),还指出了未来六大研究方向:跨学科AI模型开发、科研伦理治理、协作研究系统、可解释性增强、动态实验优化及多模态整合。这项工作为AI驱动科研提供了系统性框架,有望推动科研范式的智能化转型。

人无远虑,必有近忧 285

手把手教你在全新服务器内网安装OpenEuler 22.03 LTS SP4+ 安装 openGuass 5.0.0(LTS) 数据库

openEuler是面向数字基础设施的操作系统,支持服务器、云计算、边缘计算、嵌入式等应用场景,支持多样性计算,致力于提供安全、稳定、易用的开源服务器Linux操作系统。

cgqyw的专栏 3737

第39章:Redis 8.x 新能力实战:JSON、Query、Vector 与语义缓存

本文探讨了基于Redis构建智能客服语义缓存系统的技术方案,通过四个关键实验验证Redis在JSON文档存储、Query Engine索引、向量检索和语义缓存集成方面的能力。文章揭示了RedisJSON通过树状结构实现原子性局部更新的优势,分析了Query Engine不同索引类型的特点和适用边界,比较了FLAT和HNSW两种向量检索策略的性能差异。最终提出一个端到端的RAG语义缓存Pipeline,并强调工程实践中需要在延迟、内存成本、准确性之间进行权衡。

davidwang456的专栏 617

非华为电脑与MatePad Pro多屏协同实战:从安装管家到攻克连接难题

本文详细介绍了在非华为电脑上安装华为电脑管家并实现与MatePad Pro多屏协同的完整指南。从安装步骤、常见连接失败解决方案到华为账号绑定技巧,提供了实用的操作方法和硬件优化建议,帮助用户攻克连接难题,提升多屏协同的稳定性和流畅度。

weixin_30263073的博客 233

C语言面试,8道一定会遇到的----关于指针的笔试题详解

C语言面试,8道一定会遇到的----关于指针的笔试题详解

m0_55322924的博客 463

51c大模型~合集111

OpenAI 的某发言人表示:「为了提高清晰度和安全性,我们增加了一个额外的后处理步骤,其中模型会审查原始的思维链,删除任何不安全的内容,然后简化某些复杂的思维。可以看到,虽然 ChatGPT 确实完成了任务并展示了总结版的思维链,但似乎并未如 OpenAI 发言人说的那样给出与提示词语言同样语言的总结版。北大-灵初联合实验室表示,Align-DS-V的多模态强推理能力是VLA模型大脑端的核心,接下来的研究训练计划,是利用多模态推理模型的跨模态穿透能力,实现action穿透,最终实现真正高效的VLA模型。

whaosoft~aiotの开发板商城 2317

不用变压器也能联网?手把手教你PHY芯片直连的3种实用方案

本文详细介绍了PHY芯片直连的3种实用方案,帮助开发者在物联网设备中实现更经济、更精简的网络连接设计。通过分析电压驱动型和电流驱动型PHY的核心原理,提供具体的电路配置和优化建议,确保信号质量的同时节省成本和空间。

smartcontract5的博客 333

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 224

Cursor自动生成测试用例

或者把你已有的规则直接复制粘贴到这个文档内(这里我用的是Markdown格式和CSV格式的测试用例生成规则,可以同时生成Markdown和CSV格式的测试用例)。在AI对话框这里,我们可以看到Cursor会逐步来帮我们生成测试用例,先分析识别需求文档,然后生成测试用例,最后会进行质量检查,确保生成的用例符合规范。生成的Markdown格式,可直接导入Xmind,生成思维导图,对应到具体的功能模块看具体的测试点,逻辑会更直观一些。(1)选中规则文档和需求文档:@你的测试用例规则文档@你的需求文档。

十二测试录 2432

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

6 款电商 AI 图片生成软件实测|国内 + 跨境卖家工具清单

电商 AI 作图工具已经从 "能不能用" 进入了 "好不好用" 的阶段。对于绝大多数卖家而言,现在的 AI 工具已经可以覆盖 60%-80% 的基础商品图需求,显著降低拍摄和设计成本。选择工具的核心逻辑不是 "哪款最强",而是 "哪款最适配你的品类、平台规模和团队能力"。垂直电商工具胜在工作流效率,通用生图工具强在创意上限,模板类工具赢在上手速度。建议根据自身业务阶段,搭配 1-2 款主力工具 + 1 款辅助工具,形成适合自己的视觉生产流程。

Mardi_Ladin的博客 398

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...

我用 GPUWorks 在 M1 Pro 上搭了个发票识别原型

公司里经常要看电子发票。我想先做个小原型:把 PDF 发给一个自己部署的图文模型,让它提取发票类型、日期、交易双方和金额,再把结果交给同事核对。这个原型不用先接财务系统,先看看从部署到调用要走多少步,模型返回的内容能不能帮上忙。

鸽芷咕的博客 2万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

您您这可以把问小白的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。AI导出鸭

第三层是格式编译层。这个决策背后的判断很清晰:一个批量导出工具的价值,不在于“试三次”,而在于你真正用它处理了几十份技术文档、访谈记录或课程讲义之后,它是否值得留在你的工作流里。问小白的会话列表通过分页接口加载,AI导出鸭 在页面运行时建立旁路监听,捕获每一次分页请求返回的完整对话清单,包括会话 ID、标题、时间戳和隐藏的元数据字段。让AI导出回归优雅——这句话说的是:导出不该是体力活,而应该是一次完整的、可预期的文件交付。注意:这里的“批量”指的是左侧列表里的多个独立会话,不是一条会话内的多轮对话。

laoyunsi的博客 246

【从零理解 Spring AI · 12】MCP 的两种角色:做客户端还是做服务端

上一篇讲了 MCP 的概念:标准协议、三大角色、M+N 替代 M×N。

nice_lcj520的博客 501

河道漂浮物目标检测数据集

目标检测,yolo,河道漂浮物目标检测数据集

DL_data_set的博客 201

AI Agent之核心框架

A: 显式 Thought 有三类价值:可解释性(便于人类审计)、可调试性(定位哪一步选错工具)、学习信号(可做监督微调或评估中间步骤质量)。ReAct 把推理与 可执行行动 绑定,每一步行动后都有 真实 Observation 反馈,从而用工具结果约束生成,降低闭卷幻觉。做完不等于结束——还要 评估做得好不好,把 教训 记下来,下次 带着教训重试,反思作为 记忆,影响后续尝试的策略。工作流程:Action → Evaluation → Reflection → Retry。A: 普通 CoT 只在。

剑雨巍巍的博客 199

AI 应用开发工程师技术实践:大模型接入、通用组件封装与性能优化

本文提出AI应用从PoC到生产的核心挑战:模型调用的持续可用、可控与可优化。通过构建统一LLM网关实现多供应商路由与故障转移,封装对话、工具调用与RAG组件以解耦业务逻辑,结合前缀缓存、批处理与流式背压治理等性能优化手段,形成“接通→接稳→接快”的工程路径,最终以工程化能力决定AI应用的生产可用性。

2301_79189962的博客 558

AI前沿日报 · 2026-11-04 | 祛魅时刻:Astra“纯读权重“神话的崩塌

①Astra"裸权重通吃"被spaCy创始人Honnibal精准祛魅——仅1/3实验真裸读,数学能力提升依赖Python+50次迭代;②Simon Willison用Qwen 3.8-27B端侧复现权重空间编程;③Nvidia开源Auto-Ontology自动知识图谱;④$800开源全域抓取机器人Stringman;⑤OpenAI悄然重开Codex训练开关引信任危机;⑥DeepMind发布Gemini 4 Argon机器人基础模型;⑦美国科技巨头隐性AI债务达3.2万亿美元,6个月增90%。

johnsong2009的博客 574

大模型 Embedding 与向量相似度详解

Embedding 解决的问题:计算机不懂文字,但懂数字│▼文本 → 向量(1024维浮点数数组)│▼相似度解决的问题:怎么判断两个向量(文本)有多接近│▼余弦相似度:看向量方向的夹角,越接近0°越相似│▼最终效果:语义搜索——理解意思,而非字面匹配一句话总结:Embedding 把文字变成数字,余弦相似度比较数字的方向,两者结合实现了"理解语义"的搜索。

T3165919332的博客 90

GPT-1 架构和计算细节

下面配合框图,对 GPT-1 的每个组件做公式展开 + 数值实例(配置:12 层 × 768,12 头,FFN 3072,词表 40478,共 117M 参数)。GPT-1 把翻译模型的编码器-解码器砍掉一半,只留解码器,然后以"预测下一个词"为目标在 BooksCorpus 上预训练。与 2017 原版的四个架构差异(框图中标 ★):h0=E[token]+Epos[position],E∈R40478×768, Epos∈R512×768h^0 = E[\text{token}] + E_{pos}[\

eloudy的专栏 278

终端 AI 审计与 “龙虾” 类智能体风险治理:从可见性到闭环溯源

生成式 AI 办公普及之后,数据泄露风险逐步下沉到终端。员工将合同、源代码、客户资料粘贴至公有大模型,以及龙虾(OpenClaw)这类本地开源 AI 智能体的滥用,成为企业安全新挑战。传统网络边界防护存在审计盲区,本文从风险链路拆解、核心能力模型、分级治理策略、落地踩坑点以及技术局限性多角度,分享终端侧 AI 安全治理的实践思路。

2401_86491085的博客 640
上一篇: AI Agent从无到有47: 检索器高级应用 — 查询重写与查询重构实战
下一篇: AI Agent从无到有49: 从零构建 ChatDoc 文档对话助手之基于 LangChain 与 BGE-M3 构建企业级文档对话助手
Wang's Blog
博客等级 码龄12年 7421粉丝 2412原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值