当前位置: 首页 > article >正文

Lychee Rerank MM代码实例:与Milvus向量库协同实现Hybrid Search重排序增强

Lychee Rerank MM代码实例与Milvus向量库协同实现Hybrid Search重排序增强想象一下这个场景你正在开发一个电商搜索引擎用户上传了一张“带有木质桌腿的白色圆形茶几”的图片来寻找类似商品。传统的向量搜索可能会返回一堆“白色桌子”、“圆形茶几”甚至“木质家具”但无法精准判断哪个商品图片里的桌腿材质和形状与用户上传的图片最匹配。这就是语义鸿沟——向量相似度很高但细节意图匹配不准。今天要介绍的Lychee Rerank MM就是专门为解决这个问题而生的“神兵利器”。它是一个基于Qwen2.5-VL多模态大模型构建的智能裁判能够深入理解图片和文字背后的复杂语义对初步的搜索结果进行重新打分和排序让最相关的结果真正脱颖而出。更妙的是当Lychee Rerank MM遇上专业的向量数据库Milvus就能构建一套强大的混合搜索Hybrid Search系统先用Milvus进行快速的“海选”再用Lychee Rerank MM进行精准的“决赛圈排名”。接下来我就手把手带你用代码实现这套组合拳。1. 核心概念为什么需要重排序在深入代码之前我们得先搞清楚两个关键概念向量检索和重排序。它们的关系就像招聘中的“初筛”和“终面”。向量检索初筛做什么将文本、图片等内容转换成数学向量一组数字然后计算向量之间的相似度比如余弦相似度。优点速度极快适合从百万甚至千万级数据中快速找出几百个可能相关的结果。缺点精度有上限。它更像是在匹配“关键词”或“整体特征”容易错过那些语义相关但表述不同、或细节意图高度匹配的结果。重排序终面做什么用一个更复杂、更强大的模型通常是交叉编码器或大模型对向量检索返回的Top K个结果进行两两精细比对重新计算每个结果与查询的相关性得分。优点精度大幅提升。模型能理解上下文、推理意图、比对细节。缺点速度慢计算成本高无法直接处理海量数据。Lychee Rerank MM的独特之处在于它基于Qwen2.5-VL这个能同时理解图像和文本的多模态大模型。这意味着你的查询Query可以是“一张图片”文档Document可以是“一段文字描述”它依然能给出精准的相关性判断完美解决开篇提到的“木质桌腿”识别问题。2. 环境搭建与快速部署理论讲完了我们开始动手。首先确保你的环境已经就绪。2.1 基础环境准备你需要一个**Python 3.10**的环境并安装核心依赖。建议使用Conda创建一个独立环境。# 创建并激活环境 conda create -n lychee_rerank python3.10 conda activate lychee_rerank # 安装PyTorch (请根据你的CUDA版本选择合适命令这里以CUDA 11.8为例) pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # 安装Lychee Rerank MM pip install lychee-rerank-mm # 安装Milvus向量数据库客户端 pip install pymilvus关于硬件由于Qwen2.5-VL-7B模型较大推理需要可观的GPU显存。实测加载模型后约需16GB-20GB显存。建议使用RTX 3090 (24GB)、A10 (24GB)、A100 (40/80GB)或更高规格的显卡。如果显存不足可以考虑使用量化版本或在CPU上运行速度会慢很多。2.2 启动Lychee Rerank MM服务Lychee Rerank MM项目提供了便捷的启动脚本。如果你是从源码启动可以这样操作# 克隆项目假设项目提供此方式或已通过pip安装客户端 # git clone lychee-rerank-mm-repo-url # cd lychee-rerank-mm # 启动Streamlit Web界面服务 streamlit run app/main.py --server.port 8080启动后在浏览器中访问http://localhost:8080你就能看到它的Web界面了。界面主要分为两部分单条分析模式可以上传图片/输入文字作为Query再输入另一段图文作为Document让模型直接给出相关性得分。适合调试和直观理解。批量重排序模式输入一个Query和多个候选Document文本模型会一次性为所有Document打分并排序。这是我们后面与Milvus集成的关键。不过为了后续代码集成我们更关心它的Python API如何调用。2.3 初始化重排序模型在你的Python代码中可以这样初始化和使用Lychee Rerank MMfrom lychee_rerank_mm import LycheeReranker # 初始化重排序器 # 首次运行会自动从ModelScope下载模型需要一定时间和网络 reranker LycheeReranker( model_name_or_pathlychee-rerank-mm, # 默认模型 use_flash_attentionTrue, # 启用Flash Attention加速如果环境不支持会自动降级 devicecuda:0 # 指定GPU设备 ) # 准备一个测试用例文本到文本 query 如何冲泡一杯好喝的手冲咖啡 documents [ 手冲咖啡需要关注水温、粉水比和注水手法。, 法国红酒的品鉴方法与产区介绍。, 先用热水湿润滤纸和咖啡粉然后进行分段式注水。, ] # 执行批量重排序 scores, ranked_indices reranker.rerank(query, documents) print(相关性得分:, scores) # 例如 [0.85, 0.12, 0.78] print(排序后的索引:, ranked_indices) # 例如 [0, 2, 1]表示第0个文档最相关 print(排序后的文档:, [documents[i] for i in ranked_indices])看到这里你已经成功跑通了重排序的核心功能。得分区间在[0, 1]之间越接近1表示越相关。通常认为得分大于0.5的文档是正相关的。3. 与Milvus向量数据库协同实战现在进入重头戏将Lychee Rerank MM与Milvus结合起来构建一个完整的混合搜索流水线。整个流程分为三步数据准备与入库将我们的文档图片、文本通过嵌入模型转化为向量存入Milvus。混合搜索用户查询时先用Milvus进行向量相似度检索得到初筛结果。智能重排序将初筛结果交给Lychee Rerank MM进行精排返回最终结果。我们以一个“多模态商品库”为例假设每个商品有图片和文字描述。3.1 第一步搭建Milvus并准备数据首先确保你有一个运行中的Milvus服务单机版或集群版。然后安装必要的嵌入模型库这里我们使用一个流行的文本向量模型BAAI/bge-large-zh以及一个CLIP模型处理图片。import pymilvus from pymilvus import connections, Collection, FieldSchema, CollectionSchema, DataType, utility from sentence_transformers import SentenceTransformer from PIL import Image import torch # 1. 连接Milvus connections.connect(hostlocalhost, port19530) # 2. 定义集合Collection结构 # 我们的商品数据包含ID、文本描述向量、图片向量、原始文本、图片路径 fields [ FieldSchema(nameid, dtypeDataType.INT64, is_primaryTrue, auto_idTrue), FieldSchema(nametext_vector, dtypeDataType.FLOAT_VECTOR, dim1024), # BGE模型维度 FieldSchema(nameimage_vector, dtypeDataType.FLOAT_VECTOR, dim512), # CLIP模型维度 FieldSchema(namedescription, dtypeDataType.VARCHAR, max_length1000), FieldSchema(nameimage_path, dtypeDataType.VARCHAR, max_length500), ] schema CollectionSchema(fields, descriptionMultimodal product collection) collection_name multimodal_products # 如果集合已存在则删除仅演示用生产环境慎用 if utility.has_collection(collection_name): utility.drop_collection(collection_name) # 创建集合 product_collection Collection(namecollection_name, schemaschema) # 3. 创建索引为两个向量字段分别建索引 index_params { index_type: IVF_FLAT, metric_type: COSINE, params: {nlist: 128} } product_collection.create_index(field_nametext_vector, index_paramsindex_params) product_collection.create_index(field_nameimage_vector, index_paramsindex_params) print(Milvus集合和索引创建成功)接下来加载嵌入模型并模拟一批商品数据入库。# 加载文本嵌入模型和图片嵌入模型 text_encoder SentenceTransformer(BAAI/bge-large-zh, devicecuda) # 这里简化处理假设有一个能提取图片特征的函数。实际可使用OpenAI CLIP或ResNet。 # def get_image_embedding(image_path): ... # 模拟数据 product_data [ { description: 白色圆形茶几配有原木色实木桌腿直径80cm北欧简约风格。, image_path: /data/products/table_white_round.jpg }, { description: 黑色金属框架书桌带两个抽屉现代工业风适合小户型办公。, image_path: /data/products/desk_black_metal.jpg }, { description: 浅灰色布艺沙发三人位可拆洗坐感柔软舒适。, image_path: /data/products/sofa_grey_fabric.jpg }, # ... 更多商品数据 ] # 准备批量插入的数据列表 text_vectors [] image_vectors [] descriptions [] image_paths [] for product in product_data: # 生成文本向量 text_vec text_encoder.encode(product[description], normalize_embeddingsTrue) text_vectors.append(text_vec) # 生成图片向量此处用随机向量模拟实际需用CV模型提取 # img_vec get_image_embedding(product[image_path]) img_vec torch.randn(512).tolist() # 模拟 image_vectors.append(img_vec) descriptions.append(product[description]) image_paths.append(product[image_path]) # 插入数据到Milvus insert_result product_collection.insert([ text_vectors, image_vectors, descriptions, image_paths ]) # 将数据加载到内存以便搜索 product_collection.load() print(f成功插入 {len(insert_result.primary_keys)} 条商品数据。)3.2 第二步实现混合搜索函数现在我们来编写核心的搜索函数。它接收一个查询可以是文本、图片路径或两者混合先进行向量检索再进行重排序。def hybrid_search(query_textNone, query_image_pathNone, top_k_vector50, top_k_final10): 混合搜索函数 Args: query_text: 文本查询 query_image_path: 图片查询路径 top_k_vector: 向量检索阶段返回的结果数量初筛 top_k_final: 最终返回的结果数量重排序后 Returns: list: 排序后的商品结果每个元素包含描述、图片路径、最终得分 # 1. 向量检索阶段 - 多路召回 vector_results [] # 如果提供了文本查询进行文本向量检索 if query_text: query_text_vec text_encoder.encode(query_text, normalize_embeddingsTrue) search_params {metric_type: COSINE, params: {nprobe: 10}} text_search_result product_collection.search( data[query_text_vec], anns_fieldtext_vector, paramsearch_params, limittop_k_vector, output_fields[description, image_path] # 需要返回的原始字段 ) # 将结果加入候选池 for hits in text_search_result: for hit in hits: vector_results.append({ id: hit.id, description: hit.entity.get(description), image_path: hit.entity.get(image_path), vector_score: hit.score, # 向量相似度得分 source: text_search }) # 如果提供了图片查询进行图片向量检索模拟 if query_image_path: # query_img_vec get_image_embedding(query_image_path) query_img_vec torch.randn(512).tolist() # 模拟图片向量 search_params {metric_type: COSINE, params: {nprobe: 10}} image_search_result product_collection.search( data[query_img_vec], anns_fieldimage_vector, paramsearch_params, limittop_k_vector, output_fields[description, image_path] ) for hits in image_search_result: for hit in hits: # 去重如果ID已存在取较高的向量得分 existing_item next((item for item in vector_results if item[id] hit.id), None) if existing_item: if hit.score existing_item[vector_score]: existing_item[vector_score] hit.score existing_item[source] image_search else: vector_results.append({ id: hit.id, description: hit.entity.get(description), image_path: hit.entity.get(image_path), vector_score: hit.score, source: image_search }) # 如果没有检索到结果直接返回空列表 if not vector_results: return [] # 2. 重排序阶段 # 准备Lychee Rerank MM的输入 # Query可以是文本、图片或图文混合。这里我们根据输入构造。 # 为了简化我们假设LycheeReranker的rerank方法支持传入图片路径。 # 实际上可能需要先将图片加载为base64或PIL Image对象。 # 以下代码为概念演示假设我们有一个支持多模态query的rerank方法。 # 构建候选文档列表这里我们使用文本描述作为Document进行重排序 candidate_docs [item[description] for item in vector_results] # 构建多模态Query实际调用时需根据LycheeReranker的API调整 # 情况A纯文本Query if query_text and not query_image_path: rerank_query query_text # 情况B纯图片Query - 需要将图片转换为模型可接受的格式 elif query_image_path and not query_text: # 这里需要将图片加载并可能转换为base64或特定格式 # rerank_query load_image_as_base64(query_image_path) rerank_query 这是一张图片。 # 占位实际需传递图片信息 # 情况C图文混合Query - 需要组合 else: # 组合文本和图片信息 rerank_query f文本{query_text}图片{query_image_path} # 调用Lychee Rerank MM进行重排序 # 注意以下调用方式为示意实际API可能需要调整参数格式以支持多模态输入 try: # 假设reranker.rerank支持多模态输入 scores, ranked_indices reranker.rerank(rerank_query, candidate_docs) except Exception as e: print(f重排序时发生错误降级为向量分数排序: {e}) # 降级方案按向量分数排序 vector_results.sort(keylambda x: x[vector_score], reverseTrue) return [{description: item[description], image_path: item[image_path], final_score: item[vector_score]} for item in vector_results[:top_k_final]] # 3. 整合最终结果 final_results [] for idx in ranked_indices[:top_k_final]: # 按重排序分数取前top_k_final个 original_item vector_results[idx] final_results.append({ description: original_item[description], image_path: original_item[image_path], final_score: float(scores[idx]), # 重排序得分 vector_score: original_item[vector_score], # 保留原始向量得分供参考 rank_source: reranker }) return final_results3.3 第三步运行搜索示例让我们用几个具体的查询来测试这个混合搜索系统。# 示例1纯文本查询 print( 示例1纯文本查询 白色茶几 木腿 ) results hybrid_search(query_text白色茶几 木腿, top_k_vector30, top_k_final5) for i, r in enumerate(results): print(f{i1}. 得分: {r[final_score]:.3f} - {r[description][:50]}...) # 示例2模拟纯图片查询需要真实图片路径 print(\n 示例2模拟图片查询 ) # 假设用户上传了一张茶几图片 # results hybrid_search(query_image_path/user/uploads/coffee_table.jpg, top_k_vector30, top_k_final5) # for i, r in enumerate(results): # print(f{i1}. 得分: {r[final_score]:.3f} - {r[description][:50]}...) # 示例3多路召回验证 - 查询“沙发” print(\n 示例3查询 舒适沙发 ) results hybrid_search(query_text舒适沙发, top_k_vector30, top_k_final5) for i, r in enumerate(results): print(f{i1}. 得分: {r[final_score]:.3f} - {r[description]})通过这个流程系统会先利用Milvus从所有商品中快速找出30个在向量空间上最相似的候选无论是通过文本匹配还是图片特征匹配然后将这30个候选的描述文本或结合图片与用户的查询一起送给Lychee Rerank MM模型。模型会深入理解“白色茶几 木腿”这个查询不仅关注“茶几”还会特别看重“白色”和“木腿”这两个细节从而对那款“白色圆形茶几配有原木色实木桌腿”的商品打出最高分将它排到第一。4. 高级技巧与性能优化在实际生产环境中你还需要考虑一些工程优化问题。4.1 缓存策略重排序模型推理较慢可以对常见查询和文档组合的结果进行缓存。from functools import lru_cache import hashlib import json # 创建一个带缓存的重排序函数 lru_cache(maxsize1000) def cached_rerank(query: str, documents_tuple: tuple): 带缓存的重排序。注意输入需要转换为可哈希的类型如tuple。 documents list(documents_tuple) scores, indices reranker.rerank(query, documents) return scores, indices def hybrid_search_with_cache(query_textNone, query_image_pathNone, top_k_vector50, top_k_final10): # ... 前面的向量检索代码不变 ... # 在重排序部分使用缓存版本 candidate_docs [item[description] for item in vector_results] # 创建缓存键 cache_key (query_text or , tuple(candidate_docs)) # 简单示例实际键应包含图片信息 scores, ranked_indices cached_rerank(*cache_key) # ... 后续整合结果代码不变 ...4.2 分批处理与异步当候选文档很多时可以分批调用重排序模型避免一次处理太多数据导致OOM内存溢出。import asyncio from concurrent.futures import ThreadPoolExecutor async def batch_rerank_async(query, documents, batch_size8): 异步分批重排序 loop asyncio.get_event_loop() with ThreadPoolExecutor() as executor: tasks [] for i in range(0, len(documents), batch_size): batch_docs documents[i:ibatch_size] # 将同步的rerank调用转为异步任务 task loop.run_in_executor(executor, reranker.rerank, query, batch_docs) tasks.append(task) # 等待所有批次完成 batch_results await asyncio.gather(*tasks) # 合并所有批次的结果 all_scores [] all_indices_global [] offset 0 for batch_scores, batch_indices in batch_results: all_scores.extend(batch_scores) # 调整索引为全局索引 global_indices [idx offset for idx in batch_indices] all_indices_global.extend(global_indices) offset len(batch_scores) # 对所有分数进行全局排序这里简化处理实际需按分数排序 # 更精细的做法是维护一个全局Top K堆 combined list(zip(all_scores, all_indices_global)) combined.sort(keylambda x: x[0], reverseTrue) final_scores [s for s, _ in combined] final_indices [i for _, i in combined] return final_scores, final_indices4.3 多模态Query的构建技巧Lychee Rerank MM的强大之处在于多模态理解。如何构建有效的多模态Query提示Prompt对结果质量影响很大。def build_multimodal_query_for_reranker(textNone, image_pathNone): 为Lychee Rerank MM构建优化的多模态查询指令。 根据官方建议模型对指令敏感。 base_instruction Given a web search query, retrieve relevant passages that answer the query.\n\n if text and image_path: # 图文混合查询 # 需要将图片转换为base64或文件路径传递给模型 # 这里返回一个结构化字典实际调用API时需适配 return { instruction: base_instruction, query_type: text_and_image, text: text, image_path: image_path } elif text: # 纯文本查询 return { instruction: base_instruction, query_type: text_only, text: text } elif image_path: # 纯图片查询 return { instruction: base_instruction, query_type: image_only, image_path: image_path, text: Describe the content of this image. # 可添加引导文本 }5. 总结通过本文的实战演练我们完成了一个从理论到代码的完整旅程实现了Lychee Rerank MM与Milvus的协同工作。我们来回顾一下关键要点1. 混合搜索的价值单纯的向量搜索就像用关键词匹配快但不够精准重排序则像是一个深思熟虑的专家慢但判断精准。两者结合既保证了大规模检索的效率又提升了最终结果的准确性。2. Lychee Rerank MM的核心优势它不是一个普通的文本重排序模型而是一个真正的多模态专家。这意味着你的搜索系统可以支持更自然的交互方式——用户可以直接用图片搜商品、用图表搜分析报告、用截图搜相关代码。这大大降低了搜索门槛提升了体验。3. 工程落地的关键分阶段处理一定要用Milvus先做粗筛把候选集从百万级降到百级再用重排序精排。缓存是朋友对常见查询进行缓存能极大提升响应速度。优雅降级当重排序服务不可用时要有备选方案如直接返回向量排序结果。提示词优化多模态查询的构建方式直接影响模型理解需要根据任务精心设计。4. 扩展想象这套架构不仅可以用于电商搜商品还能应用于知识库问答用户用自然语言提问系统先检索相关文档片段再用重排序找出最可能包含答案的段落。内容推荐根据用户正在阅读的文章或观看的视频推荐语义最相关的其他内容。跨模态检索用一段音乐找匹配氛围的图片或用一张设计草图找相关的设计文档。最后别忘了在实际使用中持续监控和评估。可以收集用户点击数据对比重排序前后Top结果的点击率是否有提升用数据来证明这套系统带来的真实价值。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关文章:

Lychee Rerank MM代码实例:与Milvus向量库协同实现Hybrid Search重排序增强

Lychee Rerank MM代码实例:与Milvus向量库协同实现Hybrid Search重排序增强 想象一下这个场景:你正在开发一个电商搜索引擎,用户上传了一张“带有木质桌腿的白色圆形茶几”的图片来寻找类似商品。传统的向量搜索可能会返回一堆“白色桌子”、…...

DLSS Swapper:让游戏画质与帧率兼得的深度学习超级采样版本管理工具

DLSS Swapper:让游戏画质与帧率兼得的深度学习超级采样版本管理工具 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 当你在《赛博朋克2077》的夜之城飞驰时,是否因开启DLSS导致画面模糊而错失细…...

Flutter环境搭建全攻略:从安装到解决常见问题

1. Flutter开发环境搭建前的准备 在开始Flutter开发之前,我们需要做好一些基础准备工作。首先确保你的电脑满足以下最低配置要求: 操作系统:Windows 10或更高版本(64位)磁盘空间:至少5GB可用空间内存&#…...

昆仑通态HMI组态实战:从基础控件到物联网应用

1. 昆仑通态HMI组态入门指南 第一次接触昆仑通态HMI组态软件时,我被它强大的功能震撼到了。作为工业自动化领域的"可视化大脑",这款软件能让普通触摸屏变身智能控制终端。记得去年给某食品厂做生产线改造时,用这个软件三天就完成了…...

从NLDM到CCS:揭秘先进工艺下时序模型的演进与实战选择

1. 时序模型的基础概念与重要性 在芯片设计领域,时序模型就像建筑师的施工图纸一样关键。想象一下,如果你要建造一座摩天大楼,但没有精确的图纸告诉你每根钢筋的承重能力和连接方式,结果会怎样?同样,在芯片…...

PyTorch模型部署实战:torch.jit.script与torch.jit.trace到底怎么选?

PyTorch模型部署实战:torch.jit.script与torch.jit.trace到底怎么选? 在PyTorch模型部署的实践中,将训练好的模型转换为高效、可移植的格式是关键一步。torch.jit.script和torch.jit.trace作为PyTorch官方提供的两种模型转换方法,…...

snownlp情感分析避坑指南:为什么你的准确率总上不去?

snownlp情感分析避坑指南:为什么你的准确率总上不去? 当你第一次用snownlp跑情感分析时,可能会被它开箱即用的便捷性惊艳到——几行代码就能输出0到1之间的情感倾向值。但实际部署后,很多人会发现模型表现飘忽不定:明明…...

3.6.Maven-依赖管理-依赖范围

一.依赖范围:在pom.xml配置文件中所配置的依赖默认情况下是可以在任何地方使用的,这个地方包括main文件夹下、test文件夹下,也可以在这个项目打包的时候将这个jar包打包进去,这是默认情况。然而在Maven项目中可以通过标签scope来控…...

【RocketMQ】RocketMQ ACL实战指南:从配置到权限管理全解析

1. RocketMQ ACL基础概念与核心原理 第一次接触RocketMQ ACL时,我被它简洁而强大的设计惊艳到了。ACL(Access Control List)本质上就是一套精细化的门禁系统,就像写字楼里需要刷卡才能进入不同楼层那样。在消息队列领域&#xff0…...

CODESYS开发实战:字符串处理在工业自动化中的高效应用

1. 工业自动化中的字符串处理挑战 在工业自动化项目中,字符串处理就像设备间的"普通话"——HMI界面上的报警信息、设备间的通信协议、生产数据的记录报表,都离不开字符串的拼接、解析和转换。我经历过一个典型的坑:某次设备联调时&…...

GESP C++二级考试高频考点解析与实战技巧

1. GESP C二级考试概述与备考策略 GESP C二级考试是面向青少年编程学习者的重要能力认证,主要考察基础语法、流程控制和简单算法应用能力。根据近三年考情分析,通过率维持在65%左右,其中80%的失分集中在数据类型、运算符优先级和循环结构这三…...

基于STM32H750的嵌入式双通道示波器硬件设计

1. 项目概述“简易示波器”是一个基于ARM Cortex-M7内核微控制器的便携式双通道数字示波器硬件平台,面向嵌入式系统学习、教学实验及基础信号观测场景设计。项目以实时性、可扩展性与工程可复现性为出发点,不依赖第三方核心板,全部功能电路集…...

探索大数据领域数据清洗的奥秘

探索大数据领域数据清洗的奥秘关键词:数据清洗、缺失值处理、异常值检测、大数据质量、数据预处理摘要:在大数据时代,“垃圾进,垃圾出”(Garbage In, Garbage Out)是数据分析的铁律。本文将带你像"数据…...

GLM-4v-9b实战体验:上传任意图片提问,AI的回答让人惊艳

GLM-4v-9b实战体验:上传任意图片提问,AI的回答让人惊艳 1. 初见GLM-4v-9b:一款能"看懂"图片的AI 当我第一次听说GLM-4v-9b这个模型时,最吸引我的是它能够同时理解文字和图片。作为一个经常需要处理各种图表和截图的技…...

3大核心价值:开源电子病历系统OpenEMR的医疗信息化解决方案

3大核心价值:开源电子病历系统OpenEMR的医疗信息化解决方案 【免费下载链接】openemr The most popular open source electronic health records and medical practice management solution. 项目地址: https://gitcode.com/GitHub_Trending/op/openemr 在医…...

芯片设计避坑指南:快慢时钟域交互的5大典型错误案例解析

芯片设计避坑指南:快慢时钟域交互的5大典型错误案例解析 在ASIC和SoC设计中,跨时钟域(CDC)问题一直是工程师们最头疼的挑战之一。据统计,约23%的芯片功能故障源于时钟域交互不当,而其中快慢时钟域之间的信号传输问题占比高达67%。…...

translategemma-12b-it效果展示:技术文档、产品说明、会议纪要翻译案例

translategemma-12b-it效果展示:技术文档、产品说明、会议纪要翻译案例 1. 模型核心能力概览 1.1 图文双模翻译的独特优势 translategemma-12b-it不同于传统纯文本翻译工具,它能同时处理图像中的文字内容和独立文本输入。这种多模态能力使其在以下场景…...

wan2.1-vae开源可部署优势:本地化运行+数据不出域+合规性保障方案

wan2.1-vae开源可部署优势:本地化运行数据不出域合规性保障方案 1. 平台概述 wan2.1-vae是基于Qwen-Image-2512模型的开源AI图像生成平台,支持中英文双语提示词输入,能够生成高质量、高分辨率的图像作品。该平台特别针对企业级应用场景进行…...

【毕设】java-springboot+vue的漫画信息管理网站

💟博主:程序员俊星:CSDN作者、博客专家、全栈领域优质创作者 💟专注于计算机毕业设计,大数据、深度学习、Java、小程序、python、安卓等技术领域 📲文章末尾获取源码数据库 🌈还有大家在毕设选题…...

Qwen3-Reranker-0.6B效果展示:合同条款比对中文档片段重排序准确率92%

Qwen3-Reranker-0.6B效果展示:合同条款比对中文档片段重排序准确率92% 1. 引言:从“大海捞针”到“精准定位” 想象一下这个场景:你手里有一份长达50页的合同,里面密密麻麻全是条款。现在,你需要快速找到所有关于“违…...

基于CY7C68013A与ADF4351的35MHz-4.4GHz射频信号源设计与实现

基于CY7C68013A与ADF4351的35MHz-4.4GHz射频信号源设计与实现 最近在折腾软件无线电(SDR)和射频测试,发现一个稳定、可编程的信号源是刚需。市面上的成品信号发生器动辄上万,对于爱好者和初创团队来说门槛太高。于是,我…...

霜儿-汉服-造相Z-Turbo问题解决:生成图片模糊、细节不清?3个技巧搞定

霜儿-汉服-造相Z-Turbo问题解决:生成图片模糊、细节不清?3个技巧搞定 你是不是也遇到过这样的问题:满怀期待地输入一段精心构思的提示词,想生成一张身着精美汉服的“霜儿”,结果图片是出来了,但总觉得哪里…...

利用claude在快马平台快速搭建个人博客原型,十分钟验证创意

最近在尝试一个新想法,想做一个个人博客,用来记录一些技术心得。想法有了,但一想到要从前端页面到数据模拟一点点写代码,就觉得有点费时费力,尤其是只想先验证一下界面和流程是否可行的时候。这时候,我发现…...

ESP32-C3智能插座:支持Matter协议的嵌入式电能计量方案

1. 项目概述计量版智能插座(主控ESP32-C3,支持Matter)是一个面向家庭自动化场景的高集成度嵌入式电力监控终端。其核心目标是将传统墙壁插座升级为具备实时电参数测量、远程控制、语音交互与跨平台生态兼容能力的智能节点。本项目并非概念验证…...

AutoGLM-Phone-9B快速部署:利用预置脚本一键启动模型服务

AutoGLM-Phone-9B快速部署:利用预置脚本一键启动模型服务 想体验一个能看懂图片、听懂语音、还能跟你聊天的AI助手,但又担心它太“笨重”,自己的电脑跑不动?今天,我们就来解决这个痛点。AutoGLM-Phone-9B,…...

Qwen3.5-35B-A3B-AWQ-4bit开源可部署案例:社区医院慢病随访图报告智能解读系统

Qwen3.5-35B-A3B-AWQ-4bit开源可部署案例:社区医院慢病随访图报告智能解读系统 1. 引言:当AI“医生”看懂你的检查报告 想象一下这个场景:一位社区医院的医生,每天要面对几十份甚至上百份高血压、糖尿病患者的随访报告。这些报告…...

造相 Z-Image 开源模型应用:非遗图案数字化再生与现代设计融合实践

造相 Z-Image 开源模型应用:非遗图案数字化再生与现代设计融合实践 1. 非遗文化传承的新机遇 传统非遗图案正面临着传承与创新的双重挑战。手工绘制耗时耗力,年轻设计师对传统纹样理解有限,市场对文化创意产品的需求却日益增长。正是在这样…...

Android开发新手入门指南:基于快马平台构建第一个待办事项应用

最近想学Android开发,但一想到要装Android Studio、配置SDK、搞模拟器就头大。正好发现一个叫InsCode(快马)平台的在线工具,号称能免环境直接写代码,还能让AI帮忙生成项目。我决定用它来试试手,目标是做一个最经典的“待办事项”应…...

基于端口激励-响应建模的无源网络故障检测系统

1. 项目概述2023年全国大学生电子设计竞赛J题“线路故障自动检测系统”是一项面向复杂无源网络故障诊断的嵌入式硬件系统工程。该系统需在限定拓扑结构的测试网络中,准确识别单点故障的位置与类型——包括电感断路/短路、电容断路/短路、二极管断路,并支…...

Discuz用户组升级修改的文件

需要修改以下文件为&#xff08;用户组升级弹窗版&#xff09;/source/plugin/ffidc_mjmuban/ffidcthread.inc.php&#xff08;用户组升级弹窗版&#xff09;/template/jiepai/forum/viewthread.htm&#xff08;用户组升级弹窗版&#xff09;魔镜插件 折扣说明 修改成 如下:<…...