Qwen3-1.7B与向量数据库联动:Milvus集成部署教程
1. Qwen3-1.7B 模型简介
Qwen3(千问3)是阿里巴巴集团于2025年4月29日开源的新一代通义千问大语言模型系列,涵盖6款密集模型和2款混合专家(MoE)架构模型,参数量从0.6B至235B。其中,Qwen3-1.7B 是该系列中轻量级但性能出色的代表之一,适合在资源有限的设备上进行高效推理,同时保持较强的语义理解与生成能力。
这款模型不仅支持多轮对话、代码生成、逻辑推理等典型大模型任务,还通过开放接口与主流AI框架兼容,便于开发者快速集成到各类应用中。尤其在与向量数据库结合使用时,能够实现基于知识库的增强问答系统(RAG),显著提升回答准确性和上下文相关性。
本文将重点介绍如何在 Jupyter 环境中调用 Qwen3-1.7B,并与其联动 Milvus 向量数据库,完成一套完整的本地化 RAG 应用部署流程。
2. 环境准备与镜像启动
2.1 获取并启动预置镜像
为了简化部署过程,推荐使用 CSDN 提供的 AI 镜像环境,其中已预装 Qwen3 推理服务、LangChain、Milvus 及其依赖组件。
操作步骤如下:
- 访问 CSDN星图镜像广场,搜索“Qwen3”或“RAG集成”相关镜像。
- 选择包含
Qwen3-1.7B和Milvus的 GPU 镜像版本,点击“一键部署”。 - 部署成功后,进入容器环境,自动启动 Jupyter Lab 服务。
默认情况下,Jupyter 会运行在8000端口,可通过 Web 浏览器访问提供的公网地址,如:
https://gpu-pod69523bb78b8ef44ff14daa57-8000.web.gpu.csdn.net2.2 验证模型服务是否正常
在 Jupyter 中新建一个 Python Notebook,执行以下命令测试模型连接状态:
!curl http://localhost:8000/v1/models若返回包含Qwen3-1.7B的 JSON 响应,则说明本地模型服务已就绪。
3. 使用 LangChain 调用 Qwen3-1.7B
LangChain 是构建 LLM 应用的核心框架之一,支持统一接口调用不同模型。尽管 Qwen3 并非 OpenAI 官方模型,但由于其 API 兼容 OpenAI 格式,我们可以借助langchain_openai模块实现无缝接入。
3.1 初始化 ChatModel 实例
以下是调用 Qwen3-1.7B 的标准代码模板:
from langchain_openai import ChatOpenAI import os chat_model = ChatOpenAI( model="Qwen3-1.7B", temperature=0.5, base_url="https://gpu-pod69523bb78b8ef44ff14daa57-8000.web.gpu.csdn.net/v1", # 替换为实际 Jupyter 地址,注意端口为 8000 api_key="EMPTY", extra_body={ "enable_thinking": True, "return_reasoning": True, }, streaming=True, ) response = chat_model.invoke("你是谁?") print(response.content)关键参数说明:
base_url:指向本地运行的 vLLM 或 OpenLLM 推理服务地址,必须确保端口号正确(通常为 8000)。api_key="EMPTY":因未设认证密钥,需填写任意值或留空。extra_body:启用“思维链”(Chain-of-Thought)功能,让模型输出中间推理过程。streaming=True:开启流式响应,提升用户体验。
执行上述代码后,若能收到类似“我是通义千问3,由阿里云研发的大规模语言模型”的回复,即表示调用成功。
4. Milvus 向量数据库配置
4.1 启动 Milvus 服务
本镜像中已集成 Milvus Lite 或独立 Docker 实例。检查服务状态:
!ps aux | grep milvus或直接在 Python 中初始化连接:
from pymilvus import connections connections.connect("default", host="localhost", port="19530")如果连接成功,说明 Milvus 正在运行于默认端口19530。
4.2 创建向量集合用于文档存储
我们以构建一个产品问答知识库为例,创建名为product_knowledge的集合:
from pymilvus import CollectionSchema, FieldSchema, DataType, Collection fields = [ FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True), FieldSchema(name="text", dtype=DataType.VARCHAR, max_length=65535), FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=1024) ] schema = CollectionSchema(fields, description="Product Knowledge Base") collection = Collection("product_knowledge", schema) # 创建索引(IVF_FLAT) index_params = { "index_type": "IVF_FLAT", "metric_type": "L2", "params": {"nlist": 128} } collection.create_index("embedding", index_params) collection.load()注意:此处向量维度
dim=1024需与后续使用的嵌入模型输出维度一致。若使用 BGE-M3、Text-Embedding 等常见模型,请根据实际情况调整。
5. 构建 RAG 系统:Qwen3 + Milvus 联动
5.1 文档加载与向量化
首先准备一批文本数据作为知识源,例如产品说明书片段:
documents = [ "Qwen3 支持多种推理模式,包括普通生成和思维链推理。", "Milvus 是一个高性能的向量数据库,适用于大规模相似性搜索。", "通过 LangChain 可以轻松整合 LLM 与向量数据库,实现增强检索问答。", "Qwen3-1.7B 模型可在消费级显卡上运行,适合边缘部署场景。" ]使用 Hugging Face 的嵌入模型对文本编码:
from sentence_transformers import SentenceTransformer embedder = SentenceTransformer('BAAI/bge-m3') vectors = embedder.encode(documents).tolist() # 插入到 Milvus data = [documents, vectors] collection.insert(data)插入完成后,向量数据即可用于实时检索。
5.2 检索增强生成(RAG)流程实现
当用户提问时,先通过 Milvus 查找最相关的上下文,再交由 Qwen3 生成答案:
def retrieve_and_answer(question: str): # 1. 将问题转为向量 query_vector = embedder.encode([question]).tolist()[0] # 2. 在 Milvus 中检索 Top 2 最相似文本 search_params = {"metric_type": "L2", "params": {"nprobe": 10}} results = collection.search( data=[query_vector], anns_field="embedding", param=search_params, limit=2, output_fields=["text"] ) context_texts = [hit.entity.get('text') for hit in results[0]] # 3. 构造 Prompt 并调用 Qwen3 context = "\n".join(context_texts) prompt = f""" 根据以下信息回答问题: {context} 问题:{question} 回答要求简洁明了。 """ response = chat_model.invoke(prompt) return response.content # 测试调用 answer = retrieve_and_answer("Qwen3-1.7B 能不能在普通电脑上运行?") print(answer)输出示例:
“可以,Qwen3-1.7B 模型可在消费级显卡上运行,适合边缘部署场景。”
这表明系统成功利用外部知识库提升了回答准确性。
6. 性能优化与实用建议
6.1 提高检索效率的小技巧
- 批量插入前关闭索引:在大量写入数据前,可临时删除索引,插入完成后再重建,大幅提升导入速度。
- 合理设置 nlist 和 nprobe:
nlist控制聚类数量,影响召回率;nprobe决定搜索范围,平衡精度与速度。 - 使用 GPU 加速计算:Milvus 支持 GPU 版本,可在高并发场景下显著降低延迟。
6.2 提升生成质量的方法
- 调整 temperature 参数:对于事实性问答,建议设为
0.1~0.3;创意类任务可提高至0.7~1.0。 - 启用 thinking 模式:通过
extra_body={"enable_thinking": True}触发模型内部推理链,有助于复杂问题拆解。 - 限制输出长度:添加
max_tokens参数防止无限生成,保障响应稳定性。
6.3 安全与维护提醒
- 不要暴露
base_url给公网用户,避免被恶意调用。 - 定期备份 Milvus 数据目录(通常是
/var/lib/milvus/db)。 - 监控 GPU 显存占用,必要时启用模型卸载(offloading)策略。
7. 总结
本文详细演示了如何将 Qwen3-1.7B 大语言模型与 Milvus 向量数据库集成,构建一个具备知识检索能力的 RAG 系统。整个流程涵盖了环境部署、模型调用、向量存储、语义检索与最终生成等关键环节。
通过 LangChain 的灵活封装,即使面对非标准 API 的国产模型,也能快速实现跨组件协同。而 Milvus 的高性能向量检索能力,则有效弥补了大模型静态知识不足的问题,使系统更具实用性与扩展性。
无论是企业客服机器人、智能文档助手,还是个性化推荐引擎,这套方案都提供了坚实的技术基础。更重要的是,所有组件均可在本地或私有云环境中运行,保障数据安全的同时,也降低了长期运营成本。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。