Qwen3-Embedding-0.6B保姆级教程:Jupyter调用嵌入模型全流程

Qwen3-Embedding-0.6B保姆级教程:Jupyter调用嵌入模型全流程 Qwen3-Embedding-0.6B保姆级教程Jupyter调用嵌入模型全流程1. 为什么你需要了解文本嵌入模型想象一下你手里有一堆杂乱无章的文档、网页、聊天记录你想快速找到和“人工智能应用”相关的所有内容。传统的关键词搜索可能会漏掉“AI应用”、“智能系统”这些同义词而人工阅读又太慢。这时候文本嵌入模型就是你的得力助手。文本嵌入模型就像一个“语义理解器”它能把一段文字比如一句话、一个段落转换成一串数字我们叫它“向量”或“嵌入向量”。神奇的是意思相近的文字转换出来的数字串在数学空间里也挨得很近。这样我们就能通过计算数字串之间的距离来快速找到语义相似的内容实现智能搜索、文档归类、推荐系统等功能。今天我们要上手的是通义千问家族里的一位轻量级选手——Qwen3-Embedding-0.6B。它只有6亿参数对硬件要求友好但继承了Qwen系列强大的多语言理解和长文本处理能力。本教程将手把手带你完成两件事第一在本地启动这个嵌入模型服务第二在Jupyter Notebook里轻松调用它把文字变成向量。整个过程清晰简单哪怕你是第一次接触这类技术也能跟着做下来。2. 准备工作与环境概览在开始动手之前我们先快速了解一下需要准备什么以及整个流程的概貌。2.1 你需要准备什么一个可运行的环境你需要一个能执行命令行和运行Python的环境。这可以是你本地的电脑建议Linux或macOSWindows也可通过WSL等方式也可以是云服务器或在线开发平台。模型文件确保Qwen3-Embedding-0.6B这个模型已经下载并放置在指定的路径下例如/usr/local/bin/Qwen3-Embedding-0.6B。本教程假设你已经完成了这一步。Python环境需要安装好Python建议3.8及以上版本以及后续会用到的openai这个Python库。基础命令行操作知识知道如何打开终端Terminal执行基本的命令。2.2 我们将要做什么整个流程可以概括为三个核心步骤如下图所示flowchart TD A[准备模型文件与环境] -- B[步骤一: 启动模型服务] B -- C[在终端使用sglang启动服务] C -- D{服务启动成功?} D -- 是 -- E[步骤二: 获取服务访问地址] D -- 否 -- C E -- F[在Jupyter中确认base_url] F -- G[步骤三: 编写调用代码] G -- H[导入库 创建客户端] H -- I[发送文本 获取向量] I -- J[成功! 得到文本的语义向量]接下来我们就按照这个流程图一步步完成从零到一的调用。3. 第一步启动嵌入模型服务我们要使用一个叫SGLang的高效推理框架来启动模型服务。它专门为这类大模型设计用起来很方便。3.1 执行启动命令打开你的终端命令行窗口输入以下命令sglang serve --model-path /usr/local/bin/Qwen3-Embedding-0.6B --host 0.0.0.0 --port 30000 --is-embedding我们来拆解一下这个命令sglang serve这是SGLang框架启动服务的命令。--model-path /usr/local/bin/Qwen3-Embedding-0.6B告诉SGLang我们的模型放在哪个文件夹。--host 0.0.0.0让服务监听所有网络接口这样从别的地方也能访问如果只在本地测试也可以用127.0.0.1。--port 30000指定服务运行的端口号是30000。--is-embedding这个参数很重要它告诉SGLang我们启动的是一个嵌入模型而不是普通的文本生成模型。这样框架会用正确的逻辑来处理我们的请求。3.2 确认服务启动成功命令执行后终端会开始加载模型。当看到类似下面的输出时就说明服务已经成功启动并准备就绪了INFO: Started server process [PID] INFO: Waiting for model to load... INFO: Model Qwen3-Embedding-0.6B loaded successfully. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:30000 (Press CTRLC to quit)请保持这个终端窗口打开不要关闭它这样模型服务就会一直运行。4. 第二步在Jupyter中准备调用环境现在模型服务已经在后台运行了我们转到Jupyter Notebook或Jupyter Lab来编写调用代码。4.1 安装必要的Python库首先我们需要安装openai库。这个库提供了一个通用的客户端可以方便地调用遵循OpenAI API格式的各类模型服务包括我们刚启动的SGLang服务。在Jupyter的一个代码单元格中运行!pip install openai如果已经安装过它会提示已满足要求。4.2 确定服务的访问地址base_url这是最关键的一步。我们需要知道如何从Jupyter连接到刚才启动的服务。情况一本地运行如果你是在同一台机器的本地启动服务并运行Jupyter那么base_url通常是base_url http://127.0.0.1:30000/v1情况二在线平台或远程服务器如果你在使用CSDN星图镜像、Google Colab等在线平台或者Jupyter运行在另一台机器上你需要找到服务对外暴露的访问地址。 通常平台会提供一个可访问的URL。请务必将其中的端口号改为30000并在末尾加上/v1。例如在CSDN星图镜像环境中你可能会得到一个类似这样的Jupyter Lab访问链接https://gpu-pod-xxxx.web.gpu.csdn.net/那么对应的模型服务base_url就应该构造为https://gpu-pod-xxxx-30000.web.gpu.csdn.net/v1注意在主机名和端口号30000之间有一个-连接符这是此类平台常见的模式。如何确认一个简单的方法是在浏览器中尝试访问http://你的地址:30000/health例如https://gpu-pod-xxxx-30000.web.gpu.csdn.net/health。如果返回{status:OK}之类的JSON信息说明地址正确服务健康。5. 第三步编写代码调用嵌入模型环境准备好后就可以开始写调用代码了整个过程非常简单。5.1 创建客户端并发送请求在一个新的代码单元格中输入以下代码。记得将base_url替换成你在上一步确定的地址。import openai # 1. 创建客户端连接到我们的模型服务 client openai.Client( base_urlhttps://gpu-pod-xxxx-30000.web.gpu.csdn.net/v1, # 请替换为你的实际地址 api_keyEMPTY # 因为我们本地服务没有设置鉴权所以用EMPTY即可 ) # 2. 准备要转换的文本 text_to_embed How are you today # 你可以替换成任何你想分析的文本支持中文 # 3. 发送请求获取嵌入向量 response client.embeddings.create( modelQwen3-Embedding-0.6B, # 指定模型名称 inputtext_to_embed # 输入文本 ) # 4. 查看响应 print(请求成功) print(f输入的文本是{text_to_embed}) print(f得到的嵌入向量维度是{len(response.data[0].embedding)}) print(f向量前5个元素的值{response.data[0].embedding[:5]})5.2 运行并理解结果运行上面的单元格你会看到类似下面的输出请求成功 输入的文本是How are you today 得到的嵌入向量维度是1024 向量前5个元素的值[0.023, -0.112, 0.045, 0.008, -0.071]这表示调用成功模型服务正常工作。向量维度Qwen3-Embedding-0.6B模型生成的嵌入向量是1024维的。这是一个固定长度的浮点数列表包含了文本的语义信息。向量内容我们打印了前5个数值。这些数值本身没有直接含义但整个1024维的向量作为一个整体唯一地代表了输入文本的语义。5.3 试试更多例子你可以修改text_to_embed变量试试不同的句子观察向量是否变化。# 尝试不同的文本 texts [ 今天天气真好, The weather is nice today, 人工智能技术发展迅速, 我喜欢吃苹果 ] for text in texts: response client.embeddings.create( modelQwen3-Embedding-0.6B, inputtext ) vector response.data[0].embedding print(f文本{text} - 向量长度{len(vector)} 前3个值{vector[:3]})你会发现即使输入文本长度不同输出的向量长度始终是1024。6. 进阶使用与实用技巧掌握了基本调用后我们来看几个更实用的场景和技巧。6.1 一次性为多个文本生成向量你不需要用循环一个个地调用input参数可以直接接受一个字符串列表实现批量处理效率更高。# 批量生成嵌入向量 batch_texts [ 机器学习是人工智能的一个分支, 深度学习需要大量的数据和算力, 自然语言处理让计算机理解人类语言 ] batch_response client.embeddings.create( modelQwen3-Embedding-0.6B, inputbatch_texts # 直接传入列表 ) print(f共处理了 {len(batch_response.data)} 个文本。) for i, data in enumerate(batch_response.data): print(f 文本{i1}{batch_texts[i]}) print(f 向量维度{len(data.embedding)})6.2 计算文本相似度核心应用嵌入模型最强大的能力就是衡量语义相似度。我们通过计算两个向量之间的“距离”来实现。最常用的方法是余弦相似度值越接近1表示语义越相似。import numpy as np def get_embedding(text): 辅助函数获取单个文本的嵌入向量 response client.embeddings.create( modelQwen3-Embedding-0.6B, inputtext ) return np.array(response.data[0].embedding) def cosine_similarity(vec_a, vec_b): 计算两个向量的余弦相似度 dot_product np.dot(vec_a, vec_b) norm_a np.linalg.norm(vec_a) norm_b np.linalg.norm(vec_b) return dot_product / (norm_a * norm_b) # 定义三句话 text1 我喜欢吃水果 text2 苹果是一种健康的水果 text3 今天要去修理汽车 # 获取它们的向量 vec1 get_embedding(text1) vec2 get_embedding(text2) vec3 get_embedding(text3) # 计算并打印相似度 print(f{text1} 和 {text2} 的相似度{cosine_similarity(vec1, vec2):.4f}) print(f{text1} 和 {text3} 的相似度{cosine_similarity(vec1, vec3):.4f}) print(f{text2} 和 {text3} 的相似度{cosine_similarity(vec2, vec3):.4f})运行后你会看到“我喜欢吃水果”和“苹果是一种健康的水果”相似度很高可能超过0.7而它们与“今天要去修理汽车”的相似度则很低可能接近0。这就是语义搜索和文本分类的基础。6.3 处理长文本Qwen3-Embedding-0.6B支持长达8192个token的输入。对于超长文本常见的做法是将其分割成段落分别获取向量后再取平均或使用其他池化方法。不过对于大多数句子或段落级别的任务直接输入即可。7. 总结恭喜你通过这篇教程你已经完成了从零开始部署并调用Qwen3-Embedding-0.6B文本嵌入模型的全过程。让我们回顾一下关键步骤和收获服务部署使用SGLang框架一行命令就能启动一个高性能的嵌入模型服务关键在于--is-embedding参数。环境配置在Jupyter中正确配置base_url是连接服务的关键需要根据你的运行环境本地或在线平台进行调整。模型调用利用openai库的通用接口只需几行代码就能将文本转换为蕴含语义的1024维向量并且支持方便的批量处理。核心应用通过计算向量间的余弦相似度我们可以量化文本之间的语义关联这是构建智能检索、问答、推荐等系统的基石。Qwen3-Embedding-0.6B作为一个轻量级模型在保证不错性能的同时大大降低了对计算资源的需求非常适合作为入门学习和中小规模应用的原型开发。你可以尝试用它来构建一个简单的文档搜索引擎或者对一批新闻文章进行自动聚类亲身体验嵌入技术的魅力。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。