【值得收藏】基于LLM的智能简历匹配系统设计与实现详解

未来简历:大模型研发工程师简历范文及攻略 该项目旨在整合文本、图像和音频数据,开发一个能够进行跨模态理解和生成的AI模型。的算法工程师职位的简历时,关键在于准确展现您在大型语言模型开发、自然语言处理和机器学习方面的专业技能、项目经验和技术成就。确保您的简历能够准确反映您的工作经验和专业技能,增强您在求职市场中的竞争力。清晰陈述您的教育背景,特别是与人工智能、计算机科学或相关领域的学历,例如“XX大学,人工智能专业”。使用深度学习技术,特别是基于Transformer的架构,如BERT和GPT,来构建和训练模型。 阅读详情

本文介绍基于大语言模型(LLM)的智能简历匹配系统设计与实现,针对传统简历筛选效率低、不智能、难以量化等痛点,提出结合向量检索与结构化信息匹配的创新方案。文章详解系统架构、简历解析、信息提取、多维度匹配评分等关键技术点,提供从自然语言交互到量化评估的完整实现路径。通过阅读本文,读者将掌握利用LLM构建智能招聘系统的全流程方法,提升招聘效率与精准度,为人力资源数字化转型提供实用技术参考。

招聘流程中的简历筛选是核心环节。传统方法严重依赖人工,效率低下且容易遗漏。本文将尝试设计和实现一个基于LLM的智能简历匹配系统,通过多维度多层次的评估,理解真实的招聘需求,实现自然语言交互的、智能化、可量化的简历筛选过程。

  • 挑战与系统目标
  • 解决方案设计
  • 经典RAG方法的不足

  • 升级的方案

  • 系统模块架构

  • 关键实现要点
  • 测试与未来演进

01 挑战与系统目标

传统HR(或HR管理系统)的简历匹配与筛选方法严重依赖人工筛选。存在以下挑战:

  • 效率低:更多的依靠HR人工筛选海量简历,耗时耗力
  • 不智能:关键词匹配,可能错过合格人选(比如采用了不同术语)
  • 难以量化:缺乏对候选人与招聘职位匹配度的深层洞察力
  • 无法交互:无法处理自然语言描述的人才需求,可交互性不足
  • 引入偏见:人工筛选可能会无意中引入个人偏见,导致评价偏差

随着大模型 (LLM) 和AI时代的到来,有望通过自动化候选人匹配和提供富有洞察力的数据驱动分析来优化招聘流程,并提高工作效率,而其中最关键的环节就是智能且高效的简历匹配与筛选。

我们期望基于LLM的智能简历筛选系统能够有效缓解以上痛点,实现以下核心能力:

  • 自然语言交互:能够通过自然语言交互,接受口语化的筛选需求,如"找个5年Python开发经验的后端工程师",同时也支持JD(Job Description)匹配。

  • 智能信息提取:智能解析简历/招聘需求/JD文件,并提取结构化的关键信息(技能、经验、学历等),用于后续的匹配与筛选。

  • 量化的匹配算法:结合LLM的语义理解与更精确的结构化信息匹配规则,进行多维度的综合计算与评分。

  • 多层次的筛选:从简单的语义相关性、到硬性条件过滤,再到各项软性要求的综合评估,构建漏斗式的多层筛选体系。

  • 候选人分析:深入了解候选人针对招聘岗位的合适原因、优势与差距,并给出建议。

02 解决方案设计

【经典RAG方法的不足】

实现一个基于LLM的简历匹配系统最直接的思路就是借助RAG(检索增强生成)的思想:基于向量的语义检索来获得匹配的简历。流程如下:

但是,正如大部分经典RAG在真实场景中的应用效果往往不尽如人意,这种简单方案在真实应用中是远远不够的。体现在:

  • 语义泛匹配,精度不足

    尽管相对关键词匹配有很大进步,但本质上仍然是模糊匹配。比如"3年Python经验"和"5年Java经验"可能有较高语义相似性,但技能并不匹配。

  • 无法处理一些更精确的规则与条件

    比如,工作年限">= 3年"这类硬性要求不太适合用语义相似度来进行筛选。同样,薪资范围"15-25K"与"期望20K"的匹配也不适合用向量完成。

  • 语义匹配缺乏直观的可解释性

    向量算法会给出相似度分数,但无法解释为什么匹配,这导致HR无法很好的了解候选人的具体优势和不足。这会降低HR对AI结果的信任度。

  • 容易被无关信息(噪声)所干扰

    考虑到简历格式与内容的多样性,关键信息容易被“稀释”,导致匹配不够精准。比如:并不太重要的兴趣爱好可能影响到匹配结果。

【升级的方案】

我们在简单的向量匹配方案上做升级,核心思想总结成三点:

  • 向量检索与结构化信息匹配规则相结合
  • 硬性条件过滤与软性条件评估相结合
  • 一个多维度的匹配度加权评分算法

核心匹配过程是一个三阶段的筛选过程,逐步缩小候选范围,最后输出候选人:

如上所示,从HR的自然语言需求或给定的职位描述(JD)出发,在借助LLM解析与提取结构化信息后(当然首先要对候选简历做向量索引):

  • 先通过语义向量检索初步筛选出相对相关的简历若干份
  • 然后依据硬性条件(如工作年限不低于X年等)过滤掉不合规的简历
  • 再对剩余候选进行多维度匹配评分,按分数从高到低排序输出,同时输出评估结果的解释

这种漏斗式的筛选流程确保了效率和准确度的平衡:第一阶段快速粗筛不遗漏可能相关的简历,第二阶段确保关键要求得到满足,第三阶段对符合要求者再进行精细打分排序。

【系统模块架构】

系统的核心模块架构如下,左侧是简历文档库及其解析处理;右侧则是输入查询与核心的筛选/输出过程:

主要包含以下模块:

  • 文档解析与信息提取:通过多模态LLM(例如支持PDF的模型)将原始PDF简历解析成结构化的文本(Markdown格式),并进一步提取简历中的关键字段(技能、工作年限、学历等元数据)。
  • 向量索引:将解析后的简历内容向量化,存入向量数据库(如 ChromaDB)。同时将每份简历的元数据也存储,便于后续过滤和打分。
  • 查询理解:利用LLM解析HR输入的自然语言需求或JD描述,提取出筛选的关键条件(如要求的技能、经验年限范围、目标岗位类别等)。
  • 语义检索初筛:根据HR需求或JD解析结果,构建查询向量,在向量索引中进行检索,找出语义相关度最高的一批候选简历(例如Top-50),构成初筛名单。
  • 硬性条件过滤:对初筛名单的候选简历,逐一检查是否满足硬性要求(如工作年限>=X、必须掌握某技能、期望薪资在范围Y等),不满足者予以淘汰。
  • 综合评分排序:针对通过硬性筛选的候选者,从多个维度(技能匹配度、行业匹配度、工作地点、薪资匹配度、学历、个人特质等)计算匹配度的加权得分,并结合语义相关性,计算综合分数,最后按照分数高低排序输出;借助LLM同时可输出候选者的综合评价。

03 关键实现要点

在这一部分,我们将深入探讨该系统在实现过程中的几个关键技术点,包括:简历解析、元数据提取、向量索引、查询理解、匹配算法以及结果生成等。

【简历解析:从PDF到结构化内容】

挑战:简历通常以 Word/PDF 文档形式提供,直接对 PDF 进行分析并不方便。一般先将 PDF 转换为机器可读的文本格式,并尽可能保留简历的结构和关键信息。

方案:利用成熟的文档解析器/多模态大模型对PDF进行解析,并输出****Markdown格式的文本,比如LlamaParse/RAGFlow等。

  • 选择Markdown 格式输出:因为它能保留文档的层次结构(标题、列表、表格等),相比纯文本,Markdown 更加结构化,利于后续LLM理解上下文层次:
......
## 教育背景
- 本科 · 计算机科学与技术 · 清华大学 (2014-2018)
## 工作经验
- **Python后端工程师** · XYZ科技 (2018-至今)
- 参与开发分布式后台系统,使用Django框架...
  • 解析结果缓存:PDF解析是相对耗时的操作,你需要设计了缓存机制。每份简历第一次解析后将结果保存,下次如果文件未改动则直接加载缓存。

如何借助成熟的解析器/多模态模型将PDF甚至PPT解析成Markdown,我们在之前的文章中有过详细介绍,此处不再展开。

【元数据生成:简历结构化信息提取】

将简历转为Markdown只是第一步,我们还需要从中提取出关键的结构化信息,以方便后续匹配和过滤。比如候选人的姓名、联系方式、技能列表、工作年限、学历、期望薪资、工作地点等。

通常我们可以定义一个Metadata元数据模型来统一表示这些字段:

class Metadata(BaseModel):
name: str                # 姓名
email: str               # 邮箱
phone: str               # 电话
skills: List[str]        # 核心技能列表(最多10个)
domain: str              # 所属领域(IT/金融/销售等)
education: str           # 最高学历(本科/硕士/博士/专科)
work_years: int          # 工作年限(整数)
expected_salary: str     # 薪资(如“20-25K”)
current_location: List[str]  # 现居地
custom_tags: List[str]   # 个性标签(如“技术专家, 沟通能力强”等)
....

利用LLM进行信息提取:编写一个提示(Prompt),让LLM根据解析后的简历Markdown来填写上述Metadata模型;这里最好是借助具有直接结构化输出能力的LLM来完成:

......
metadata = await self.llm.astructured_predict(
Metadata,
prompt_template,
text=text,
)
# 保存到缓存
save_metadata_to_cache(text, metadata)

为了减少开销,你也可以为这个步骤做结果缓存,比如以简历文本内容生成哈希值作为缓存Key,提取的结果存入缓存值。

注意:提取的结果往往需要规范化。比如把多个技能名称做同义词归一(“JavaScript”和“JS”归为同一技能);学历需要统一成标准描述等。一种方法是通过提示词进行限定(比如学历);另一种方法是让LLM搜集后保存,后续筛选时再使用搜集的结果做限定(比如技能)。

【向量索引:用于语义检索】

在完成原始简历文件的解析,并提取足够的结构化关键信息后,就可以使用传统的RAG方法创建向量索引。借助开发框架可以快速完成,以LlamaIndex为例:

#针对解析的每个文档做处理
for...
document = Document(
text=full_text,
#设置LLM提取的元数据
metadata={
'skills':...
'country': ...
}
)
processed_documents.append(document)
...
print("🔄 创建新的向量索引...")
# 创建向量存储与索引
storage_context = StorageContext.from_defaults(vector_store=self.vector_store)
index = VectorStoreIndex.from_documents(
processed_documents,
storage_context=storage_context
)
#检索器:用于语义检索
retriever = self.index.as_retriever(similarity_top_k=SIMILARITY_TOP_K)
...

实际应用中也需要考虑索引的缓存机制,避免不必要的重复嵌入操作。索引完成后,你就可以获得检索器,后续将用于语义检索。

【查询理解:从自然语言到过滤条件】

HR的筛选需求是非结构化的自然语言,系统需将其转换为可用的结构化条件。这一步同样借助LLM来完成查询意图解析。例如,对输入查询 “寻找3-5年Python后端开发经验的工程师,熟悉Django框架,有分布式系统经验”,我们希望提取出:

  • 所属行业:信息技术
  • 技能要求:Python;Django;分布式系统;后端开发
  • 工作年限:最低3年,最高5年

实现时可以利用简历解析时相同的Metadata模型,让LLM进行结构化输出;部分信息可以利用简历解析时获得的列表做限定,比如技能列表等。

{
"min_work_years": 3,
"max_work_years": 5,
"skills": ["Python", "Django", "分布式系统"],
"domain": "信息技术"
......
}

【多阶段筛选:语义+硬性+评分】

阶段1:语义匹配初筛

使用向量检索对简历进行语义初筛。可以直接用HR查询问题或JD文本,也可以将LLM解析后的查询要点重新组织成一个查询向量,在向量数据库中检索相似度最高的若干简历。取Top-K(例如50份)形成初筛列表。

在此过程中可以设定一个相似度阈值,低于阈值的简历不予考虑。

这一步主要利用语义匹配的召回,把范围扩大,确保潜在合格者不被漏掉。

阶段2:硬性条件筛选

对通过语义初筛的简历,应用硬性规则进行过滤,比如(根据自身需要设定):

  • 工作年限:简历中的 work_years 是否在要求的[min, max]范围内。低于下限或高于上限(有些岗位也不希望候选人经验过高超出薪资等级)都直接淘汰。
  • 学历:有的岗位要求本科及以上学历等,也可以作为硬性门槛。
  • 语言/地域:比如要求英语流利,或者候选人必须在某城市,也可据此过滤。

这一阶段注重精确匹配:凡是不满足硬条件的无论语义多相关都一票否决,从而保证进入下一阶段的候选人一定符合基本要求。

阶段3:多维度综合评分

最后剩下符合硬要求的候选人,我们需要为每个人计算一个综合匹配评分,用于排序。这里设计的综合评分机制如下:

其中关键信息的匹配考虑6个维度(权重见上图):

  • 行业领域匹配度:候选人的行业/领域 (domain) 是否与职位所属领域一致或相近。完全相符计高分,不同领域则减分。
  • 技能匹配度:候选人具备的技能 (skills) 与职位要求技能的契合程度。覆盖越多要求技能,掌握程度越深入,得分越高;有超出技能,可给予奖励分。
  • 薪资匹配度:候选人的期望薪资是否在职位提供范围内。如果候选期望薪资远高于职位水平,匹配度会降低;若相近或稍低,则匹配度高。
  • 学历匹配度:候选人最高学历是否达到职位要求或高出要求。一般而言,在其他条件相似情况下,学历更高者占优势。
  • 地理位置匹配度:候选人当前所在地与工作地点要求的匹配情况。如果职位在北京,而候选人也在北京或愿意来北京,则匹配度高。
  • 个性标签匹配度:根据职位特点,需要某些软素质(如“沟通能力强”、“有管理经验”等),而候选人的简历中是否体现了这些特质标签。如果有体现则加分。

实际应用中,每个维度的考虑都存在细致的区别,你需要精心对算法做设计。以“薪资”这个维度来说,HR和简历中对其描述可能存在非常多的表达方式:月薪/年薪、单位差异(3万/20K)、各种精确或模糊表述(10K+/2万左右/1.5-2万/面议等);即使不匹配,也要考虑差距大小(差距较小代表有协商的可能)等。在某些维度的匹配度计算时,也可以借助LLM+精心设计的few-shot提示词来完成。

每个维度评分可归一化为0~100分,然后按重要性加权求和得到一个总分。同时可以引入初始语义相关性分作为参考(向量相似度在一定程度上反映了简历与JD的整体契合度,包括一些无法结构化量化的隐性信息)。最终得分计算方法如下:

......
metadata_score = (
domain_score * 0.35 +      # 行业匹配:35%
skills_score * 0.35 +      # 技能匹配:35%
salary_score * 0.10 +      # 薪资匹配:10%
education_score * 0.10 +   # 学历匹配:10%
location_score * 0.05 +    # 位置匹配:5%
tags_score * 0.05          # 个性标签:5%
)
# 总匹配度 (语义20%, 元数据80%)
total_score = semantic_score * 0.2 + metadata_score * 0.8
......

其中 metadata_score 是上述6个维度评分加权后的分数,而semantic_score是向量语义相似度转化的分值(如乘100得到百分制)。这里赋予结构化匹配80%权重、语义匹配20%权重,主要是考虑到结构化信息更客观可靠,而语义匹配可作为辅助参考。

综合评分阶段的产出不仅有每位候选人的总分,还包括各维度的得分明细和简单说明,便于HR理解分数背后的含义。

【筛选结果输出】

筛选和评分完成后,需要将结果以友好直观的形式展示出来,便于HR快速浏览。当然最简单的方式是借助元数据直接展示原始简历(pdf文件)内容,不过为了帮助使用者快速了解候选人关键信息以及评估结果,设计一种候选人匹配卡片。信息包括:

  • 基本信息/关键信息:候选人重要的基本信息,以及参与评估的关键信息。
  • 详细匹配结果与分析:详细解释筛选的过程、匹配算法、计算得分等。
  • 候选人综合评价:借助LLM对候选人的匹配情况做整体总结与建议。

通过这样一目了然的卡片式呈现,HR可以快速了解每个候选人的优劣势:哪些方面完全符合要求,哪些方面稍有不足。

04 测试与未来演进

以上我们完成了一个基于LLM的简历筛选系统的初步设计,并对其中的关键要点做了详细解释。最后我们看一下这个Demo系统的测试效果:

我们准备了几十份不同行业、格式与内容的中文简历交给系统使用,并演示两种筛选方式:自然语言筛选或提供JD描述。

在进入系统后,首先完成简历解析、元数据提取、索引准备等初始化工作:

【自然语言筛选】

用自然语言提出需求:“寻找3年以上的信息技术行业经验,有丰富的商业智能、云计算经验的工程师,硕士学历以上,年薪要求不超过50万,工作地点上海或北京”。

系统解析与筛选过程如下:

这里系统会输出不同阶段的筛选结果,有助于使用者在不同层面调整筛选标准。

最后筛选出的候选人:

系统会按照匹配度从高到低输出候选人及评估细节,对结果提供详细的解释。

最后,系统会对候选人有一个综合评价与建议供HR参考:

通过这个案例可见,系统有效地从多个简历中捕捉到了多个符合要求的人才,同时对于边缘匹配的情况(如候选人有部分条件不符)也能识别出来并合理降低排名。这种智能筛选的方式,比起人工肉眼翻阅,不仅效率提升数倍,而且更加客观全面。

【使用JD文件筛选】

使用JD文件筛选本质上与自然语言并无太大区别,只是增加了对JD文件的解析与关键信息的抽取,后续评估方法与输出效果保持一致。此处不再详细展示。

【未来演进方向】

以上我们借助AI技术构建了一个基于LLM的智能简历筛选与匹配系统,做了一些有针对性的设计。当然这里仍然存在较多的改进优化空间:

  • 原始文件解析与信息提取的准确性。比如借助知识图谱更好的识别关联技能。
  • 语义检索召回的精准度优化。比如考虑借助Rerank模型做重排。
  • 多维度综合评分算法的优化。比如对招聘中常见“优先项”做奖励评分。

不过,智能招聘的版图远不止如此。未来,可以将其拓展为覆盖招聘全流程的AI智能体系统。让我们畅想一下:

  • 数据源拓展。集成在线简历爬取、多格式解析、增量更新的企业人才库机制等。

  • 流程自动化。比如:

  • 匹配候选人后,自动起草个性化面试邀请邮件/通知等,供HR审核发送

  • 根据相关人员日程,自动给出面试排期建议,甚至预定面试日程

  • 背景调查:自动从公开网络搜集候选人的公开信息形成报告,供HR参考

  • 决策支持:基于过往招聘数据,预测候选人录用后的稳定性、发展潜力等

  • 构建智能招聘生态。比如:
  • 招聘智能体协作:除了简历筛选Agent,还可以构建面试问题生成Agent、薪资谈判Agent,实现端到端自动化

  • 企业内跨平台整合:连接企业内部HR系统、招聘网站、社交网络,实现简历获取、候选人跟踪、反馈搜集的全链路打通

相信随着LLM等AI能力的不断增强,未来的人才招聘将是人与AI协同的过程:AI高效客观的处理数据,HR专注人性化决策,两者相辅相成,实现更高的效率、准确性与公平性。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

作为一名从业五年的资深大模型算法工程师,我经常会收到一些评论和私信,我是小白,学习大模型该从哪里入手呢?我自学没有方向怎么办?这个地方我不会啊。如果你也有类似的经历,一定要继续看下去!这些问题啊,也不是三言两语啊就能讲明白的。

所以我综合了大模型的所有知识点,给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢,我就曾放空大脑,以一个大模型小白的角度去重新解析它,采用基础知识和实战项目相结合的教学方式,历时3个月,终于完成了这样的课程,让你真正体会到什么是每一秒都在疯狂输出知识点。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

https://img-blog.csdnimg.cn/img_convert/05840567e2912bcdcdda7b15cba33d93.jpeg

在这里插入图片描述

第一阶段(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 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

https://img-blog.csdnimg.cn/img_convert/05840567e2912bcdcdda7b15cba33d93.jpeg

985硕士,最近投了100多份大模型算法岗,没下文... 从面试官的视角看,什么样的简历算一份优质的简历?以及如何快速把简历改好。 阅读详情

相关推荐

AI工作流实战:从Coze到Dify的简历筛选自动化指南

在AI落地过程中,工作流平台成为连接大模型与实际业务的关键桥梁。Coze和Dify作为两类主流工作流平台,分别以云端快速搭建和开源私有化部署见长。理解其核心概念、部署方式与节点编排原理,能够帮助开发者和业务人员将重复性任务转化为自动化流程。无论是简历筛选、周报生成还是文档处理,工作流都可以通过可视化节点实现数据流转与智能决策。以简历筛选为例,详细演示如何在Dify中本地部署并搭建完整工作流,同时对比Coze的智能体玩法,为不同场景下的选型提供参考。

weixin_34009794的博客 641

985硕士求职大模型算法岗,100多份简历石沉大海,到底什么简历才算优质??

今天给大家分享一下,从面试官的视角看,什么样的简历算一份优质的简历?以及如何快速把简历改好。为什么想讲这个呢?因为最近我也在集中面试嘛,看了 N 多份简历,大部分人的简历写的,就两个字,。首先简历不是向别人介绍你的过去,也不是工作学习总结。它是要体现你的核心竞争力,你和别人不一样的地方。所以很多人出发点就错了,把简历写成了。然后简历上最重要的就是项目嘛,项目编写的一个常见 badcase,就是记流水账。比如我有一个什么项目,然后这个项目怎么怎么样,类似这种。01。

2401_85375186的博客 1769

智能简历筛选 AI Agent:LLM 在人力资源中的应用

本文旨在探讨智能简历筛选技术在人力资源中的应用,特别是利用大型语言模型(LLM)来提升招聘效率和准确性。文章首先介绍了简历筛选面临的挑战和智能筛选的优势,然后深入解析LLM的核心概念、原理和应用。接下来,文章详细阐述了LLM在简历筛选中的具体应用,包括简历内容解析、关键词提取与匹配、候选人评分与推荐等。随后,文章讨论了智能简历筛选系统的设计与实现,包括系统需求分析、架构设计、算法实现与优化,以及系统部署与测试。文章还分析了智能简历筛选系统的评估与优化方法,并探讨了其未来发展趋势。

SuperAGI2025 1613

HR看了都惊呆!这个LLM简历筛选Agent,竟然是我0基础搭的?

本文提出了一种基于大语言模型(LLM)的智能简历筛选系统,旨在解决传统招聘流程中人工筛选效率低、主观性强等问题。该系统采用多阶段筛选机制:首先通过语义向量检索初筛相关简历;然后应用硬性条件过滤;最后进行多维度综合评分排序。系统创新性地结合了LLM的语义理解与结构化信息匹配规则,支持自然语言交互查询,并生成详细的匹配度分析与评估报告。测试表明,该系统能显著提升筛选效率,同时保持客观性和可解释性。未来可进一步优化解析准确性、评分算法,并拓展为覆盖全招聘流程的AI智能体系统。该系统为实现智能化、数据驱动的招聘流程

m0_59162248的博客 1142

SAP S4业务伙伴(BP)实战指南:从角色分配到数据同步的完整流程

本文详细解析了SAP S4业务伙伴(BP)功能,从基础概念到实战操作,涵盖角色分配、数据同步及常见问题排查。通过BP机制,企业可高效管理客户、供应商等多重身份,实现数据共享和动态切换,显著提升主数据管理效率。特别适合SAP实施顾问和ERP管理员参考。

y2z3a4b5c的博客 870

高通camera调试经验总结

修改AF对焦模式 adb shell setprop vendor.debug.camera.af.manual 2 //使能手动对焦 adb shell setprop vendor.debug.camera.af.manual 0 //使能自动对焦

weixin_43381364的博客 1万+

大模型智能体评估工程:从规则匹配到LLM-as-a-Judge的全面解析,值得收藏学习

本文详细介绍了AI系统特别是大模型智能体的评估工程,这一因传统测试方法失效而兴起的领域。文章阐述了评估工程从规则匹配、语义匹配到LLM-as-a-Judge的三个发展阶段,并详细介绍了奖励模型和云监控2.0两种实践方案。评估工程已成为AI智能体的"成长引擎",通过持续、自动化的反馈闭环,帮助模型不断逼近人类偏好,是AI技术竞争的关键。

bugyinyin的博客 456

nnU-Net v2实战:从零开始配置环境与训练自定义医学影像数据集

本文详细介绍了nnU-Net v2在医学影像分割中的实战应用,从环境配置到自定义数据集训练的全流程。重点讲解了Python 3.9+环境搭建、PyTorch安装技巧、医学影像数据预处理规范,以及五折交叉验证训练方法,帮助开发者快速掌握这一先进的医学影像分析工具。

weixin_28718487的博客 352

【值得收藏】LLM智能体开发完全指南:5种主流Agent方案详解,程序员必学

对于已经有规范工具调用接口的应该使用ToolUniverse(ToolUniverse已经具备sciToolAgent中最重要的ToolKG功能),对于需要更灵活使用工具的场景应该使用CodeAct。

AI大模型的博客 1118

【小白CV教程】YOLOv5+Deepsort实现车辆行人的检测、追踪和计数

【小白CV教程】YOLOv5+Deepsort实现车辆行人的检测、追踪和计数本文禁止转载!项目简介:YOLOv5检测器:DeepSort追踪器:运行demo:训练自己的模型:调用接口:创建检测器:调用检测接口: 本文禁止转载! 项目简介: 使用YOLOv5+Deepsort实现车辆行人追踪和计数,代码封装成一个Detector类,更容易嵌入到自己的项目中。 代码地址(欢迎star): https://github.com/Sharpiless/Yolov5-deepsort-inference 最终效果:

梁瑛平的博客 5万+

把 SAP Fiori Launchpad 配置文件放进 MIME Repository:从上传、缓存控制到可访问路径的完整实践

文章摘要: 在 SAP Fiori 项目中,Launchpad 配置文件的部署是关键挑战,核心在于通过 MIME Repository 而非直接修改标准文件来实现稳定配置。与 BSP Repository 相比,MIME Repository 支持显式设置客户端缓存时间(如 SAP 推荐的 7 天),适合生产环境治理。配置文件需为 JSON 格式,部署时需确保路径可访问(通过 ICF node 和 external alias),并注意语法错误会导致静默失效。实操步骤包括:在 SE80 中创建专用目录、设置

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 92

【值得收藏】RAG技术演进之路:从简单检索到智能体驱动的LLM增强方案

RAG技术通过"外部知识检索+LLM生成"融合模式,解决LLM知识静态化和幻觉问题。文章将RAG演进划分为五个阶段:朴素RAG的基础线性流程、高级RAG的全流程优化、模块化RAG的可插拔架构、图RAG的关系推理能力,以及Agentic RAG的智能体驱动形态。这种从简单工具向智能系统的升级过程,使RAG能够按需选用最优模块组合,实现更精准高效的LLM增强效果。

2401_85375186的博客 811

对MixPad精灵(触屏语音开关)进行解剖分析

概述 最近有点忙,已经很久没有更新文章了,对不起各位网友啦~ 这次对ORVIBO的新产品:MixPad精灵款的来个剖析,希望对大家有所帮助! 首先,我买了一台对应的设备,直接去官网采购,价格吗还算OK,400多的价格。 拆箱的过程我就不写了,简单的上个图就行了。 一、拆包: 主屏板包装盒(顶部): 主屏板包装盒(底部): 后盖电源部分无内容,我就不拍了,给优快云空间省点存储位置。 二、设备剖析开始 接下来,我们开始对设备进行剖析,步骤如下: 1、拆掉主屏板后盖板,...

LeeKwen的专栏 3944

值得收藏 | 从通用到专用:LLM与SLM的选型之道及企业落地指南

文章对比分析了大型语言模型(LLM)和小型语言模型(SLM)的特点与应用场景。SLM凭借参数精简、领域专精、部署灵活和成本优势,在垂直领域表现突出;LLM则在通用场景和复杂任务中更具优势。通过实战案例和选型指南,帮助开发者根据业务需求、资源预算和合规要求选择合适模型,预测SLM将成为国内企业AI转型的主流选择,实现从"全能"向"精准适配"的技术回归。

2401_85375186的博客 967

智能车复工日记【3】:图像处理——基本扫线和基本特征提取和十字补线

目录前言基本扫线(除了进入环岛状态或者坡道或者十字路口的普通扫线)基本数据和初步特征进一步特征提取1、计算并且显示前n行左右线各丢失数目(不break和break的都有)2、计算左右线方差(以右线为例)【a】计算右线曲率(选三个点:r_start、中点、break点)【b】如果右线曲率在一定的范围,就进行右线拟合,从空白行开始计算斜率,否则则从0行开始计算 前言 图像大小185*70,通过扫线获取.........

hanhan的博客 3万+

华为OD机试新系统真题 【查找最佳充电策略】

华为OD机试 新系统真题【查找最佳充电策略】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【查找最佳充电策略】多语言题解。

qq_45776114的博客 432

让AI像人类一样查资料:智能Agent检索大模型知识库详解,值得收藏

智能Agent方法通过赋予大模型主动理解和检索知识库的能力,解决了传统RAG方法的局限性。这种方法让模型先理解文档结构,再自主生成精确搜索指令(如grep),而非依赖向量匹配。它实现了更灵活的知识获取,提升检索准确性并降低维护成本。虽然"不检索"的极端方案在某些场景可行,但混合策略可能是未来趋势。随着GPT-5等模型支持长上下文和工具调用,智能Agent知识库将成为新范式,让AI真正像人类一样探索和利用知识。

嘴巴吃糖了 1459

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【值得收藏】大模型评估技术全解析:传统测试到LLM-as-a-Judge的进化之路

本文深入探讨了AI评估工程的核心演变与实践方法。与传统确定性测试不同,AI系统因不确定性需要持续评估体系。评估工程历经规则匹配、语义匹配到LLM-as-a-Judge三大阶段进化,形成奖励模型和云监控2.0两大实践方案。评估工程不仅是质量保障,更是AI智能体的"成长引擎",掌握它等于握住下一轮AI技术竞争的关键钥匙。

Android_XG的博客 882

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

大模型入门必学:从基础LLM到指令微调LLM,一篇搞定!值得收藏!

文章介绍了大语言模型(LLM)的两种核心类型:基础LLM和指令微调LLM。基础LLM以"预测下一个单词"为目标,通过大规模文本训练掌握语言规律,但可能答非所问;指令微调LLM在基础模型上增加"指令-回复"配对数据和RLHF优化,能够精准理解并执行用户指令,输出更安全可靠,已成为实际应用的主流选择。前者是语言能力的基础,后者是实用的AI助手工具。

2401_85390073的博客 1060

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Django+LLM大模型智能路线规划与个性化推荐系统设计详解

在计算机毕业设计中,如何将后端框架、大模型与数据分析能力真正融合,是许多开发者面临的工程难题。Django作为成熟的全栈Web框架,提供了从ORM建模到Admin后台的一站式支撑;LLM大模型则擅长将用户模糊的自然语言需求转化为结构化约束,显著提升推荐系统的语义理解能力;结合协同过滤作为候选召回策略,再通过数据可视化呈现热点分布与用户画像,即可构建一套从数据采集、推荐计算到交互展示的完整闭环。本文面向正在规划智能旅游系统的开发者,拆解了系统架构分层、核心数据表设计、三段式推荐链路、Prompt优化、异步任务

weixin_28698059的博客 313

LLM 评估体系详解:从多轮对话到 RAG 与 AI Agent 的落地评估

是时候准备面试和实习了。不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。最近,我们又陆续整理了很多大厂的面试题,帮助一些球友解惑答疑,分享技术面试中的那些弯弯绕绕。。智能体评估主要是测试你的 LLM 应用,以确保其性能保持一致。这不是最令人兴奋的话题,但越来越多的公司开始关注它。因此,值得深入研究应该追踪哪些指标来实际衡量这种性能。在推送任何更改时进行适当的评估也有助于确保一切正常运行。

Python数据挖掘 1099

【值得收藏】智能体(Agent)开发全攻略:概念、架构、实现与框架对比详解

文章全面介绍智能体(Agent)的核心概念、架构设计与实现方法,涵盖PEAS模型、智能体循环、提示工程等基础,ReAct、Plan-and-Solve、Reflection等核心架构,以及AutoGen、AgentScope等主流框架。同时讲解模型参数调优技巧和低代码开发平台,为开发者提供从入门到实践的完整指南,帮助理解智能体工作原理并构建高性能系统。

weixin_72959097的博客 1016

【值得收藏】上下文工程:超越提示词的AI系统设计新范式

上下文工程是继提示词工程之后,针对AI智能体生产化而发展的新学科,专注于对输入大语言模型的信息进行系统性架构和管理。文章阐述了AI上下文理解的六大要素、提示词工程失效的根源,以及上下文工程的四大核心支柱(写入、选择、压缩、隔离上下文),同时指出常见陷阱与解决方案。其核心目标是通过精细化的上下文管理,实现规模化下的可靠性,将偶然成功的Demo转化为稳定可靠的生产级应用。

2401_85154887的博客 905

【值得收藏】RAG架构演进详解:从Naive RAG到Agentic RAG的技术突破

检索增强生成(英语:Retrieval-augmented generation, RAG ) 是赋予生成式人工智能模型信息检索能力的技术。检索增强生成优化大型语言模型(LLM) 的交互方式,让模型根据指定的一组文件回应用户的查询,并使用这些信息增强模型从自身庞大的静态训练数据中提取的信息。检索增强生成技术促使大型语言模型能够使用特定领域或更新后的信息。应用案例,包括让聊天机器人访问公司内部资料,或来自权威来源的事实信息。简易RAG流程元宝 RAG示例架构提出动因主要特点Naive RAG。

大模型教程的博客 1176

【值得收藏】智能体(Agent)开发全攻略:从基础概念到框架实现

本文全面介绍了智能体(Agent)的核心概念、工作原理与架构设计,详细解析了PEAS模型、智能体循环和提示工程等基础内容,对比了ReAct、Plan-and-Solve和Reflection三种主流智能体架构,并对AutoGen、AgentScope、CAMEL和LangGraph等框架进行了深入分析。同时,文章还探讨了模型参数调优方法、低代码开发平台和本地推理工具,为开发者提供了构建高性能智能体系统的完整技术路径和实践指南。

EnjoyEDU的博客 1172

LLM应用评估终极指南!从多轮对话到RAG与Agent,打通落地全链路,收藏这篇就够了!

本文探讨了大语言模型(LLM)应用的评估方法,重点介绍了多轮对话、RAG系统和智能体应用的评估指标与工具。传统NLP任务评估主要使用准确率、BLEU等确定性指标,而现代LLM应用评估更依赖"LLM-as-a-judge"模式。多轮对话需评估相关性、完整性、知识留存等指标;RAG系统则需分别评估检索环节(Precision@k等IR指标)和生成环节(忠实度、答案相关性等)。文章还介绍了DeepEval、RAGAS等评估框架,帮助开发者选择合适的评估工具。通过系统化的评估指标,可以确保LLM

m0_59163425的博客 1551
上一篇: 收藏级干货!AI Agent开发技术深度解析与实战指南
下一篇: 2025全网最全大模型全套学习教程,从提示词开始到智能体实战到部署本地模型一篇搞定!!!
AI程序猿人
博客等级 码龄3年 6517粉丝 561原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值