【智泊AI】手把手教你Prompt+RAG+微调 | 一文说清!

一、Prompt Engineering

概念:通过设计和优化输入提示(Prompt)来有效引导AI模型生成准确、相关且符合需求的输出的技术。

快速构建应用和性能基准

提示词作为人机交互的API接口,其结构化设计直接影响大模型输出的精度与适用性。通过科学的Prompt Engineering进行LLM性能调优,开发者能够以极低学习曲线挖掘模型的潜在能力。

相较于模型微调或架构改造等复杂方案,这种基于自然语言指令的优化范式不仅实施门槛大幅降低,其边际成本优势更使其成为工业落地的优选策略。

在这里插入图片描述
在提升大型语言模型效能的过程中,提示词工程的首要任务是通过快速构建应用原型形成基础参照系。该原型不仅可作为功能验证的初始样本,更重要的是能建立明确的性能基线指标,为后续的模型调优、算法改进等优化措施提供可量化的对比依据。

在使用提示词工程构建好应用之后,要进一步提高模型的性能可以考虑添加外部辅助工具、添加参考内容等手段,这就涉及到RAG、Agents等相关技术。

鉴于提示词工程对LLM的核心作用,在实际应用过程中,使用RAG、微调或其他高级技术之后也应该再次优化提示词,提示词工程贯穿LLM性能优化的过程始终。

在这里插入图片描述
在使用提示词工程的时候,要遵循四项核心原则:编写清晰的指令、将复杂任务分解为简单任务、给LLM一定的时间空间思考、系统的测试性能变化。

这些原则看似简单,但实践起来却不容易,要提高提示词技巧应该多学多练。需要的可以踢我。

做好模型的性能评估

只有清晰地了解了模型性能,才能判断各项改进操作是否有效,以下是评估模型性能的一些方法。

在这里插入图片描述
外包人工注释:俗称"花钱买判断",这种原始模式在AI数据领域痛点明显。不仅每单标注成本高企、交付龟速,更因不同标注员的理解偏差导致结果像开盲盒,品控成了老大难问题!

内部人工审核:通过组织内部人员对算法生成内容开展多维度审查,能有效把控合规性与精准度,但存在响应延迟和跨部门协作资源占用问题。

基于模型的评估:借助高阶大语言模型(如GPT-4)构建自动化评估框架,通过语义理解与推理能力对系统输出进行多维量化分析。随着通用领域基座模型在认知智能层面的持续突破,这种新型评估范式在信效度指标上已接近人类专家评审水平。

基于代码的评估:编写一套评估自定义的规则,以评估型输出的特定方面。

在这里插入图片描述
准确度指标:如果目标明确,F1、精确度、召回率等数据集指标可以客观地衡量模型的准确性。

根据提供的引用内容,可以得知prompt+RAG的流程如下: 1. 首先,使用Retriever部分在知识库中检索出top-k个匹配的文档zi。 2. 然后,将query和k个文档拼接起来作为QA的prompt,送入seq2seq模型。 3. seq2seq模型生成回复y。 4. 如果需要进行Re-rank,可以使用LLM来rerank,给LLM写好prompt即可。 下面是一个简单的示例代码,演示如何使用prompt+RAG: ```python from transformers import RagTokenizer, RagRetriever, RagSequenceForGeneration # 初始化tokenizer、retriever和seq2seq模型 tokenizer = RagTokenizer.from_pretrained('facebook/rag-token-base') retriever = RagRetriever.from_pretrained('facebook/rag-token-base', index_name='exact', use_dummy_dataset=True) model = RagSequenceForGeneration.from_pretrained('facebook/rag-token-base') # 设置query和context query = "What is the capital of France?" context = "France is a country located in Western Europe. Paris, the capital city of France, is known for its romantic ambiance and iconic landmarks such as the Eiffel Tower." # 使用Retriever部分检索top-k个匹配的文档 retrieved_docs = retriever(query) # 将query和k个文档拼接起来作为QA的prompt input_dict = tokenizer.prepare_seq2seq_batch(query, retrieved_docs[:2], return_tensors='pt') generated = model.generate(input_ids=input_dict['input_ids'], attention_mask=input_dict['attention_mask']) # 输出生成的回复 generated_text = tokenizer.batch_decode(generated, skip_special_tokens=True)[0] print(generated_text) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值