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

RAG开发从入门到精通:手把手教你从0到1搭建应用(非常详细),小白也能看懂,收藏这一篇就够了!

一、技术框架与选型这篇文章中的选型并非适用于所有场景的最佳方案而是基于当前广泛应用和流行的技术模块。关于这些模块的具体特点以及可能的替代选型我们会在后续文章中进行详细分析与解读。1.1、技术框架与选型1.1.1、LangChainLangChain 是专为开发基于大型语言模型LLM应用而设计的全面框架其核心目标是简化开发者的构建流程使其能够高效创建 LLM 驱动的应用。1.1.2、索引流程 (文档解析模块pypdf)pypdf 是一个开源的 Python 库专门用于处理 PDF 文档。pypdf 支持 PDF 文档的创建、读取、编辑和转换操作能够有效提取和处理文本、图像及页面内容。1.1.3、索引流程 (文档分块模块RecursiveCharacterTextSplitter)采用 LangChain 默认的文本分割器 -RecursiveCharacterTextSplitter。该分割器通过层次化的分隔符从双换行符到单字符拆分文本旨在保持文本的结构和连贯性优先考虑自然边界如段落和句子。1.1.4、索引 / 检索流程 (向量化模型bge-small-zh-v1.5)bge-small-zh-v1.5 是由北京人工智能研究院BAAI智源开发的开源向量模型。虽然模型体积较小但仍然能够提供高精度和高效的中文向量检索。该模型的向量维度为 512最大输入长度同样为 512。1.1.5、索引 / 检索流程 (向量库Faiss)Faiss 全称 Facebook AI Similarity Search由 Facebook AI Research 团队开源的向量库因其稳定性和高效性在向量检索领域广受欢迎。1.1.5、生成流程 (大语言模型通义千问 Qwen)通义千问 Qwen 是阿里云推出的一款超大规模语言模型支持多轮对话、文案创作、逻辑推理、多模态理解以及多语言处理在模型性能和工程应用中表现出色。采用云端 API 服务注册有 1,000,000 token 的免费额度。1.2、技术框架与选型的流程图流程图LangChain提供用于构建 LLM RAG 的应用程序框架。索引流程使用 pypdf 对文档进行解析并提取信息随后采用RecursiveCharacterTextSplitter 对文档内容进行分块chunks最后利用 bge-small-zh-v1.5 将分块内容进行向量化处理并将生成的向量存储在 Faiss 向量库中。检索流程使用 bge-small-zh-v1.5 对用户的查询Query进行向量化处理然后通过 Faiss 向量库对查询向量和文本块向量进行相似度匹配从而检索出与用户查询最相似的前 top-k 个文本块chunk。生成流程通过设定提示模板Prompt将用户的查询与检索到的参考文本块组合输入到 Qwen 大模型中生成最终的 RAG 回答。二、开发环境与技术库我们采用 Python 编程语言Python 版本 3.8 及以上运行于 Linux 操作系统下。结合上述的技术框架与选型我们的开发环境需要按照以下步骤进行准备2.1、创建并激活虚拟环境目的是隔离项目依赖避免项目之间冲突。先在命令行窗口中执行指令定位到具体的 RAG 项目文件夹然后在命令行中执行以下指令# 创建名为rag_env的虚拟环境python3 -m venv rag_env# 激活虚拟环境source rag_env/bin/activate2.2、安装技术依赖库2.2.1、安装技术依赖库安装langchain和langchain_communityLLM RAG 的技术框架及其扩展。安装pypdf处理 PDF 文档的解析库。安装sentence-transformers运行指定文本嵌入模型 bge-small-zh-v1.5 的模型库。安装faiss-cpu高效相似度搜索的 Faiss 向量库。安装dashscope与阿里云 Qwen 大模型 API 的集成库。2.2.2、安装技术依赖库的命令首先升级 pip 版本以确保兼容性在命令行中执行以下指令。# 升级pip版本以确保兼容性pip install --upgrade pip然后安装上述技术依赖库在命令行中执行以下指令pip install langchain langchain_community pypdf sentence-transformers faiss-cpu dashscope如果无法连接可以使用国内镜像站点在命令行中执行以下指令pip install langchain langchain_community pypdf sentence-transformers faiss-cpu dashscope -i https://pypi.tuna.tsinghua.edu.cn/simple2.2.3、下载 bge-small-zh-v1.5 模型该模型的文件已包含在 Gitee 上托管的项目中的 bge-small-zh-v1.5 文件夹内你可以直接下载到 RAG 项目的根目录中模型大小 95.8M在命令行中执行以下指令git clone https://gitee.com/techleadcy/rag_app.git下载完成后检查 rag_app 项目中 bge-small-zh-v1.5 文件夹中是否包含pytorch_model.bin 文件。该库中同时包含了本文章的 RAG 核心流程代码 rag_app_lesson2.py 及测试 PDF 文档 test_lesson2.pdf。三、RAG 核心流程代码在实战过程中你不仅可以快速构建 RAG 应用还能够在研发过程中深入理解其背后的技术逻辑与核心原理。为此我在代码的每一行添加了必要的注释并对每段流程代码进行了归纳和解释旨在通过实战代码增强你对 RAG 技术的理解。整个流程代码分为模块库的引入、索引流程、检索流程、生成流程以及测试代码几部分进行精细讲解具体的代码位于 Gitee 项目库中的 rag_app_lesson2.py 文件中。3.1、模块库的引入模块库引入的代码如下from langchain_community.document_loaders import PyPDFLoader # PDF文档提取from langchain_text_splitters import RecursiveCharacterTextSplitter # 文档拆分chunkfrom sentence_transformers import SentenceTransformer # 加载和使用Embedding模型import faiss # Faiss向量库import numpy as np # 处理嵌入向量数据用于Faiss向量检索import dashscope #调用Qwen大模型from http import HTTPStatus #检查与Qwen模型HTTP请求状态import os # 引入操作系统库后续配置环境变量与获得当前文件路径使用os.environ[TOKENIZERS_PARALLELISM] false # 不使用分词并行化操作, 避免多线程或多进程环境中运行多个模型引发冲突或死锁# 设置Qwen系列具体模型及对应的调用API密钥从阿里云百炼大模型服务平台获得qwen_model qwen-turboqwen_api_key your_api_key阿里云百炼大模型服务平台获取的 Qwen 大模型的 API 密钥流程如下打开阿里云百炼大模型服务平台 点击立即开通登陆阿里云 / 支付宝 / 钉钉账号点击模型广场搜索 通义千问 -Turbo点击 API 调用示例点击查看我的 API-KEY继续点击弹出框中的查看复制 API-KEY将 API-KEY 替换代码中 qwen_api_key “your_api_key”点击模型详情可以看到模型 Model 英文名称赋值 qwen_model 参数。可以看到剩余额度当前阿里云提供 1,000,000 次的免费模型额度如果需要尝试其他模型可以对应赋值上述代码中 qwen_model 参数及 qwen_api_key 参数。上代码导入了我们在 RAG 流程中需要使用的核心模块及大模型参数等配置这些模块和配置将在后续的索引、检索和生成流程中调用使用。3.2、索引流程索引流程的代码如下def load_embedding_model(): 加载bge-small-zh-v1.5模型 :return: 返回加载的bge-small-zh-v1.5模型 print(f加载Embedding模型中) # SentenceTransformer读取绝对路径下的bge-small-zh-v1.5模型非下载 embedding_model SentenceTransformer(os.path.abspath(rag_app/bge-small-zh-v1.5)) print(fbge-small-zh-v1.5模型最大输入长度: {embedding_model.max_seq_length}) return embedding_modeldef indexing_process(pdf_file, embedding_model): 索引流程加载PDF文件并将其内容分割成小块计算这些小块的嵌入向量并将其存储在FAISS向量数据库中。 :param pdf_file: PDF文件路径 :param embedding_model: 预加载的嵌入模型 :return: 返回Faiss嵌入向量索引和分割后的文本块原始内容列表 # PyPDFLoader加载PDF文件忽略图片提取 pdf_loader PyPDFLoader(pdf_file, extract_imagesFalse) # 配置RecursiveCharacterTextSplitter分割文本块库参数每个文本块的大小为512字符非token相邻文本块之间的重叠128字符非token text_splitter RecursiveCharacterTextSplitter( chunk_size512, chunk_overlap128 ) # 加载PDF文档,提取所有页的文本内容 pdf_content_list pdf_loader.load() # 将每页的文本内容用换行符连接合并为PDF文档的完整文本 pdf_text \n.join([page.page_content for page in pdf_content_list]) print(fPDF文档的总字符数: {len(pdf_text)}) # 将PDF文档文本分割成文本块Chunk chunks text_splitter.split_text(pdf_text) print(f分割的文本Chunk数量: {len(chunks)}) # 文本块转化为嵌入向量列表normalize_embeddings表示对嵌入向量进行归一化用于准确计算相似度 embeddings [] for chunk in chunks: embedding embedding_model.encode(chunk, normalize_embeddingsTrue) embeddings.append(embedding) print(文本块Chunk转化为嵌入向量完成) # 将嵌入向量列表转化为numpy数组Faiss向量库操作需要numpy数组输入 embeddings_np np.array(embeddings) # 获取嵌入向量的维度每个向量的长度 dimension embeddings_np.shape[1] # 使用余弦相似度创建FAISS索引 index faiss.IndexFlatIP(dimension) # 将所有的嵌入向量添加到FAISS索引中后续可以用来进行相似性检索 index.add(embeddings_np) print(索引过程完成.) return index, chunks上述代码实现了 RAG 技术中的索引流程首先使用 PyPDFLoader 加载并预处理 PDF 文档将其内容提取并合并为完整文本。接着利用接着利用 RecursiveCharacterTextSplitter 将文本分割为每块 512 字符非 token、重叠 128 字符非 token的文本块并通过预加载的 bge-small-zh-v1.5 嵌入模型将这些文本块转化为归一化的嵌入向量。最终这些嵌入向量被存储在基于余弦相似度的 Faiss 向量库中以支持后续的相似性检索和生成任务。为更清晰地展示 RAG 流程的各个细节当前代码未涉及多文档处理、嵌入模型的效率优化与并行处理。此外Faiss 向量目前仅在内存中存储未考虑持久化存储问题。以及文档解析、文本分块、嵌入模型与向量库的技术选型后续文章将逐步深入探讨并以上述代码作为基础持续优化。3.3、检索流程检索流程的代码如下def retrieval_process(query, index, chunks, embedding_model, top_k3): 检索流程将用户查询Query转化为嵌入向量并在Faiss索引中检索最相似的前k个文本块。 :param query: 用户查询语句 :param index: 已建立的Faiss向量索引 :param chunks: 原始文本块内容列表 :param embedding_model: 预加载的嵌入模型 :param top_k: 返回最相似的前K个结果 :return: 返回最相似的文本块及其相似度得分 # 将查询转化为嵌入向量normalize_embeddings表示对嵌入向量进行归一化 query_embedding embedding_model.encode(query, normalize_embeddingsTrue) # 将嵌入向量转化为numpy数组Faiss索引操作需要numpy数组输入 query_embedding np.array([query_embedding]) # 在 Faiss 索引中使用 query_embedding 进行搜索检索出最相似的前 top_k 个结果。 # 返回查询向量与每个返回结果之间的相似度得分在使用余弦相似度时值越大越相似排名列表distances最相似的 top_k 个文本块在原始 chunks 列表中的索引indices。 distances, indices index.search(query_embedding, top_k) print(f查询语句: {query}) print(f最相似的前{top_k}个文本块:) # 输出查询出的top_k个文本块及其相似度得分 results [] for i in range(top_k): # 获取相似文本块的原始内容 result_chunk chunks[indices[0][i]] print(f文本块 {i}:\n{result_chunk}) # 获取相似文本块的相似度得分 result_distance distances[0][i] print(f相似度得分: {result_distance}\n) # 将相似文本块存储在结果列表中 results.append(result_chunk) print(检索过程完成.) return results上述代码实现了 RAG 技术中的检索流程。首先用户的查询Query被预加载的 bge-small-zh-v1.5 嵌入模型转化为归一化的嵌入向量进一步转换为 numpy 数组以适配 Faiss 向量库的输入格式。然后利用 Faiss 向量库中的向量检索功能计算查询向量与存储向量之间的余弦相似度从而筛选出与查询最相似的前 top_k 个文本块。这些文本块及其相应的相似度得分被逐一输出相似文本块存储在结果列表中最终返回供后续生成过程使用。3.4、生成流程生成流程的代码如下def generate_process(query, chunks): 生成流程调用Qwen大模型云端API根据查询和文本块生成最终回复。 :param query: 用户查询语句 :param chunks: 从检索过程中获得的相关文本块上下文chunks :return: 返回生成的响应内容 # 设置Qwen系列具体模型及对应的调用API密钥从阿里云大模型服务平台百炼获得 llm_model qwen_model dashscope.api_key qwen_api_key # 构建参考文档内容格式为“参考文档1: \n 参考文档2: \n ...”等 context for i, chunk in enumerate(chunks): context f参考文档{i1}: \n{chunk}\n\n # 构建生成模型所需的Prompt包含用户查询和检索到的上下文 prompt f根据参考文档回答问题{query}\n\n{context} print(f生成模型的Prompt: {prompt}) # 准备请求消息将prompt作为输入 messages [{role: user, content: prompt}] # 调用大模型API云服务生成响应 try: responses dashscope.Generation.call( model llm_model, messagesmessages, result_formatmessage, # 设置返回格式为message streamTrue, # 启用流式输出 incremental_outputTrue # 获取流式增量输出 ) # 初始化变量以存储生成的响应内容 generated_response print(生成过程开始:) # 逐步获取和处理模型的增量输出 for response in responses: if response.status_code HTTPStatus.OK: content response.output.choices[0][message][content] generated_response content print(content, end) # 实时输出模型生成的内容 else: print(f请求失败: {response.status_code} - {response.message}) return None # 请求失败时返回 None print(\n生成过程完成.) return generated_response except Exception as e: print(f大模型生成过程中发生错误: {e}) return None上述代码实现了 RAG 流程中的生成过程。首先结合用户查询与检索到的文本块内容组织成大模型提示词Prompt。随后代码通过调用 Qwen 大模型云端 API将构建好的 Prompt 发送给大模型并利用流式输出的方式逐步获取模型生成的响应内容实时输出并汇总为最终的生成结果。3.5、测试脚本测试脚本的代码如下def main(): print(RAG过程开始.) query下面报告中涉及了哪几个行业的案例以及总结各自面临的挑战 embedding_model load_embedding_model() # 索引流程加载PDF文件分割文本块计算嵌入向量存储在FAISS向量库中内存 index, chunks indexing_process(rag_app/test_lesson2.pdf, embedding_model) # 检索流程将用户查询转化为嵌入向量检索最相似的文本块 retrieval_chunks retrieval_process(query, index, chunks, embedding_model) # 生成流程调用Qwen大模型生成响应 generate_process(query, retrieval_chunks) print(RAG过程结束.)if __name__ __main__: main()在命令行窗口中执行指令定位到具体的 RAG 项目文件夹在命令行中执行以下指令即可开始 RAG 应用测试source rag_env/bin/activate # 激活虚拟环境python rag_app/rag_app_lesson2.py # 执行RAG应用脚本测试代码通过 main() 函数串联各个步骤从索引到生成确保 RAG 的各个环节顺畅执行准确完成了下面报告中涉及了哪几个行业的案例以及总结各自面临的挑战的 RAG 问答任务。正确运行结果如下所示RAG过程开始.加载Embedding模型中bge-small-zh-v1.5模型最大输入长度token: 512PDF文档的总字符数: 9135分割的文本Chunk数量: 24文本块Chunk转化为嵌入向量完成索引过程完成.查询语句: 下面报告中涉及了哪几个行业的案例以及总结各自面临的挑战最相似的前3个文本块:文本块 0: 面的数字化转型。2.3.2面临的挑战......相似度得分: 0.5915016531944275文本块 1: ...... 相似度得分: 0.5728524327278137文本块 2: ...... 相似度得分: 0.5637902617454529检索过程完成.生成模型的Prompt: 根据参考文档回答问题下面报告中涉及了哪几个行业的案例以及总结各自面临的挑战参考文档1: 面的数字化转型。2.3.2面临的挑战...参考文档2: ......参考文档3: ......生成过程开始:参考文档中涉及了三个行业的案例及其面临的挑战1.### 制造业...... 2. ### 零售业...... 3. ### 金融业......### 数字化转型解决方案概述-**制造业**...... -**零售业**...... -**金融业**......这些案例强调了不同行业在数字化转型过程中面临的独特挑战......生成过程完成.RAG过程结束.学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

相关文章:

RAG开发从入门到精通:手把手教你从0到1搭建应用(非常详细),小白也能看懂,收藏这一篇就够了!

一、技术框架与选型 这篇文章中的选型并非适用于所有场景的最佳方案,而是基于当前广泛应用和流行的技术模块。关于这些模块的具体特点以及可能的替代选型,我们会在后续文章中进行详细分析与解读。 1.1、技术框架与选型 1.1.1、LangChain LangChain 是…...

小米AX3000T刷OpenWrt保姆级教程(含救砖指南)

小米AX3000T路由器OpenWrt刷机全流程解析与应急方案 对于追求网络自由度和功能扩展性的技术爱好者来说,将家用路由器刷入第三方固件OpenWrt无疑是解锁设备潜力的最佳选择。小米AX3000T凭借其出色的硬件配置和亲民价格,成为刷机圈的热门机型。本文将系统性…...

避坑指南:用GCP免费实例搭建个人博客时千万别犯这3个错误

GCP免费实例搭建个人博客的三大隐形陷阱与实战解决方案 去年有位开发者朋友兴奋地告诉我,他用Google Cloud Platform的免费套餐成功搭建了个人技术博客。三个月后却收到$87的账单——原来他误用了静态IP和超额流量。这样的故事在技术社区屡见不鲜,今天我…...

京东wskey自动化管理指南:从抓包到青龙面板脚本配置的全流程避坑

京东wskey自动化管理实战:高效抓包与青龙面板深度配置 在电商自动化运维领域,京东wskey的管理一直是技术用户关注的焦点。不同于简单的工具使用教程,本文将深入探讨如何构建一个稳定、高效的自动化管理体系,从移动端抓包技巧到服…...

从土壤样本到发表级图表:宏基因组碳循环分析避坑指南(附最新SCI案例)

从土壤样本到发表级图表:宏基因组碳循环分析避坑指南(附最新SCI案例) 在科研论文发表竞争日益激烈的今天,如何将原始土壤样本数据转化为符合高影响因子期刊要求的图表,已成为许多研究者面临的"最后一公里"难…...

极简VFB开发环境:从VB6到Freebasic的轻量级IDE实践

1. 为什么需要极简VFB开发环境 作为一个从VB6时代走过来的老程序员,我太理解那种对轻量级开发工具的渴望了。当年用VB6做小工具,一个安装包才几MB,现在随便一个IDE动辄几个GB,实在让人怀念那个"小而美"的年代。 Visual …...

Vue3项目发布后用户总看到旧页面?5分钟搞定浏览器缓存失效方案

Vue3项目发布后用户总看到旧页面?5分钟搞定浏览器缓存失效方案 每次发布新版本后,总有用户反馈看到的还是旧页面?这种"幽灵缓存"问题困扰着不少Vue开发者。今天我们就来彻底解决这个顽疾,让你的每次更新都能准确触达用…...

为什么缺页中断比外部中断更紧急?从CPU流水线角度解析Page Fault处理机制

为什么缺页中断比外部中断更紧急?从CPU流水线角度解析Page Fault处理机制 在计算机系统的核心地带,CPU流水线如同精密的钟表齿轮般运转,而中断机制则是这个精密系统中的紧急制动装置。当我们深入探究两种不同类型的中断——缺页中断与外部中断…...

云计算,20岁生日快乐!

每天,我们都在使用一种看不见却无处不在的技术——云计算。它支撑着流媒体观看、邮件同步、照片备份以及企业级数据处理,却很少被人们直接感知。2026年3月,正值亚马逊网络服务(AWS)于2006年3月推出S3存储服务的20周年纪…...

避坑指南:Dify 1.6.0调用MCP服务超时问题的3种解决方案

Dify 1.6.0调用MCP服务超时问题的深度解决方案与优化实践 1. 问题背景与现象分析 最近在Dify 1.6.0平台上使用魔搭社区MCP服务时,不少开发者遇到了首次调用超时的问题。这个现象特别容易出现在以下几种场景: 长时间未使用后的首次调用新部署的MCP服务首次…...

手把手复现Ollama 0.1.33的RCE漏洞(CVE-2024-37032),从Docker搭建到PoC利用

深入剖析Ollama 0.1.33路径遍历漏洞(CVE-2024-37032)的实战复现指南 在本地运行大型语言模型已成为当前AI应用开发的热点需求,Ollama作为一款轻量级工具链,因其开箱即用的特性备受开发者青睐。然而近期披露的CVE-2024-37032漏洞暴…...

实测才敢推 一键生成论文工具 千笔 VS 学术猹 全行业通用

还在为选题→大纲→初稿→文献→降重→查重→格式→答辩PPT的全流程焦头烂额?千笔AI以八大核心功能实现全流程一站式覆盖,从选题到答辩PPT生成全程护航,让论文写作从“耗时耗力”变成“高效规范”,真正实现“选题快、框架稳、修改…...

从零构建RAGFlow全栈应用:React前端与Python API的实战对接

1. RAGFlow架构解析与实战场景设计 RAGFlow这个名词听起来有点技术范儿,但其实它的核心思想特别接地气——就像你去图书馆查资料写论文的过程。首先要在书架上找到相关书籍(检索阶段),然后阅读摘抄有用内容(生成阶段&a…...

救命神器!全行业通用AI论文平台,千笔AI VS 灵感风暴AI

在学术研究的道路上,论文写作往往成为最令人头疼的环节。从选题构思到最终答辩,每一个步骤都充满挑战,尤其是面对海量文献、复杂格式和反复修改时,时间与精力的双重消耗让人苦不堪言。而如今,随着AI技术的飞速发展&…...

别再死记公式了!用Multisim仿真+实物测量,5分钟搞懂运放差分放大电路

运算放大器差分电路实战指南:从仿真到实测的完整学习路径 看着示波器上跳动的波形,我突然意识到——那些在课本上死记硬背的公式,原来可以如此直观地呈现。作为一名电子工程师,我至今记得第一次用Multisim仿真配合实物测量理解差分…...

飞猪酒店API避坑指南:rateplan与库存管理的那些细节

飞猪酒店API深度解析:rateplan与库存管理的实战避坑策略 在酒店分销系统的技术对接中,飞猪平台的API设计以其灵活性和复杂性著称。许多开发团队在初次对接时,往往会在rateplan(价格计划)和库存管理这两个核心模块上栽跟…...

智能Agent新能力:集成BERT文本分割处理复杂用户查询

智能Agent新能力:集成BERT文本分割处理复杂用户查询 你有没有遇到过这种情况?想用AI助手帮你做点复杂的事,比如“帮我查一下明天北京的天气,然后根据天气推荐几个适合的户外活动,最后再把这些活动整理成一个简单的日程…...

永磁同步电机SVPWM算法下脉冲电池加热算法仿真Simulink模型探究

基于永磁同步电机SVPWM算法的脉冲电池加热算法仿真simulink模型。 某an的新技术仿真实现,该仅限用于研究。 邮箱发送。 在电动汽车领域,电池加热技术对于维持电池在低温环境下的性能至关重要。今天咱们就来聊聊基于永磁同步电机SVPWM算法的脉冲电池加热…...

Comsol热电效应仿真模型:温度场与电流场耦合计算,精准分析温度、电势与电场分布

Comsol热电效应仿真计算模型,采用温度场和电流场耦合热电效应多物理场进行计算,可以得到计算模型的温度场、电势和电场分布打开COMSOL软件新建模型时,总有人纠结该选哪个物理场接口。搞热电仿真根本不用纠结——直接双击"热电效应"…...

感应加热仿真:当电磁场和温度场搞起联动

Comsol工件感应加热仿真计算模型,采用温度场和电磁场耦合电磁热多物理场进行计算,可以得到计算模型的温度场和电磁场分布车间里烧得通红的金属件,背后可能藏着一场电磁与温度的"物理CP秀"。COMSOL的多物理场耦合功能,让…...

星露谷物语无头服务器搭建:从零到一构建专属联机农场

1. 为什么需要无头服务器? 很多星露谷物语玩家都遇到过这样的困扰:想和朋友联机种田,但Steam联机经常卡顿,主机玩家下线后其他人就没法继续游戏。这时候,一个24小时在线的专属服务器就显得尤为重要。无头服务器&#…...

智能水产养殖系统-PyQt5-YOLOv8鱼类尺寸自动检测与Modbus数据交互方案

1. 智能水产养殖系统概述 在传统的水产养殖过程中,工人需要手动测量鱼类的体长、体重等生长指标,不仅效率低下,而且容易对鱼类造成应激反应。现在,借助计算机视觉和物联网技术,我们可以实现鱼类尺寸的自动化检测与数据…...

OpenPose vs MediaPipe:姿态识别算法选型指南(含性能对比)

OpenPose vs MediaPipe:深度解析姿态识别算法选型策略 1. 姿态识别技术全景概览 姿态识别作为计算机视觉领域的核心技术之一,已经从实验室走向了工业界的广泛应用。这项技术通过分析图像或视频中的人体关键点位置,构建数字化的人体姿态模型&a…...

倒立摆这玩意儿在控制领域算是个经典玩具,今天咱们用MATLAB整点有意思的——用LQR同时实现小车的平衡控制和外加摆杆起摆。先来点硬核的,直接上状态方程

MATLAB直线倒立摆一阶倒立摆LQR控制仿真,小车倒立摆起摆和平衡控制,附带参考文献% 系统参数(单位全部国际标准制) M 0.5; % 小车质量 m 0.2; % 摆杆质量 l 0.3; % 摆杆半长 g 9.81; % 重力加速度% 状态空间模型推导…...

打卡信奥刷题(2996)用C++实现信奥题 P6148 [USACO20FEB] Swapity Swapity Swap S

P6148 [USACO20FEB] Swapity Swapity Swap S 题目描述 Farmer John 的 NNN 头奶牛(1≤N≤1051\leq N\leq 10^51≤N≤105)站成一排。对于每一个 1≤i≤N1\leq i\leq N1≤i≤N,从左往右数第 iii 头奶牛的编号为 iii。 Farmer John 想到了一个新…...

从AntSword抓包看一句话木马:为什么你的webshell能被安全工具检测到?

从流量特征解密一句话木马的检测与对抗 在网络安全攻防演练中,一句话木马因其隐蔽性和灵活性成为攻击者常用的持久化手段。但为什么这些看似简单的代码片段能被现代安全设备精准识别?本文将通过中国蚁剑的实际抓包案例,结合Wireshark和BurpSu…...

SmolVLA模拟技术面试官:动态追问与深度评估展示

SmolVLA模拟技术面试官:动态追问与深度评估展示 最近在技术社区里,一个话题讨论得挺热:有没有什么工具能模拟真实的技术面试,帮你提前感受一下高压下的临场反应?毕竟,对着文档刷题是一回事,面对…...

nlp_structbert_sentence-similarity_chinese-large助力内容社区:CSDN博客相似文章推荐

nlp_structbert_sentence-similarity_chinese-large助力内容社区:CSDN博客相似文章推荐 你有没有过这样的经历?在CSDN上读完一篇讲“Spring Boot自动配置原理”的文章,感觉意犹未尽,还想看看其他开发者从不同角度是怎么理解的。于…...

MedCLIP:解锁医学多模态对比学习的数据效率与语义精准度

1. 医学多模态学习的困境与突破 想象一下,你手里有两本厚厚的医学资料:一本是成千上万的X光片,另一本是对应的诊断报告。传统方法要求你把每张片子与对应的报告精确匹配才能训练AI系统,这就像要求图书管理员必须记住每本书的确切位…...

VL53L0X激光测距模块的四种工作模式详解:如何根据场景选择最佳模式

VL53L0X激光测距模块的四种工作模式详解:如何根据场景选择最佳模式 激光测距技术在工业自动化、机器人导航、智能家居等领域扮演着关键角色。作为STMicroelectronics推出的新一代飞行时间(ToF)激光测距模块,VL53L0X凭借其高精度、快速响应和小型化设计&a…...