做好的网站怎么注销标识标牌制作
2026/4/17 22:01:44 网站建设 项目流程
做好的网站怎么注销,标识标牌制作,建设一个网站可以采用哪几种方案,湖南常德桃源县前言 这几天阿里低调放出两款 Qwen3 家族的新模型#xff1a;Qwen3-Embedding 和 Qwen3-Reranker#xff08;都分别包括0.6B轻量版、4B平衡版、8B高性能版三种尺寸#xff09;。两款模型基于 Qwen3 基座训练#xff0c;天然具备强大的多语言理解能力#xff0c;支持119种…前言这几天阿里低调放出两款 Qwen3 家族的新模型Qwen3-Embedding和Qwen3-Reranker都分别包括0.6B轻量版、4B平衡版、8B高性能版三种尺寸。两款模型基于 Qwen3 基座训练天然具备强大的多语言理解能力支持119种语言覆盖主流自然语言和编程语言。我简单看了下 Hugging Face 上的数据和评价有几个点蛮值得分享Qwen3-Embedding-8B 在 MTEB 多语言榜上拿到70.58 分超过 BGE、E5、甚至 Google Gemini 等一众明星模型。Qwen3-Reranker-8B 在多语言排序任务中得分69.02中文得分达到77.45在现有开源 reranker 模型中也是顶流。文本向量统一在同一个语义空间中文问句可以直接命中英文结果特别适合做全球化场景下的智能搜索或客服系统。这意味着这两款模型不只是“在开源模型里还不错”而是“全面追平甚至反超主流商用API”在RAG 检索、跨语种搜索、代码查找等系统尤其是中文语境中这两款模型已经具备可直接上生产的实力。那么如何用它来搭建一个RAG系统本文将给出深度教程。01RAG搭建教程Qwen3-Embedding-0.6B Qwen3-Reranker-0.6B)教程亮点手把手教你利用Qwen3最新发布的embedding模型和reranker模型搭建一个RAG两阶段检索设计召回重排平衡了效率与精度环境准备! pip install --upgrade pymilvus openai requests tqdm sentence-transformers transformersRequires transformers4.51.0Requires sentence-transformers2.7.0在本示例中我们将使用 OpenAI 作为文本生成的大型语言模型因此您需要将 API 密钥 OPENAI_API_KEY 作为环境变量准备给大型语言模型使用。import os os.environ[OPENAI_API_KEY] sk-************ 数据准备我们可以使用Milvus文档2.4. x中的FAQ页面作为RAG中的私有知识这是构建一个基础RAG的良好数据源。下载zip文件并将文档解压缩到文件夹milvus_docs! wget https://github.com/milvus-io/milvus-docs/releases/download/v2.4.6-preview/milvus_docs_2.4.x_en.zip ! unzip -q milvus_docs_2.4.x_en.zip -d milvus_docs 我们从文件夹milvus_docs/en/faq中加载所有markdown文件对于每个文档我们只需用“#”来分隔文件中的内容就可以大致分隔markdown文件各个主要部分的内容。from glob import glob text_lines [] for file_path in glob(milvus_docs/en/faq/*.md, recursiveTrue): with open(file_path, r) as file: file_text file.read() text_lines file_text.split(# ) 准备 LLM 和Embedding模型本示例中使用 Qwen3-Embedding-0.6B 来进行文本嵌入使用Qwen3-Reranker-0.6B对检索的结果进行重排序。from openai import OpenAI from sentence_transformers import SentenceTransformer import torch from transformers import AutoModel, AutoTokenizer, AutoModelForCausalLM # Initialize OpenAI client for LLM generation openai_client OpenAI() # Load Qwen3-Embedding-0.6B model for text embeddings embedding_model SentenceTransformer(Qwen/Qwen3-Embedding-0.6B) # Load Qwen3-Reranker-0.6B model for reranking reranker_tokenizer AutoTokenizer.from_pretrained(Qwen/Qwen3-Reranker-0.6B, padding_sideleft) reranker_model AutoModelForCausalLM.from_pretrained(Qwen/Qwen3-Reranker-0.6B).eval() # Reranker configuration token_false_id reranker_tokenizer.convert_tokens_to_ids(no) token_true_id reranker_tokenizer.convert_tokens_to_ids(yes) max_reranker_length 8192 prefix |im_start|system\nJudge whether the Document meets the requirements based on the Query and the Instruct provided. Note that the answer can only be \yes\ or \no\.|im_end|\n|im_start|user\n suffix |im_end|\n|im_start|assistant\nthink\n\n/think\n\n prefix_tokens reranker_tokenizer.encode(prefix, add_special_tokensFalse) suffix_tokens reranker_tokenizer.encode(suffix, add_special_tokensFalse) 输出结果示例定义一个函数利用 Qwen3-Embedding-0.6B 模型生成文本嵌入。该函数将用于生成文档嵌入和查询嵌入。def emb_text(text, is_queryFalse): Generate text embeddings using Qwen3-Embedding-0.6B model. Args: text: Input text to embed is_query: Whether this is a query (True) or document (False) Returns: List of embedding values if is_query: # For queries, use the query prompt for better retrieval performance embeddings embedding_model.encode([text], prompt_namequery) else: # For documents, use default encoding embeddings embedding_model.encode([text]) return embeddings[0].tolist() 定义重排序函数以提升检索质量。这些函数使用Qwen3-Reranker实现完整的重排序管道根据文档与查询的相关性对候选文档进行评估和重新排序。其中各函数主要作用分别是format_instruction(): 将查询、文档和任务指令格式化为重排序模型的标准输入格式process_inputs(): 对格式化后的文本进行分词编码并添加特殊token用于模型判断compute_logits(): 使用重排序模型计算“查询-文档”对的相关性得分0-1之间rerank_documents(): 基于查询相关性对文档进行重新排序返回按相关性得分降序排列的文档列表def format_instruction(instruction, query, doc): Format instruction for reranker input if instruction is None: instruction Given a web search query, retrieve relevant passages that answer the query output Instruct: {instruction}\nQuery: {query}\nDocument: {doc}.format( instructioninstruction, queryquery, docdoc ) return output def process_inputs(pairs): Process inputs for reranker inputs reranker_tokenizer( pairs, paddingFalse, truncationlongest_first, return_attention_maskFalse, max_lengthmax_reranker_length - len(prefix_tokens) - len(suffix_tokens) ) for i, ele in enumerate(inputs[input_ids]): inputs[input_ids][i] prefix_tokens ele suffix_tokens inputs reranker_tokenizer.pad(inputs, paddingTrue, return_tensorspt, max_lengthmax_reranker_length) for key in inputs: inputs[key] inputs[key].to(reranker_model.device) return inputs torch.no_grad() def compute_logits(inputs, **kwargs): Compute relevance scores using reranker batch_scores reranker_model(**inputs).logits[:, -1, :] true_vector batch_scores[:, token_true_id] false_vector batch_scores[:, token_false_id] batch_scores torch.stack([false_vector, true_vector], dim1) batch_scores torch.nn.functional.log_softmax(batch_scores, dim1) scores batch_scores[:, 1].exp().tolist() return scores def rerank_documents(query, documents, task_instructionNone): Rerank documents based on query relevance using Qwen3-Reranker Args: query: Search query documents: List of documents to rerank task_instruction: Task instruction for reranking Returns: List of (document, score) tuples sorted by relevance score if task_instruction is None: task_instruction Given a web search query, retrieve relevant passages that answer the query # Format inputs for reranker pairs [format_instruction(task_instruction, query, doc) for doc in documents] # Process inputs and compute scores inputs process_inputs(pairs) scores compute_logits(inputs) # Combine documents with scores and sort by score (descending) doc_scores list(zip(documents, scores)) doc_scores.sort(keylambda x: x[1], reverseTrue) return doc_scores 生成一个测试向量并打印其维度以及前几个元素。test_embedding emb_text(This is a test) embedding_dim len(test_embedding) print(embedding_dim) print(test_embedding[:10]) 结果示例1024 [-0.009923271834850311, -0.030248118564486504, -0.011494234204292297, -0.05980192497372627, -0.0026795873418450356, 0.016578301787376404, -0.04073038697242737, 0.03180320933461189, -0.024417787790298462, 2.1764861230622046e-05] 将数据加载到Milvus创建集合from pymilvus import MilvusClient milvus_client MilvusClient(uri./milvus_demo.db) collection_name my_rag_collection 关于MilvusClient的参数设置将URI设置为本地文件例如./milvus.db是最便捷的方法因为它会自动使用Milvus Lite将所有数据存储在该文件中。如果你有大规模数据可以在Docker或Kubernetes上搭建性能更强的Milvus服务器。在这种情况下请使用服务器的URI例如http://localhost:19530作为你的URI。如果你想使用Zilliz CloudMilvus的全托管云服务请调整URI和令牌它们分别对应Zilliz Cloud中的公共端点Public Endpoint和API密钥Api key。检查集合是否已经存在如果存在则将其删除。if milvus_client.has_collection(collection_name): milvus_client.drop_collection(collection_name) 创建一个具有指定参数的新集合。如果未指定任何字段信息Milvus将自动创建一个默认的ID字段作为主键以及一个向量字段用于存储向量数据。一个预留的JSON字段用于存储未在schema中定义的字段及其值。milvus_client.create_collection( collection_namecollection_name, dimensionembedding_dim, metric_typeIP, # Inner product distance consistency_levelStrong, # Strong consistency level ) 插入集合逐行遍历文本创建嵌入向量然后将数据插入Milvus。下面是一个新的字段text它是集合中的一个未定义的字段。 它将自动创建一个对应的text字段实际上它底层是由保留的JSON动态字段实现的 你不用关心其底层实现。from tqdm import tqdm data [] for i, line in enumerate(tqdm(text_lines, descCreating embeddings)): data.append({id: i, vector: emb_text(line), text: line}) milvus_client.insert(collection_namecollection_name, datadata) 输出结果示例Creating embeddings: 100%|██████████████████████████████████████████████████████████████████████████| 72/72 [00:0800:00, 8.68it/s] {insert_count: 72, ids: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71], cost: 0} 结合重排序技术增强RAG检索数据我们来指定一个关于Milvus的常见问题。question How is data stored in milvus? 在集合中搜索该问题并获取具有最高语义匹配度的前 10 个候选答案然后使用重排序器来选出最佳的 3 个匹配项。# Step 1: Initial retrieval with larger candidate set search_res milvus_client.search( collection_namecollection_name, data[ emb_text(question, is_queryTrue) ], # Use the emb_text function with query prompt to convert the question to an embedding vector limit10, # Return top 10 candidates for reranking search_params{metric_type: IP, params: {}}, # Inner product distance output_fields[text], # Return the text field ) # Step 2: Extract candidate documents for reranking candidate_docs [res[entity][text] for res in search_res[0]] # Step 3: Rerank documents using Qwen3-Reranker print(Reranking documents...) reranked_docs rerank_documents(question, candidate_docs) # Step 4: Select top 3 reranked documents top_reranked_docs reranked_docs[:3] print(fSelected top {len(top_reranked_docs)} documents after reranking) 让我们来看看此次查询的重新排序结果吧import json # Display reranked results with reranker scores reranked_lines_with_scores [ (doc, score) for doc, score in top_reranked_docs ] print(Reranked results:) print(json.dumps(reranked_lines_with_scores, indent4)) # Also show original embedding-based results for comparison print(\n *80) print(Original embedding-based results (top 3):) original_lines_with_distances [ (res[entity][text], res[distance]) for res in search_res[0][:3] ] print(json.dumps(original_lines_with_distances, indent4)) 输出结果示例从结果中我们可以看到Qwen3-Reranker的重排序效果明显相关性得分区分度较好Reranked results (top 3 ) : [ [ Where does Milvus store data?\n\nMilvus deals with two types of data, inserted data and metadata. \n\nInserted data, including vector data, scalar data, and collection-specific schema, are stored in persistent storage as incremental log. Milvus supports multiple object storage backends, including [MinIO]( https://min.io/ ), [AWS S3]( https://aws.amazon.com/s3/?nc1h_ls ), [Google Cloud Storage]( https://cloud.google.com/storage?hlen#object-storage-for-companies-of-all-sizes ) (GCS), [Azure Blob Storage]( https://azure.microsoft.com/en-us/products/storage/blobs ), [Alibaba Cloud OSS]( https://www.alibabacloud.com/product/object-storage-service ), and [Tencent Cloud Object Storage]( https://www.tencentcloud.com/products/cos ) (COS).\n\nMetadata are generated within Milvus. Each Milvus module has its own metadata that are stored in etcd.\n\n###, 0.9997891783714294 ], [ How does Milvus flush data?\n\nMilvus returns success when inserted data are loaded to the message queue. However, the data are not yet flushed to the disk. Then Milvus data node writes the data in the message queue to persistent storage as incremental logs. If flush() is called, the data node is forced to write all data in the message queue to persistent storage immediately.\n\n###, 0.9989748001098633 ], [ Does the query perform in memory? What are incremental data and historical data?\n\nYes. When a query request comes, Milvus searches both incremental data and historical data by loading them into memory. Incremental data are in the growing segments, which are buffered in memory before they reach the threshold to be persisted in storage engine, while historical data are from the sealed segments that are stored in the object storage. Incremental data and historical data together constitute the whole dataset to search.\n\n###, 0.9984032511711121 ] ] Original embedding-based results (top 3 ) : [ [ Where does Milvus store data?\n\nMilvus deals with two types of data, inserted data and metadata. \n\nInserted data, including vector data, scalar data, and collection-specific schema, are stored in persistent storage as incremental log. Milvus supports multiple object storage backends, including [MinIO]( https://min.io/ ), [AWS S3]( https://aws.amazon.com/s3/?nc1h_ls ), [Google Cloud Storage]( https://cloud.google.com/storage?hlen#object-storage-for-companies-of-all-sizes ) (GCS), [Azure Blob Storage]( https://azure.microsoft.com/en-us/products/storage/blobs ), [Alibaba Cloud OSS]( https://www.alibabacloud.com/product/object-storage-service ), and [Tencent Cloud Object Storage]( https://www.tencentcloud.com/products/cos ) (COS).\n\nMetadata are generated within Milvus. Each Milvus module has its own metadata that are stored in etcd.\n\n###, 0.8306853175163269 ], [ How does Milvus flush data?\n\nMilvus returns success when inserted data are loaded to the message queue. However, the data are not yet flushed to the disk. Then Milvus data node writes the data in the message queue to persistent storage as incremental logs. If flush() is called, the data node is forced to write all data in the message queue to persistent storage immediately.\n\n###, 0.7302717566490173 ], [ How does Milvus handle vector data types and precision?\n\nMilvus supports Binary, Float32, Float16, and BFloat16 vector types.\n\n- Binary vectors: Store binary data as sequences of 0s and 1s, used in image processing and information retrieval.\n- Float32 vectors: Default storage with a precision of about 7 decimal digits. Even Float64 values are stored with Float32 precision, leading to potential precision loss upon retrieval.\n- Float16 and BFloat16 vectors: Offer reduced precision and memory usage. Float16 is suitable for applications with limited bandwidth and storage, while BFloat16 balances range and efficiency, commonly used in deep learning to reduce computational requirements without significantly impacting accuracy.\n\n###, 0.7003671526908875 ] ]使用大型语言模型LLM构建检索增强生成RAG响应将检索到的文档转换为字符串格式。context \n.join( [line_with_distance[0] for line_with_distance in retrieved_lines_with_distances] ) 为大语言模型提供系统提示system prompt和用户提示user prompt。这个提示是通过从Milvus检索到的文档生成的。SYSTEM_PROMPT Human: You are an AI assistant. You are able to find answers to the questions from the contextual passage snippets provided. USER_PROMPT f Use the following pieces of information enclosed in context tags to provide an answer to the question enclosed in question tags. context {context} /context question {question} /question 使用Open AI 的大语言模型gpt-4o根据提示生成响应。response openai_client.chat.completions.create( modelgpt-4o, messages[ {role: system, content: SYSTEM_PROMPT}, {role: user, content: USER_PROMPT}, ], ) print(response.choices[0].message.content) 输出结果展示In Milvus, data is stored in two main forms: inserted data and metadata. Inserted data, which includes vector data, scalar data, and collection-specific schema, is stored in persistent storage as incremental logs. Milvus supports multiple object storage backends for this purpose, including MinIO, AWS S3, Google Cloud Storage, Azure Blob Storage, Alibaba Cloud OSS, and Tencent Cloud Object Storage. Metadata for Milvus is generated by its various modules and stored in etcd. 02 小结通过以上教程和输出结果展示不难发现通义千问团队在Qwen3系列中推出的embedding和reranker模型表现相当不错。这两个模型的结合使用为RAG系统提供了一个相对完整且实用的解决方案。在设计理念上**Embedding模型支持query和document的差异化处理体现了对检索任务的深入理解Reranker采用交叉编码器架构能够捕捉query-document间的精细交互**教程中的两阶段检索设计召回重排更是平衡了效率与精度。特别是Qwen3-Embedding-0.6B1024维和Qwen3-Reranker-0.6B都采用了相对轻量的参数规模支持本地部署减少了对外部API的依赖在保证性能的同时降低了硬件要求适合中小企业和个人开发者使用。事实上Qwen3系列推出embedding和reranker模型其实不是个例不是巧合而是产业共识。原因很简单这两个模块决定了大模型是否具备产品化能力。生成式大模型最大的问题在于不确定性高、评估难、成本重。要解决以上问题无论是 RAG、LLM Memory、Agent 本质上都依赖一个前提能否将语义压缩成机器可高效检索和判断的向量表达。Embedding 与 Ranking 则是目前的最优路径**标准清晰、性能可测、成本可控、易于灰度。Embedding 决定你能不能“找得到”Ranking 决定你能不能“选得准”。**这使它们成为模型商品化最先跑通的 API 模块之一调用频率高每次检索都需要、切换成本高与索引绑定、商业价值高可用作底层 infra。如何学习大模型 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%免费】

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询