智能搜索新选择:通义千问3-VL-Reranker-8B部署与API调用教程

news2026/4/7 9:57:05
智能搜索新选择通义千问3-VL-Reranker-8B部署与API调用教程你是否曾为搜索结果不够精准而烦恼比如在电商平台找“适合户外运动的红色背包”结果搜出来的商品图片里背包却是蓝色的。或者想找一段“海边日落”的视频素材系统却给你推了一堆日出的内容。传统的文本搜索已经很难满足我们对精准信息的需求了。今天我要介绍一个能同时看懂文字、图片和视频的智能搜索排序工具——通义千问3-VL-Reranker-8B。这个8B参数的多模态重排序模型能理解你搜索意图背后的深层含义然后从一堆候选内容中帮你挑出最相关的那几个。最棒的是我已经帮你把它打包成了一个开箱即用的Web服务镜像。你不需要懂复杂的模型部署也不需要配置繁琐的运行环境跟着这篇教程从零开始10分钟就能把它跑起来还能学会怎么把它集成到你自己的应用里。1. 这个镜像能帮你做什么在动手之前我们先搞清楚这个工具到底有什么用。简单来说它是一个“智能排序助手”。想象一下你有一个内容平台用户上传了各种形式的资料有纯文字的文章有带说明的图片还有讲解视频。当用户搜索“如何冲泡手冲咖啡”时传统搜索可能只匹配标题和文字描述。但通义千问3-VL-Reranker-8B不一样它能看懂图片识别出图片里是不是真的有咖啡壶、滤杯、手冲壶这些工具理解视频分析视频内容是不是在演示冲泡步骤综合判断结合文字、图片、视频的所有信息给每个内容打分把最相关的排在最前面这个镜像已经帮你做好了所有准备工作模型内置8B参数的多模态模型已经预装好了Web界面点点鼠标就能用的图形化操作界面API接口可以通过代码调用的服务接口环境全包Python环境、依赖库、系统配置全都搞定你只需要把它跑起来就能立刻体验多模态智能排序的能力。2. 快速启动10分钟搭建你的智能排序服务2.1 准备工作检查你的电脑配置这个服务对电脑配置有一定要求主要是内存和存储空间资源类型最低要求推荐配置内存16GB32GB以上显存有GPU的话8GB16GB以上磁盘空间20GB30GB以上如果你的电脑有独立显卡GPU处理速度会快很多。没有GPU也能运行用CPU处理就是速度会慢一些。2.2 两种启动方式总有一种适合你启动服务超级简单这里给你两种方法方法一本地快速启动如果你只是想在自己电脑上试试用这个方法# 进入镜像后运行这个命令 python3 /root/Qwen3-VL-Reranker-8B/app.py --host 0.0.0.0 --port 7860运行成功后打开浏览器访问http://localhost:7860就能看到操作界面了。方法二生成临时分享链接如果你想给同事或朋友演示一下可以用这个命令# 加上 --share 参数 python3 app.py --share运行后你会看到一个公网访问链接类似这样https://xxxxx.gradio.live。这个链接通常72小时内有效适合临时分享和演示。2.3 第一次使用的注意事项第一次打开Web界面时模型还没有加载。这是为了节省资源采用了“按需加载”的设计。你需要手动点一下“加载模型”按钮。加载过程可能需要几分钟取决于你的网络和电脑性能。加载完成后界面会显示“模型准备就绪”。小技巧如果你打算频繁使用可以在启动服务后先加载一次模型然后保持服务运行。这样后续的请求就能直接使用不用每次等待加载。3. 通过Web界面亲手体验智能排序现在服务跑起来了我们来实际玩一下看看它到底有多智能。3.1 试试文字图片的混合搜索假设你正在做一个旅游攻略网站用户搜索“雪山脚下的宁静湖泊”。我们来看看模型怎么处理在“查询语句”框里输入雪山脚下的宁静湖泊在“候选文档”区域添加几个测试内容内容1文字“阿尔卑斯山下的日内瓦湖”配一张湖面平静、远处有雪山的照片内容2文字“西藏纳木错湖美景”配一段湖泊的视频视频里有雪山背景内容3只有文字“高山湖泊介绍”没有图片点击“开始排序”按钮你会看到模型不仅看文字匹配还会分析图片内容。带有真实雪山湖泊图片的内容得分会更高纯文字的内容得分相对较低。3.2 体验视频内容理解视频理解是这个模型的一大亮点。它能从视频中提取关键画面进行分析。举个例子用户搜索“猫咪跳跃的慢动作”。你可以提供一段猫咪跳上沙发的慢动作视频几张猫咪跳跃的连拍照片文字描述“猫科动物的跳跃行为研究”模型会分析视频中的动作、识别出跳跃的关键帧然后根据与查询的相关性打分。带有实际慢动作视频的内容通常得分最高。3.3 实际使用中的实用技巧用了几次之后我总结了一些小经验控制处理速度界面里有个“fps”参数默认是1.0。这个参数控制处理视频时每秒分析多少帧。如果你需要快速出结果可以调到0.5如果需要更精细的分析可以调到2.0。不过调高了会增加处理时间。分批处理大量内容如果你有几十个文档要排序建议分成几批处理每批10-20个。虽然模型能一次处理很多但分批处理速度更快也不容易出错。看懂排序分数结果会显示每个文档的得分分数范围一般在0到1之间。我的经验是0.7以上高度相关基本就是用户想要的0.4-0.7中等相关有些地方匹配上了0.4以下相关性较弱可能不是用户要找的4. 通过代码API集成到你的应用Web界面适合手动操作和演示但真正要用起来还是得通过代码调用。下面我详细讲讲怎么用Python把这个服务集成到你的系统里。4.1 基础调用一个完整的例子首先确保你的服务已经启动在跑着app.py那个窗口。然后新建一个Python文件比如叫test_reranker.pyimport requests import json # 服务的地址如果你改过端口这里也要改 service_url http://localhost:7860/api/rerank # 准备你要排序的内容 request_data { instruction: 根据查询语句找出最相关的文档, query: { text: 现代简约风格的客厅装修 }, documents: [ { text: 北欧风客厅设计案例, image_url: http://example.com/nordic-living-room.jpg # 图片网址 }, { text: 现代简约客厅实拍图, image_base64: base64_encoded_image_data_here # 或者直接用图片的base64编码 }, { text: 客厅装修注意事项大全, # 这个只有文字没有图片 }, { text: 日式简约风格客厅展示视频, video_url: http://example.com/japanese-style.mp4 # 视频网址 } ], fps: 1.0 # 处理视频时的速度 } # 发送请求 try: response requests.post( service_url, jsonrequest_data, # 自动转换成JSON格式 headers{Content-Type: application/json}, timeout30 # 30秒超时 ) # 检查响应 if response.status_code 200: results response.json() print(排序完成结果如下) print(- * 50) # 打印排序结果 for i, doc in enumerate(results[ranked_documents]): # 只显示文字的前50个字避免太长 preview doc[text][:50] ... if len(doc[text]) 50 else doc[text] print(f第{i1}名 | 得分: {doc[score]:.4f}) print(f内容: {preview}) print(- * 30) else: print(f请求失败错误码: {response.status_code}) print(f错误信息: {response.text}) except requests.exceptions.RequestException as e: print(f网络错误: {e}) except json.JSONDecodeError as e: print(f解析响应失败: {e})运行这个脚本你就能看到排序结果了。得分最高的就是模型认为最相关的内容。4.2 支持的各种文档类型这个API非常灵活支持多种格式的输入纯文字文档最简单只要text字段就行。带图片的文档两种方式提供图片image_url图片的网络地址服务会自动下载image_base64图片的base64编码字符串适合本地图片带视频的文档同样两种方式video_url视频文件的网络地址video_base64视频的base64编码混合内容文档一个文档可以同时有文字、图片和视频模型会综合考虑所有信息。4.3 更健壮的客户端封装在实际项目中我们需要更稳定的代码。下面这个客户端类加了错误处理和重试机制import requests import time from typing import List, Dict, Optional, Any import logging class SmartRerankerClient: 智能重排序客户端带错误处理和重试 def __init__(self, base_url: str http://localhost:7860, max_retries: int 3): 初始化客户端 Args: base_url: 服务地址默认本地7860端口 max_retries: 最大重试次数默认3次 self.base_url base_url self.max_retries max_retries self.api_url f{base_url}/api/rerank # 设置日志 self.logger logging.getLogger(__name__) def rerank_documents(self, query: str, documents: List[Dict], instruction: str None, fps: float 1.0) - Optional[List[Dict]]: 对文档进行智能重排序 Args: query: 搜索查询语句 documents: 文档列表每个文档是字典格式 instruction: 可选的操作指令告诉模型怎么排序 fps: 视频处理帧率默认1.0 Returns: 排序后的文档列表失败时返回None # 构建请求数据 request_data { query: {text: query}, documents: documents, fps: fps } # 如果有指令就加上 if instruction: request_data[instruction] instruction self.logger.info(f开始排序查询: {query[:50]}...文档数: {len(documents)}) # 带重试的请求 for attempt in range(self.max_retries): try: self.logger.debug(f第{attempt 1}次尝试...) response requests.post( self.api_url, jsonrequest_data, headers{Content-Type: application/json}, timeout30 # 30秒超时 ) # 成功响应 if response.status_code 200: result response.json() self.logger.info(排序成功完成) return result.get(ranked_documents, []) # 服务暂时不可用可能是模型在加载 elif response.status_code 503: wait_time 2 ** attempt # 指数退避1, 2, 4秒... self.logger.warning(f服务暂时不可用{wait_time}秒后重试...) time.sleep(wait_time) # 其他错误 else: self.logger.error(f请求失败状态码: {response.status_code}) self.logger.error(f错误信息: {response.text[:200]}) break # 不重试其他错误 except requests.exceptions.Timeout: self.logger.warning(f请求超时{attempt 1}/{self.max_retries}次尝试) if attempt self.max_retries - 1: time.sleep(2 ** attempt) except requests.exceptions.ConnectionError: self.logger.warning(f连接错误检查服务是否启动) if attempt self.max_retries - 1: time.sleep(2 ** attempt) except Exception as e: self.logger.error(f未知错误: {e}) break self.logger.error(所有重试均失败) return None def rerank_simple(self, query: str, text_documents: List[str]) - Optional[List[Dict]]: 简化版只对纯文本文档排序 Args: query: 搜索查询 text_documents: 纯文本文档列表 Returns: 排序结果 # 转换成API需要的格式 documents [{text: doc} for doc in text_documents] return self.rerank_documents(query, documents) # 使用示例 if __name__ __main__: # 配置日志 logging.basicConfig(levellogging.INFO) # 创建客户端 client SmartRerankerClient() # 准备测试数据 documents [ { text: 现代简约风格客厅装修效果图, image_url: https://example.com/modern-living-room.jpg }, { text: 北欧风格家居设计指南, image_url: https://example.com/nordic-design.jpg }, { text: 小户型客厅空间利用技巧 } ] # 调用排序 results client.rerank_documents( query简约风格的客厅设计, documentsdocuments, instruction根据图片和文字内容找出最适合现代简约风格的设计 ) # 处理结果 if results: print(\n排序结果前3名) for i, doc in enumerate(results[:3]): score doc.get(score, 0) text_preview doc.get(text, )[:40] print(f{i1}. 得分: {score:.3f} | {text_preview}...) else: print(排序失败请检查服务状态)这个客户端类有几个优点自动重试遇到临时错误会自动重试超时控制避免长时间等待详细日志方便排查问题简化接口提供了纯文本排序的便捷方法5. 实际应用场景举例了解了基本用法后我们来看看这个工具在实际项目中能怎么用。5.1 电商商品搜索排序假设你运营一个家具电商网站用户搜索“实木餐桌 带6把椅子”。传统的文本搜索可能只匹配标题和描述但多模态排序能做得更好# 电商商品排序示例 def rank_products(client, search_query, products): 对商品进行智能排序 Args: client: 排序客户端 search_query: 用户搜索词 products: 商品列表每个商品包含文字描述和图片 # 转换商品格式 documents [] for product in products: doc { text: f{product[title]} - {product[description]}, image_url: product[image_url] } if video_url in product: # 如果有展示视频 doc[video_url] product[video_url] documents.append(doc) # 调用排序 instruction 根据商品图片和描述找出最符合用户需求的商品 return client.rerank_documents(search_query, documents, instruction) # 模拟商品数据 products [ { title: 北欧实木餐桌套装, description: 6人位实木餐桌配6把实木餐椅现代简约设计, image_url: https://example.com/table-set-1.jpg, video_url: https://example.com/table-set-1-video.mp4 }, { title: 现代简约餐桌, description: 4人位餐桌配4把椅子钢化玻璃桌面, image_url: https://example.com/table-set-2.jpg }, # ... 更多商品 ] # 使用 client SmartRerankerClient() ranked_products rank_products(client, 实木餐桌 带6把椅子, products)模型会分析商品图片识别是不是实木材质、有没有配6把椅子然后给出更精准的排序。5.2 内容平台推荐系统对于内容平台比如视频网站、知识社区用户可能搜索“Python数据分析入门教程”。你可以这样排序def rank_content(client, user_query, content_items): 对内容进行智能排序 Args: client: 排序客户端 user_query: 用户查询 content_items: 内容列表可能是文章、视频、图文等 documents [] for item in content_items: doc {text: item[title] item.get(summary, )} # 根据内容类型添加多媒体 if item[type] video: doc[video_url] item[media_url] elif item[type] image_article: doc[image_url] item[cover_image] elif item[type] text: # 纯文字内容不需要额外字段 pass documents.append(doc) # 针对学习类内容使用特定的指令 instruction 这是学习类内容查询优先推荐系统、完整、适合初学者的内容 return client.rerank_documents(user_query, documents, instruction)5.3 企业内部知识库搜索企业内部的文档多种多样有Word文档、PDF报告、会议录像、产品截图等。用这个工具可以统一搜索class KnowledgeBaseSearcher: 企业内部知识库搜索 def __init__(self, reranker_client): self.client reranker_client def search_knowledge(self, query, knowledge_items): 搜索知识库 Args: query: 搜索词 knowledge_items: 知识项列表 documents [] for item in knowledge_items: doc { text: f{item[title]}\n{item[content_preview]}, } # 处理附件 if item.get(attachments): for attachment in item[attachments]: if attachment[type] image: doc[image_url] attachment[url] break # 先取第一个图片 elif attachment[type] video: doc[video_url] attachment[url] break # 先取第一个视频 documents.append(doc) # 企业知识库搜索的特定指令 instruction 这是企业内部知识搜索优先推荐准确、权威、最新的信息 results self.client.rerank_documents(query, documents, instruction) # 格式化结果 formatted_results [] for doc in results: # 找到对应的原始知识项 original_item next( (item for item in knowledge_items if item[title] in doc[text]), None ) if original_item: formatted_results.append({ item: original_item, relevance_score: doc[score] }) return formatted_results6. 性能优化与生产建议如果你打算在生产环境使用这个服务这里有一些优化建议。6.1 批量处理优化如果需要处理大量文档可以考虑批量处理def batch_rerank(client, query, all_documents, batch_size20): 分批处理大量文档 Args: client: 排序客户端 query: 查询语句 all_documents: 所有文档列表 batch_size: 每批处理数量默认20 Returns: 合并后的排序结果 all_results [] # 分批处理 for i in range(0, len(all_documents), batch_size): batch all_documents[i:i batch_size] self.logger.info(f处理第 {i//batch_size 1} 批共 {len(batch)} 个文档) results client.rerank_documents(query, batch) if results: all_results.extend(results) # 小批量之间稍作休息避免压力过大 if i batch_size len(all_documents): time.sleep(0.5) # 如果每批都返回了分数可以按分数重新排序 if all_results and score in all_results[0]: all_results.sort(keylambda x: x[score], reverseTrue) return all_results6.2 缓存常用查询对于频繁出现的查询可以添加缓存from functools import lru_cache import hashlib class CachedRerankerClient(SmartRerankerClient): 带缓存的重排序客户端 def __init__(self, *args, cache_size100, **kwargs): super().__init__(*args, **kwargs) self.cache_size cache_size lru_cache(maxsize100) def _get_cache_key(self, query: str, instruction: str, *doc_texts): 生成缓存键 # 用查询、指令和文档内容的哈希作为缓存键 content query (instruction or ) .join(doc_texts) return hashlib.md5(content.encode()).hexdigest() def rerank_documents_cached(self, query: str, documents: List[Dict], instruction: str None, fps: float 1.0) - Optional[List[Dict]]: 带缓存的文档排序 注意只缓存纯文本文档因为图片/视频内容可能很大 # 只缓存纯文本查询 text_only all(image_url not in doc and image_base64 not in doc and video_url not in doc and video_base64 not in doc for doc in documents) if text_only: # 提取文档文本用于缓存键 doc_texts tuple(doc.get(text, ) for doc in documents) cache_key self._get_cache_key(query, instruction or , *doc_texts) # 检查缓存这里简化实际可以用Redis等 # cached cache.get(cache_key) # if cached: # return cached # 调用父类方法 results super().rerank_documents(query, documents, instruction, fps) # 缓存结果 if text_only and results: # cache.set(cache_key, results, timeout3600) # 缓存1小时 pass return results6.3 监控与日志在生产环境好的监控很重要import time from datetime import datetime class MonitoredRerankerClient(SmartRerankerClient): 带监控的重排序客户端 def rerank_documents(self, query: str, documents: List[Dict], instruction: str None, fps: float 1.0) - Optional[List[Dict]]: 重写方法添加监控 start_time time.time() document_count len(documents) has_images any(image in str(doc) for doc in documents) has_videos any(video in str(doc) for doc in documents) try: results super().rerank_documents(query, documents, instruction, fps) end_time time.time() # 记录成功指标 self._log_metrics({ timestamp: datetime.now().isoformat(), query_length: len(query), document_count: document_count, has_images: has_images, has_videos: has_videos, processing_time: end_time - start_time, success: True, result_count: len(results) if results else 0 }) return results except Exception as e: end_time time.time() # 记录失败指标 self._log_metrics({ timestamp: datetime.now().isoformat(), query_length: len(query), document_count: document_count, has_images: has_images, has_videos: has_videos, processing_time: end_time - start_time, success: False, error: str(e)[:100] # 只记录前100个字符 }) # 重新抛出异常 raise def _log_metrics(self, metrics: Dict): 记录监控指标 # 这里可以输出到日志文件、发送到监控系统等 self.logger.info(f监控指标: {metrics}) # 示例简单的性能监控 if metrics[success] and metrics[processing_time] 5.0: self.logger.warning(f处理时间过长: {metrics[processing_time]:.2f}秒)7. 常见问题排查在实际使用中你可能会遇到一些问题。这里整理了一些常见问题和解决方法。7.1 服务启动问题问题运行启动命令后服务没有正常启动。可能原因和解决端口被占用7860端口可能被其他程序占用。可以换一个端口python3 app.py --host 0.0.0.0 --port 7861内存不足模型需要约16GB内存。如果内存不够关闭其他占用内存的程序增加虚拟内存交换空间使用配置更高的机器依赖包缺失虽然镜像已经包含了所有依赖但如果手动安装可能需要pip install torch transformers qwen-vl-utils gradio scipy pillow7.2 模型加载失败问题点击“加载模型”后没反应或报错。解决步骤检查网络连接如果模型需要从网上下载确保网络通畅检查磁盘空间需要至少20GB可用空间查看日志运行服务时加上--verbose参数看详细日志手动下载模型如果网络不好可以提前下载模型文件7.3 API调用返回错误问题通过代码调用API时返回错误。常见错误和解决连接拒绝服务没启动。检查服务是否在运行端口是否正确。超时错误处理时间太长。可以增加超时时间timeout60减少一次处理的文档数量调整fps参数降低视频处理精度内存错误一次处理太多或太大的文档。分批处理或压缩图片视频。7.4 排序结果不理想问题排序结果和预期不符。优化建议优化查询语句让查询更具体明确调整instruction给模型更清晰的指令检查文档质量确保图片清晰、文字相关调整fps参数视频处理时尝试不同的帧率预处理文档提取关键信息去除无关内容8. 总结通过这篇教程你应该已经掌握了通义千问3-VL-Reranker-8B的完整使用方法。我们从最基础的启动服务开始一步步深入到API集成、实际应用和性能优化。这个多模态重排序工具确实很强大它能同时理解文字、图片、视频为你的搜索和推荐系统提供智能排序能力。无论是电商平台、内容社区还是企业知识库都能从中受益。关键要点回顾快速上手几条命令就能启动服务Web界面直观易用灵活集成提供了完整的Python API方便集成到现有系统多模态支持真正理解图片和视频内容不只是文字匹配生产就绪支持各种部署方式有完善的错误处理和监控如果你打算在实际项目中使用我的建议是先小范围试用选一个具体的业务场景先试试验证效果关注效果评估不仅要看技术指标更要看业务效果考虑成本平衡GPU能加速但成本高根据需求选择持续优化调整根据实际使用反馈不断优化查询和文档下一步可以探索的方向尝试不同的instruction找到最适合你业务的提示词结合传统的文本搜索构建混合检索系统针对你的业务数据考虑是否需要微调模型探索更多应用场景比如内容审核、智能客服、教育辅助等多模态AI正在改变我们处理信息的方式像通义千问3-VL-Reranker-8B这样的工具让机器能更好地理解这个丰富多彩的世界。希望这个教程能帮你快速上手在实际项目中创造价值。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2416278.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…