2026/4/6 4:02:24
网站建设
项目流程
公司网站建设小江,个人网站排行,wordpress聊天室插件,设计怎么学最近#xff0c;两款全新的通义千问模型发布了#xff1a;Qwen3-4B-Instruct-2507 和 Qwen3-4B-Thinking-2507。这两款模型都拥有高达256K的超长上下文长度#xff0c;这让我不禁思考#xff1a;“何不利用这个长上下文能力来搭建一个RAG系统呢#xff1f;”值得一提的是两款全新的通义千问模型发布了Qwen3-4B-Instruct-2507和Qwen3-4B-Thinking-2507。这两款模型都拥有高达256K的超长上下文长度这让我不禁思考“何不利用这个长上下文能力来搭建一个RAG系统呢”值得一提的是通义千问系列模型种类繁多涵盖了用于代码、思维、嵌入和重排等多种用途的模型。为了以最佳方式构建我们的RAG本文将使用通义千问3.0的嵌入模型和重排模型。我们不会直接开始构建RAG而是先逐一了解这些模型然后再开始搭建系统。通义千问3.0模型背景由阿里云开发的多款通义千问3.0模型于几个月前发布。作为这些模型的改进版本最近又推出了两款新模型Qwen3-Instruct-2507和Qwen3-Thinking-2507共有三种尺寸235B-A22B、30B-A3B和4B。请注意本文我们将主要关注‘Qwen3-Instruct-2507’ 的4B版本。所有这些模型都是开源的在Hugging Face和Kaggle上均可获取。同样值得一提的是通义千问3.0模型支持多达119种语言和方言。接下来让我们先来实际体验几款通义千问3.0模型然后再开始构建我们此行的主要目标——RAG系统。通义千问3.0模型演示我们从文本生成模型开始但在此之前请务必从https://huggingface.co/settings/tokens获取您的Hugging Face访问令牌。注意我们将在Google Colab上进行此演示。打开新笔记本后请务必在左侧的“秘密”secrets选项卡中将访问令牌添加为HF_TOKEN。请确保开启了对该笔记本的访问权限同时将运行时类型更改为T4 GPU以处理该模型。Qwen3-4B-Instruct-2507这是通义千问3.0-4B非思维模式的更新版本拥有高达256k的超长上下文长度。顾名思义该模型拥有40亿参数相对轻量非常适合在Colab上使用。让我们使用Hugging Face的transformers库来启动这个模型看看它的实际表现。# 安装和依赖import torchimport torch.nn.functional as Ffrom transformers import AutoModelForCausalLM, AutoTokenizer, AutoModel# Instruct模型文本生成tokenizer AutoTokenizer.from_pretrained(Qwen/Qwen3-4B-Instruct-2507)model AutoModelForCausalLM.from_pretrained( Qwen/Qwen3-4B-Instruct-2507, torch_dtypeauto, device_mapauto)prompt 用简单的语言解释什么是机器学习。messages [{role: user, content: prompt}]text tokenizer.apply_chat_template( messages, tokenizeFalse, add_generation_promptTrue, enable_thinkingFalse)model_inputs tokenizer([text], return_tensorspt).to(model.device)generated_ids model.generate( **model_inputs, max_new_tokens256)output_ids generated_ids[0][len(model_inputs.input_ids[0]):].tolist()response tokenizer.decode(output_ids, skip_special_tokensTrue)print(response)这是我提问“用简单的语言解释什么是机器学习”后得到的输出当然简单来说**机器学习**是一种让计算机无需被明确编程仅通过学习数据就能提升任务执行能力的方法。想象你有一个机器人它要学会识别照片里的猫。我们不需要一步步地编写指令比如“寻找一个圆脸、大眼睛和鼻子”你只需要给它看很多猫的照片和狗的照片。随着时间的推移这个机器人就会自己开始弄清楚猫和狗的区别——它通过这些例子自己学习。这就是机器学习计算机查看数据比如图片、数字或文本从中发现规律并基于这些规律更好地进行预测或决策。可以把它想象成一个孩子通过反复观看不同的动物来学习识别它们。机器所做的也类似——它从经验数据中学习并随着时间变得更“聪明”。总而言之**机器学习 教计算机从数据中学习并自我提升。** Qwen3-Embedding-0.6B这是一个嵌入模型用于将文本转换为密集的向量表示以理解文本之间的关系。这是我们稍后将要构建的RAG系统中的重要组成部分。嵌入模型构成了 检索增强生成RAG中“检索器”Retriever的核心。让我们定义一个可重用的函数并计算嵌入来衡量文本之间的相似性。我将4个字符串文本放入了名为texts的列表中。# Qwen3-Embedding-0.6B文本嵌入def last_token_pool(last_hidden_states, attention_mask): left_padding (attention_mask[:, -1].sum() attention_mask.shape[0]) if left_padding: return last_hidden_states[:, -1] else: sequence_lengths attention_mask.sum(dim1) - 1 batch_size last_hidden_states.shape[0] return last_hidden_states[torch.arange(batch_size, devicelast_hidden_states.device), sequence_lengths]tokenizer AutoTokenizer.from_pretrained(Qwen/Qwen3-Embedding-0.6B, padding_sideleft)model AutoModel.from_pretrained(Qwen/Qwen3-Embedding-0.6B)texts [ 机器学习是人工智能的一个子集。, Python是一种流行的编程语言。, 今天天气很晴朗。, 人工智能正在改变各行各业。]batch_dict tokenizer( texts, paddingTrue, truncationTrue, max_length8192, return_tensorspt,)outputs model(**batch_dict)embeddings last_token_pool(outputs.last_hidden_state, batch_dict[attention_mask])embeddings F.normalize(embeddings, p2, dim1)scores (embeddings embeddings.T)print(scores.tolist())输出[[1.0, 0.4834885597229004, 0.3609130382537842, 0.6805511713027954], [0.4834885597229004, 1.0000001192092896, 0.44289979338645935, 0.4494439363479614], [0.3609130382537842, 0.44289979338645935, 1.0000001192092896, 0.4508340656757355], [0.6805511713027954, 0.4494439363479614, 0.4508340656757355, 1.0]]我们通过计算文本相互之间的相似性分数得到这个矩阵。为了便于理解我们只看矩阵的第一行。如您所见相同文本的相似性分数始终为1次高分是0.68它介于关于人工智能和关于机器学习的句子之间而关于天气和人工智能的句子之间的相似性分数并不高这很符合常理。Qwen3-Reranker-0.6B我们可以将通过嵌入模型进行向量搜索所获得的检索块传递给重排器模型。重排器模型会根据查询对每个检索块进行评分以重新排序文档列表并分配优先级或者使用这些分数来筛选检索到的文档块。为了更好地理解我们将在接下来的部分直接演示这个模型的实际应用。使用通义千问模型构建RAG我们将使用三个指定的通义千问3.0模型基于Analytics Vidhya博客文章约40篇构建一个RAG。我们将按顺序处理数据并使用这些模型。为了高效处理我们将在使用模型时进行加载/卸载以节省内存。让我们看看具体步骤然后深入研究脚本。步骤1下载数据。这里是我的仓库链接你可以在其中找到数据和脚本。步骤2安装依赖!pip install faiss-cpu PyPDF2步骤3解压数据到文件夹!unzip Data.zip步骤4为了方便执行您可以直接将qwen_rag.py脚本添加到Colab环境中并使用以下命令运行!python qwen_rag.py脚本解析我们使用PYPDF2库来加载PDF格式的文章内容。我们定义了一个函数来读取.txt或.pdf格式的博客内容。我们将内容分割成大小为800、重叠为100的文档块以保持连续文档的上下文相关性。我们使用FAISS来创建一个向量库并借助我们的查询检索出基于相似性的前15个文档。现在我们使用重排器对这15个文档进行重排并通过以下函数获取前3个文档def rerank_documents(query, candidates, k_rerank3): 使用重排器模型对文档进行重排 print(正在对文档进行重排...) tokenizer, model load_reranker_model() # 准备输入 pairs [] for doc, _ in candidates: pair fInstruct: 给定一个网络搜索查询检索能回答该查询的相关段落\nQuery: {query}\nDocument: {doc[content]} pairs.append(pair) # 分词 inputs tokenizer(pairs, paddingTrue, truncationTrue, max_length8192, return_tensorspt).to(device) # 获取分数 with torch.no_grad(): outputs model(**inputs) logits outputs.logits[:, -1, :] # 获取“是/否”词元的分数 token_false_id tokenizer.convert_tokens_to_ids(no) token_true_id tokenizer.convert_tokens_to_ids(yes) true_scores logits[:, token_true_id] false_scores logits[:, token_false_id] batch_scores torch.stack([false_scores, true_scores], dim1) batch_scores torch.nn.functional.log_softmax(batch_scores, dim1) scores batch_scores[:, 1].exp().tolist() # 卸载重排器模型 del tokenizer, model clear_memory() print(重排器模型已卸载) # 按分数排序 documents [doc for doc, _ in candidates] doc_scores list(zip(documents, scores)) doc_scores.sort(keylambda x: x[1], reverseTrue) return doc_scores[:k_rerank]一旦我们获得了这3个排名靠前的文档我们就将它们传递给指令模型以从我们的检索增强生成器中获取最终输出。输出问题LoRA和QLoRA有什么区别回答LoRALow-Rank Adaptation低秩适应和QLoRAQuantized Low-Rank Adaptation量化低秩适应都是参数高效的微调技术用于使大型语言模型LLM适应特定任务。尽管它们有相似之处但在方法和效率上有所不同。1. **LoRA (低秩适应)** * LoRA在预训练模型的每一层的自注意力模块中引入低秩矩阵A和B。这些矩阵充当适配器使模型能够为特定任务进行适应和专业化同时最大限度地减少所需的额外参数数量。 * LoRA通过专注于优化可训练的低秩矩阵而不是微调所有参数来减少参数开销。这使得它在内存上更高效计算成本也更低。 * LoRA允许预训练模型在多个任务之间共享从而方便在部署过程中高效地进行任务切换。 * 与完全微调的模型相比LoRA不会引入任何额外的推理延迟使其适用于实时应用。2. **QLoRA (量化低秩适应)** * QLoRA是LoRA的扩展它进一步引入了量化以在微调过程中提高参数效率。它在LoRA原则的基础上引入了4位NormalFloatNF4量化和双重量化技术。 * NF4量化利用预训练神经网络权重的固有分布将所有权重转换为适合NF4范围-1到1的固定分布。这使得有效的量化成为可能而无需昂贵的量化估计算法。 * 双重量化通过量化量化常数本身来解决量化常数的内存开销。这在不影响性能的情况下显著减少了内存占用。 * QLoRA通过引入量化实现了更高的内存效率这对于在资源受限的设备上部署大型模型特别有价值。 * 尽管其参数高效QLoRA仍保持了高模型质量在各种下游任务上的表现与完全微调的模型相当甚至更好。总而言之LoRA专注于通过低秩适应来减少可训练参数的数量而QLoRA则通过整合量化技术进一步增强了这种效率使其更适合在计算资源有限的设备上部署。来源fine_tuning.txt, Parameter-Efficient Fine-Tuning of Large Language Models with LoRA and QLoRA.pdf, Parameter-Efficient Fine-Tuning of Large Language Models with LoRA and QLoRA.pdf注意您可以参考日志文件rag_retrieval_log.txt以获取有关检索到的文档、与查询的相似性分数以及重排器分数的更多信息。总结通过结合使用通义千问3.0的指令、嵌入和重排器模型我们构建了一个实用的RAG管道充分利用了它们的优势。凭借256K的上下文长度和多语言支持通义千问系列在实际任务中展现了其多功能性。作为下一步您可以尝试增加传递给指令模型的文档数量或者针对不同用例使用思维模型。模型的输出也很有前景。我建议您尝试使用**忠实度Faithfulness和答案相关性Answer Relevancy**等指标来评估RAG以确保LLM在您的任务/用例中大部分没有出现幻觉。如何学习大模型 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 的正确特征了。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】