零基础搭建RAG系统:手把手教你用Qwen3-Embedding-4B构建知识库

张开发
2026/4/18 20:28:16 15 分钟阅读

分享文章

零基础搭建RAG系统:手把手教你用Qwen3-Embedding-4B构建知识库
零基础搭建RAG系统手把手教你用Qwen3-Embedding-4B构建知识库1. 认识Qwen3-Embedding-4B你的智能语义理解助手想象一下你有一个能理解各种语言、能记住整本书内容、还能帮你快速找到相关资料的智能助手。这就是Qwen3-Embedding-4B能为你做的事情。作为阿里云通义千问家族的最新成员这个专门用于文本理解的AI模型有三大超能力语言大师能处理超过100种语言包括中文、英文和各种编程语言记忆超人可以一次性理解长达32,000个单词的内容相当于一本小册子搜索专家能把文字转换成精准的数字向量帮你快速找到相关内容最棒的是这个强大的工具现在可以通过简单的代码就能使用。接下来我会带你从零开始一步步搭建一个能自动整理和检索知识的智能系统。2. 准备工作搭建你的AI工作环境2.1 快速启动Qwen3-Embedding-4B服务让我们用最简单的方法启动这个AI模型。打开你的电脑终端Windows用户用CMD或PowerShellMac/Linux用户用Terminal输入以下命令# 拉取预装好的Docker镜像 docker pull qwen3-embedding-4b-mirror # 运行容器确保你已经安装了Docker docker run -d -p 30000:30000 --gpus all qwen3-embedding-4b-mirror这个命令会下载一个已经配置好的环境里面包含了运行Qwen3-Embedding-4B所需的一切。如果你的电脑有NVIDIA显卡建议RTX 3060或更高记得安装好显卡驱动和CUDA工具包。2.2 验证服务是否正常运行等待几分钟后服务就应该启动完成了。我们可以用Python代码来测试一下import openai # 连接到本地服务 client openai.Client( base_urlhttp://localhost:30000/v1, api_keyEMPTY # 不需要真正的API key ) # 测试一个简单的句子 response client.embeddings.create( modelQwen3-Embedding-4B, input如何学习人工智能, ) print(f生成的向量长度{len(response.data[0].embedding)})如果看到输出显示生成的向量长度2560恭喜你你的AI语义理解引擎已经准备就绪。3. 构建你的第一个知识库3.1 准备知识文档现在我们来创建一个简单的技术文档库。在你的工作目录下新建一个文件夹比如叫my_knowledge_base然后放入一些文本文件my_knowledge_base/ ├── 机器学习基础.txt ├── Python编程技巧.md └── 深度学习论文摘要.pdf每个文件可以包含相关主题的内容。比如机器学习基础.txt可能包含监督学习是指从标记数据中学习的机器学习方法常见算法包括 - 线性回归用于预测连续值 - 逻辑回归用于分类问题 - 支持向量机(SVM)强大的分类器3.2 将文档转换为向量我们需要写一个小程序把所有这些文档转换成Qwen3-Embedding-4B能理解的向量形式import os from openai import OpenAI import numpy as np client OpenAI(base_urlhttp://localhost:30000/v1, api_keyEMPTY) def process_documents(folder_path): knowledge_vectors {} for filename in os.listdir(folder_path): filepath os.path.join(folder_path, filename) with open(filepath, r, encodingutf-8) as f: content f.read() # 为检索生成向量 response client.embeddings.create( modelQwen3-Embedding-4B, inputf为检索生成向量{content}, ) knowledge_vectors[filename] { content: content, vector: response.data[0].embedding } return knowledge_vectors # 处理我们的知识库文件夹 knowledge_base process_documents(my_knowledge_base)这段代码会读取文件夹中的每个文件用Qwen3-Embedding-4B将其内容转换为2560维的向量并保存起来供后续检索使用。4. 实现智能检索功能4.1 构建简单的检索系统有了向量化的知识库我们现在可以创建一个检索功能from sklearn.metrics.pairwise import cosine_similarity def search_knowledge(query, knowledge_base, top_k3): # 将查询语句也转换为向量 response client.embeddings.create( modelQwen3-Embedding-4B, inputf为检索生成向量{query}, ) query_vector np.array(response.data[0].embedding).reshape(1, -1) # 计算与所有文档的相似度 results [] for filename, data in knowledge_base.items(): doc_vector np.array(data[vector]).reshape(1, -1) similarity cosine_similarity(query_vector, doc_vector)[0][0] results.append((filename, similarity, data[content])) # 按相似度排序返回最相关的几个结果 results.sort(keylambda x: x[1], reverseTrue) return results[:top_k]4.2 测试你的知识库现在让我们试试这个检索系统# 搜索关于分类算法的信息 results search_knowledge(有哪些常见的分类方法, knowledge_base) # 打印结果 for i, (filename, score, content) in enumerate(results, 1): print(f\n结果 {i}: {filename} (相似度: {score:.3f})) print(内容摘要:, content[:200] ...) # 只打印前200字符你应该能看到系统返回了与分类算法最相关的文档片段即使你的查询语句和文档中的原话并不完全一致。5. 进阶技巧提升你的RAG系统5.1 处理长文档的策略Qwen3-Embedding-4B支持长达32k的上下文但对于特别长的文档我们可以采用分段处理def split_text(text, max_length10000): 将长文本分割成适当大小的块 words text.split() chunks [] current_chunk [] current_length 0 for word in words: if current_length len(word) 1 max_length: chunks.append( .join(current_chunk)) current_chunk [] current_length 0 current_chunk.append(word) current_length len(word) 1 if current_chunk: chunks.append( .join(current_chunk)) return chunks # 使用分段处理长文档 long_document ... # 你的长文档内容 chunks split_text(long_document) chunk_vectors [client.embeddings.create(modelQwen3-Embedding-4B, inputchunk).data[0].embedding for chunk in chunks]5.2 使用指令优化检索质量Qwen3-Embedding-4B支持通过指令调整向量生成方式这在不同的应用场景中非常有用# 为不同任务使用不同指令 retrieval_vector client.embeddings.create( modelQwen3-Embedding-4B, input为检索生成向量机器学习入门, ).data[0].embedding classification_vector client.embeddings.create( modelQwen3-Embedding-4B, input为分类生成向量机器学习入门, ).data[0].embedding print(相同内容不同指令的向量相似度:, cosine_similarity([retrieval_vector], [classification_vector])[0][0])你会发现同样的内容在不同指令下生成的向量会有明显差异这使得模型能更好地适应各种任务。6. 总结与下一步恭喜你已经成功搭建了一个基于Qwen3-Embedding-4B的知识检索系统。让我们回顾一下关键步骤启动服务用Docker快速部署了Qwen3-Embedding-4B模型构建知识库将文本资料转换为语义向量实现检索通过余弦相似度找到最相关的内容优化系统学会了处理长文档和使用指令提升效果下一步你可以尝试接入真正的向量数据库如Chroma或Milvus管理大量文档将检索结果输入大语言模型如Qwen1.5生成更自然的回答为不同领域的知识创建专门的向量空间获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章