基于LLM与多智能体架构的科研文献检索系统设计与实现

news2026/5/15 17:07:20
1. 项目概述当AI遇上科研一场信息检索的革命如果你是一名科研工作者或者正在为毕业论文、项目报告而焦头烂额那你一定对“找文献”这件事深有体会。面对海量的学术数据库输入关键词得到成千上万篇论文然后一篇篇点开、浏览摘要、下载、阅读试图从中找到那几篇真正相关、质量又高的核心文献。这个过程耗时、费力而且常常因为关键词选择不当或检索策略不精导致漏掉关键信息。这不仅仅是效率问题更是信息获取的“最后一公里”难题。今天要聊的这个项目AgentTeam-TaichuAI/ScienceClaw就是冲着解决这个痛点来的。它不是一个简单的文献搜索引擎而是一个由多个AI智能体Agent协同工作的“科研信息助理”。你可以把它想象成一个由几位顶尖、且各有所长的科研助手组成的团队一位负责理解你的复杂需求一位负责在各大数据库里精准“抓取”还有一位负责帮你快速总结和提炼核心观点。这个项目本质上是在用大语言模型LLM驱动的智能体技术重构我们获取和消化科研信息的流程。它适合谁首先当然是广大的科研人员、高校师生。其次任何需要进行深度信息调研、行业分析、技术追踪的专业人士比如市场分析师、产品经理、技术顾问都能从中受益。对于有一定编程基础想了解如何将大模型应用于垂直领域、构建复杂智能体系统的开发者来说ScienceClaw更是一个绝佳的学习和参考案例。它展示的不仅是一个工具更是一种用AI赋能专业工作的新范式。2. 核心设计思路多智能体协同的“科研流水线”传统的文献检索工具无论是Google Scholar、PubMed还是Web of Science其核心逻辑依然是“关键词匹配-返回列表”。用户需要自己充当“策略制定者”和“信息筛选者”。ScienceClaw的设计哲学截然不同它将整个检索与理解过程拆解成多个子任务并分配给专门化的智能体去完成形成一个高效的流水线。2.1 从“工具”到“团队”智能体分工解析ScienceClaw的核心魅力在于其多智能体架构。我们来看看这个“团队”里通常有哪些角色任务规划与分解智能体这是团队的“项目经理”。当你输入一个模糊的、复杂的查询比如“帮我找找最近三年关于利用深度学习预测蛋白质结构并且侧重于无监督学习方法的最新综述和突破性研究”时这个智能体首先会与你进行多轮对话如果需要澄清你的真实意图。然后它将这个宏大的任务分解成一系列可执行的子任务例如“1. 在arXiv、PubMed上检索‘protein structure prediction deep learning unsupervised review 2021-2024’2. 筛选出高被引100的综述文章3. 找出提及‘AlphaFold2’、‘RoseTTAFold’等关键模型的实证研究4. 总结无监督方法对比监督方法的优势与挑战。”专业检索智能体这是团队的“侦察兵”。它接收规划智能体分解出的具体检索指令。但它的强大之处在于它不仅仅是将关键词扔给数据库API。它内置了对不同学术数据库如arXiv、Semantic Scholar、PubMed、ACL Anthology等查询语法和特性的理解。例如它知道在PubMed用[Title/Abstract]限定字段更有效在arXiv上可以按submission_date排序。它还能进行“查询扩展”根据当前检索结果的相关性自动调整或增加同义词、相关术语以扩大或缩小检索范围确保查全率和查准率。信息提取与总结智能体这是团队的“分析师”。检索智能体抓取回来的是原始的论文元数据标题、作者、摘要、PDF链接等甚至全文。这个智能体的任务是从这些海量文本中快速提取核心信息。它不会简单地复述摘要而是会根据任务规划阶段设定的目标进行定向总结。例如如果目标是“比较不同方法的优劣”它会从多篇论文中提取方法描述、实验指标、结论部分并生成一个对比表格。如果目标是“追踪技术发展脉络”它会尝试梳理出关键论文的时间线和引用关系。结果合成与报告智能体这是团队的“撰稿人”。它将各个智能体产出的中间结果——规划步骤、检索到的论文列表、提取出的关键信息——整合成一份结构清晰、易于阅读的最终报告。这份报告可能包括检索策略说明、相关论文的精选列表附上核心贡献一句话总结、关键发现的归纳、甚至还有下一步研究方向的建议。它确保了输出不是零散的信息碎片而是一份有价值的调研产出。注意智能体的具体数量和分工可能因项目版本和配置而异但“规划-检索-分析-合成”这一核心工作流是稳定的。这种设计的好处是模块化和可扩展性。你可以随时替换或升级其中某一个智能体比如换用更强大的总结模型而不影响整个系统运行。2.2 技术栈选型为什么是LLM 智能体框架ScienceClaw的实现依赖于两大核心技术支柱大语言模型LLM和智能体Agent框架。大语言模型LLM是“大脑”所有智能体的核心推理、理解、生成能力都来源于LLM。规划智能体需要理解复杂的人类指令并分解任务这需要强大的语义理解和逻辑推理能力。总结智能体需要从长文本中提取要点这需要出色的文本理解和归纳能力。因此项目通常会选择性能较强的开源或闭源LLM作为后端例如GPT-4、Claude 3系列或开源的Llama 3、Qwen等。选择时主要权衡效果、成本、可控性。闭源模型如GPT-4效果通常最好API调用方便但成本高数据隐私需考虑。开源模型如Llama 3 70B可私有化部署数据完全可控定制性强但对计算资源要求高可能需要精调Fine-tuning以达到专业领域的最佳效果。智能体框架是“骨架”与“协作规则”框架如LangChain、LlamaIndex、AutoGen等提供了构建和管理多智能体系统的标准化工具。它帮助开发者定义智能体角色和能力轻松指定某个智能体“擅长规划”或“擅长检索”。编排工作流以代码形式固化“先规划再检索后总结”的执行顺序和触发条件。管理工具调用让检索智能体能够方便地调用搜索引擎API、学术数据库API。处理智能体间通信规划智能体如何将子任务传递给检索智能体检索结果如何传递给总结智能体。ScienceClaw选择这样的技术栈是因为纯关键词检索已触及天花板而LLM带来了语义级理解的飞跃。智能体框架则将LLM的单一能力串联成解决复杂问题的系统工程能力。3. 关键组件深度拆解不只是调用API那么简单要构建一个真正可用的ScienceClaw每一个组件都不能是简单的“套壳”。下面我们来深入看看几个关键部分的实现细节和考量。3.1 查询理解与任务分解把模糊需求变清晰指令这是整个流程的起点也是最容易出错的环节。用户的输入往往是模糊、不完整甚至存在歧义的。实现要点多轮对话澄清规划智能体不应假设用户一次就能说清所有需求。它应被设计成主动发起澄清对话。例如用户说“找AI在医疗中的应用”智能体可以反问“您关注的是医学影像诊断、药物发现、电子病历分析还是健康管理需要限定近几年的文献吗需要侧重综述还是临床研究”这通常通过设计包含少量示例Few-shot的系统提示词System Prompt来实现引导模型学会提问。结构化输出规划智能体分解出的任务必须是结构化的、机器可执行的。通常输出会是一个JSON或特定格式的列表包含子任务ID、任务类型如searchsummarize、目标描述、关键约束如时间范围、文献类型、数据库来源、成功标准。这为后续智能体的无缝衔接奠定了基础。领域知识注入为了让分解更专业需要在提示词或通过检索增强生成RAG的方式为规划智能体提供领域知识。例如当用户提到“因果推断”时智能体应知道相关的子领域潜在结果模型、结构方程模型等和常用数据库如JSTOR, EconLit。实操心得规划提示词Prompt的设计是门艺术。不要只写“请分解以下任务”。好的提示词模板应包含角色定义“你是一位资深的科研助理”、任务示例给出1-2个从模糊查询到清晰分解的完整例子、输出格式要求严格规定JSON schema。实测下来提供例子比单纯描述要求效果提升显著。3.2 智能检索策略超越简单关键词匹配检索智能体是信息源的直接触手。它的性能直接决定了输入后续流程的数据质量。核心策略多源并行检索不要只依赖一个数据库。ScienceClau应同时向arXiv、Semantic Scholar、PubMed通过其API等发起查询。因为不同数据库的覆盖范围、更新速度和领域侧重不同。并行化可以获取更全面的信息。查询重构与扩展同义词扩展将“深度学习”扩展为“深度神经网络”、“DNN”、“neural network”。上下位词扩展查询“Transformer”时可能也需要关注“BERT”、“GPT”、“Attention mechanism”。基于LLM的查询生成让LLM根据原始查询和初步检索结果生成3-5个不同侧重点的查询语句。例如针对“AI for climate change” LLM可能生成“machine learning applications in climate modeling”, “AI for renewable energy optimization”, “deep learning for extreme weather prediction”。结果去重与排序从多个源检索到的结果必然有重复。需要根据DOI、标题相似度等进行去重。排序策略也不应只是默认的相关性排序可以综合考虑发表时间优先最新、引用次数衡量影响力、与分解后子任务的核心关键词匹配度衡量相关性、来源期刊/会议声誉衡量质量。可以设计一个简单的加权打分公式。技术实现细节API调用与限流严格遵守各学术数据库API的调用频率限制实现优雅的重试和退避机制避免IP被封。异步处理为了速度多源检索和同一源的多查询扩展都应使用异步IO并发执行大幅缩短等待时间。缓存对于常见的查询或阶段性结果如某篇论文的元数据建立本地缓存避免重复请求节省成本和时间。3.3 信息提炼与总结从“读到”到“读懂”这是体现AI价值的关键一步也是计算开销最大的环节之一。分层总结策略摘要级总结对于检索到的每一篇候选论文首先基于其元数据和摘要生成一段80-150字的“亮点总结”说明其核心问题、方法创新点、主要结论。这帮助用户快速筛选是否需要深入阅读。全文关键信息提取对于通过筛选的论文或用户指定的重要论文下载PDF使用OCR如需要和PDF解析库如PyMuPDF,pdfplumber提取全文文本。然后指示LLM根据特定模板提取信息。模板可能包括研究背景与问题核心方法/模型描述实验设置与数据集主要结果与指标本文局限性及未来工作与其他工作的对比如果文中提及跨文档综合归纳这是最高阶的能力。给定一个主题下的多篇论文让LLM进行横向对比和综合。例如“根据这10篇论文总结目前解决蛋白质结构预测的三大技术路线及其优缺点。” 这需要模型具备强大的信息整合、对比分析和观点提炼能力。避坑指南处理长文本学术论文动辄上万字超出LLM的上下文窗口。必须使用递归总结或基于向量检索的RAG技术。先将全文切分成有重叠的语义块为每个块生成摘要或者先提取出关键句再将关键信息喂给LLM进行最终总结。幻觉问题LLM在总结时可能“捏造”论文中不存在的信息。 mitigation策略包括1) 在提示词中强令“严格基于提供文本不得编造”2) 要求输出附带引用指明某条信息来源于原文第几页或哪个章节3) 对关键事实如具体数字、方法名称进行二次验证如回查原文片段。格式一致性要求LLM以Markdown表格、列表等结构化格式输出便于后续合成报告。4. 从零搭建与核心环节实现假设我们基于LangChain框架和OpenAI API来构建一个简化版的ScienceClaw核心流程。以下是关键步骤的代码级思路和说明。4.1 环境准备与智能体定义首先定义我们的智能体团队。我们使用LangChain的“代理”Agent概念每个代理配备不同的工具和提示词。# 伪代码/思路展示 import os from langchain.agents import AgentExecutor, create_openai_tools_agent from langchain_openai import ChatOpenAI from langchain.tools import Tool from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder # 1. 初始化LLM llm ChatOpenAI(modelgpt-4-turbo, temperature0.1, openai_api_keyos.getenv(OPENAI_API_KEY)) # 2. 定义工具 - 这里以检索工具为例 def search_arxiv(query: str, max_results: int 10): # 调用arXiv API的逻辑 # 返回格式化的论文列表 pass def search_semantic_scholar(query: str, max_results: int 10): # 调用Semantic Scholar API的逻辑 pass search_tools [ Tool( nameArXiv_Search, funcsearch_arxiv, descriptionUseful for searching academic papers on arXiv. Input should be a search query string. ), Tool( nameSemantic_Scholar_Search, funcsearch_semantic_scholar, descriptionUseful for searching academic papers on Semantic Scholar. Input should be a search query string. ), # 可以添加更多工具如总结工具、网络搜索工具等 ] # 3. 创建规划智能体 planner_prompt ChatPromptTemplate.from_messages([ (system, 你是一位资深科研规划助手。你的任务是将用户模糊的科研信息需求分解成一系列具体、可执行的检索和总结子任务。 你需要通过多轮对话澄清用户需求。输出时请严格按照以下JSON格式 { clarification_questions: [问题1, 问题2, ...], // 如果需要澄清 sub_tasks: [ {id: 1, type: search, database: arxiv, query: 精确查询语句, goal: 查找关于X的实证研究, constraints: {year: 2020, type: conference}}, {id: 2, type: summarize, focus: 对比分析方法A和B的优缺点, papers: [/* 来自任务1的论文ID列表 */]} ] } 如果无需澄清clarification_questions为空数组。), MessagesPlaceholder(variable_namechat_history), (human, {input}), ]) planner_agent create_openai_tools_agent(llm, tools[], promptplanner_prompt) # 规划智能体初期可能不需要外部工具 planner_executor AgentExecutor(agentplanner_agent, tools[], verboseTrue, handle_parsing_errorsTrue) # 4. 创建检索智能体 retriever_prompt ChatPromptTemplate.from_messages([ (system, 你是一位专业的学术检索专家。根据给定的精确检索任务包括查询语句、数据库、约束条件调用合适的工具获取论文列表。 你需要对结果进行初步筛选和排序。你的输出是经过整理的论文列表每篇包含标题、作者、摘要、链接、发表年份和引用数如果可用。), MessagesPlaceholder(variable_namechat_history), (human, 任务: {task_description}), ]) retriever_agent create_openai_tools_agent(llm, toolssearch_tools, promptretriever_prompt) retriever_executor AgentExecutor(agentretriever_agent, toolssearch_tools, verboseTrue) # 类似地可以创建总结智能体、合成智能体...4.2 工作流编排与执行定义了智能体后我们需要一个“调度员”来按顺序执行它们并传递数据。class ScienceClawWorkflow: def __init__(self, planner, retriever, summarizer, synthesizer): self.planner planner self.retriever retriever self.summarizer summarizer self.synthesizer synthesizer self.chat_history [] # 维护对话历史实现多轮 def run(self, user_query: str): # 步骤1: 任务规划与澄清 planning_result self.planner.invoke({input: user_query, chat_history: self.chat_history}) plan json.loads(planning_result[output]) # 如果有澄清问题先与用户交互 if plan.get(clarification_questions): print(规划助手需要澄清:) for q in plan[clarification_questions]: print(f- {q}) # 这里可以接入一个前端交互收集用户回答并更新chat_history # 为简化假设用户已回答我们重新运行规划 # 实际应用中需要将用户回答加入历史再次调用规划器 # ... sub_tasks plan[sub_tasks] all_results {} # 步骤2: 按顺序执行子任务 for task in sub_tasks: if task[type] search: # 执行检索 search_result self.retriever.invoke({task_description: json.dumps(task), chat_history: self.chat_history}) papers self._parse_search_output(search_result[output]) all_results[task[id]] {type: papers, data: papers} # 将检索到的论文ID传递给后续的总结任务 # 更新后续任务的上下文 # ... elif task[type] summarize: # 获取需要总结的论文数据 target_paper_ids task.get(papers, []) papers_to_summarize [] for pid in target_paper_ids: if pid in all_results and all_results[pid][type] papers: papers_to_summarize.extend(all_results[pid][data]) # 执行总结 summary_result self.summarizer.invoke({papers: papers_to_summarize, focus: task[focus]}) all_results[task[id]] {type: summary, data: summary_result[output]} # 步骤3: 最终合成报告 final_report self.synthesizer.invoke({all_task_results: all_results, original_query: user_query}) return final_report[output] def _parse_search_output(self, raw_output): # 解析检索智能体返回的文本提取结构化的论文信息 # 这里可能需要一些文本解析或正则表达式理想情况是让智能体直接输出JSON pass # 初始化并运行 workflow ScienceClawWorkflow(planner_executor, retriever_executor, summarizer_executor, synthesizer_executor) report workflow.run(帮我找找最近三年关于利用深度学习预测蛋白质结构并且侧重于无监督学习方法的最新综述和突破性研究。) print(report)这个简化流程展示了多智能体如何通过规划、工具调用、结果传递来协作。在实际项目中错误处理、状态管理、长上下文处理等要复杂得多。5. 常见问题、优化方向与避坑实录在实际构建和使用这类系统时你会遇到一系列挑战。以下是一些常见问题和我积累的应对经验。5.1 典型问题与排查技巧问题现象可能原因排查与解决思路规划智能体分解的任务不准确或过于宽泛1. 提示词不够具体缺少示例。2. LLM本身推理能力不足。3. 用户查询确实极度模糊。1.优化提示词在系统提示中加入2-3个高质量的分解示例覆盖不同领域计算机、生物、物理。示例要展示如何从模糊到具体。2.升级模型尝试使用能力更强的LLM如从GPT-3.5升级到GPT-4。3.强制交互设计流程当任务分解的置信度低于某个阈值或子任务数量过多/过少时自动触发多轮澄清对话。检索结果相关性差漏掉关键文献1. 查询关键词过于狭窄或宽泛。2. 未使用查询扩展。3. 检索的数据库覆盖不全。1.实施查询重构在检索智能体内部先让LLM对原始查询进行同义词、相关术语扩展生成3-5个变体查询并行执行。2.混合检索结合关键词检索如BM25和语义向量检索如用Embedding模型。先用关键词保证基础相关性再用语义检索捕捉概念相似但用词不同的文献。3.增加数据源评估当前数据源覆盖率考虑集成更多专业数据库如IEEE Xplore, SpringerLink等。总结内容出现“幻觉”编造信息1. LLM的固有缺陷。2. 输入上下文过长模型丢失细节。3. 提示词未强调“基于原文”。1.提示词约束在总结提示词开头用强语气写明“你必须严格基于提供的文本内容进行总结不得添加任何文本中不存在的信息或观点。”2.要求引用在输出格式中强制要求每一条关键结论后需注明来源段落的大致位置如“根据第3节实验部分所述”。3.分块总结再归纳对长论文先分章节总结再将各章节摘要合并进行最终归纳减少单次处理的上下文长度和信息丢失。系统运行速度慢响应延迟高1. 串行执行任务。2. LLM API调用延迟高。3. PDF解析和全文处理耗时。1.异步并行化将无依赖关系的子任务如对不同数据库的检索改为异步并发执行。2.缓存策略对论文元数据、摘要等内容建立本地缓存。对相同的查询或论文ID直接返回缓存结果。3.懒加载与分级处理不要一开始就下载和处理所有论文的全文。先基于摘要进行筛选只对高相关性的论文进行全文深度分析。成本失控1. 对大量低相关性论文进行全文总结。2. 使用了昂贵的LLM如GPT-4处理所有步骤。1.分级使用模型规划、总结等核心复杂任务用强模型如GPT-4简单的文本提取、格式转换用便宜模型如GPT-3.5-Turbo或开源小模型。2.设置预算和阈值为用户或单次会话设置token消耗上限。在检索后根据相关性分数设置一个阈值只总结排名前N的论文。3.本地化部署对于总结等任务可以考虑使用量化后的高性能开源模型如Qwen-72B-Chat-Int4在本地运行长期成本更低。5.2 进阶优化与扩展思路当你解决了基本问题后可以考虑以下方向让ScienceClaw变得更强大个性化推荐与记忆为每个用户建立简单的兴趣档案。记录其历史查询、点击和标记为“有用”的论文。在后续检索中可以轻微调整排序优先推荐与其历史兴趣相关的论文。这可以通过为用户历史行为生成Embedding并与论文Embedding计算相似度来实现。深度分析能力方法对比表格自动生成给定多篇论文自动提取方法描述、实验数据集、评价指标、结果数值填充到一个对比表格中。技术脉络图绘制分析论文间的引用关系结合发表时间用LLM识别出技术发展的关键路径和里程碑节点甚至可以自动生成简要的技术发展时间线描述。支持复杂、迭代的调研流程真正的科研调研是迭代的。用户在看到初步结果后可能会提出“针对方法A找找看有没有改进其计算效率的工作”。这就需要系统能记住之前的上下文检索了哪些论文总结了什么并在其基础上进行增量式的深入检索和分析。这要求工作流引擎具备更强的状态管理和历史追溯能力。领域专业化微调通用LLM在特定深奥的科学领域如理论物理、有机化学可能表现不佳。可以考虑收集特定领域的优质论文和对应的总结、问答数据对基础LLM进行监督微调SFT打造一个“领域专家”模型用于核心的总结和问答环节能更准确地理解专业术语和概念。构建ScienceClaw这样的系统是一个典型的“AI工程”问题。它考验的不仅仅是对LLM API的调用更是对复杂业务流程的拆解、模块化设计、系统编排和持续优化的能力。从第一个能跑通的简单管道到一个真正稳定、可靠、有用的科研助手中间有大量的细节需要打磨。但每解决一个问题你都能真切地感受到AI是如何一步步地改变一个古老而核心的工作方式的。这个过程本身就充满了挑战和乐趣。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2611260.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;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…