GoLLIE:基于大语言模型的零样本信息抽取实战指南

news2026/5/4 1:20:54
1. 项目概述当大语言模型学会“看图说话”式的结构化信息抽取最近在信息抽取和结构化数据生成领域一个名为GoLLIE的项目引起了我的注意。它不是一个全新的模型而是一个基于开源大语言模型如Code Llama进行指令微调的框架其核心目标非常明确教会大语言模型像人类一样根据给定的“标注指南”Annotation Guidelines来理解和抽取文本中的结构化信息。想象一下这个场景你是一位数据分析师面对海量的客户反馈邮件需要从中提取出“产品问题类型”、“客户情绪”、“提及的具体功能”等信息。传统的做法是要么手动阅读标注耗时耗力要么训练一个定制化的命名实体识别NER或关系抽取模型需要大量标注数据和技术门槛。GoLLIE的思路则截然不同它试图让模型理解你定义的“规则”。你不需要提供成千上万的标注样本而是用自然语言写一份“说明书”告诉模型“请从文本中找出所有属于‘产品缺陷’的表述它们可能包括‘卡顿’、‘闪退’、‘无法连接’等关键词或相似表述。”然后模型就能尝试根据这份“说明书”去执行抽取任务。这听起来是不是有点像让模型学会了“看图说话”只不过这里的“图”变成了结构化的“标注指南”。GoLLIE的名字也揭示了它的渊源Generalization over Large Language-supervised Information Extraction即“基于大语言监督的信息抽取泛化”。它的野心在于通过指令学习让模型具备强大的零样本Zero-shot或小样本Few-shot泛化能力能够快速适应层出不穷的新信息抽取需求而无需为每个新任务重新收集数据和训练模型。对于从事NLP、数据标注、知识图谱构建或任何需要从非结构化文本中获取结构化信息的从业者来说GoLLIE代表了一种更灵活、更人性化的工作流可能性。它降低了定制化信息抽取任务的门槛将重点从“准备训练数据”转移到了“清晰定义任务规则”上。接下来我将深入拆解GoLLIE的核心思路、技术实现、实操方法以及我趟过的一些坑希望能为你是否采用以及如何用好这个工具提供一份详实的参考。2. 核心思路拆解基于指令的通用信息抽取范式GoLLIE的核心理念并非凭空而来它建立在对当前大语言模型LLM能力边界的深刻洞察之上。传统的信息抽取方法无论是基于规则、统计机器学习还是早期的深度学习模型通常都是“任务特定型”的。为一个医疗领域的实体识别任务训练的模型很难直接用于金融领域的合同解析。每遇到一个新领域或新定义往往意味着从数据标注到模型训练的新一轮循环。2.1 从“任务训练”到“指南理解”的范式转移GoLLIE实现了一次关键的范式转移。它不再要求模型从海量的任务特定标注数据中“归纳”出模式而是训练模型去“理解”并“执行”人类用自然语言编写的任务指南。这个指南Guideline定义了任务类型要抽取什么是实体、关系、事件还是共指类别定义每个类别如“人物”、“组织”、“疾病”的精确描述和示例。约束与规则例如“某个实体不能同时属于两个互斥的类别”“关系必须存在于已识别的实体之间”等。模型的学习目标是建立起“指南文本”到“在目标文本上执行结构化预测”之间的映射。这要求模型具备极强的指令遵循Instruction Following和上下文学习In-context Learning能力。GoLLIE通过在大规模、多样化的信息抽取任务数据集上进行指令微调来强化模型的这种能力。这些数据集的每一个样本都包含了三要素任务指南Guideline、输入文本Text、以及符合指南要求的标注结果Structured Output。2.2 模型架构与训练策略选择项目基于Code Llama进行微调这个选择颇有深意。Code Llama本身在代码生成和理解上表现优异而代码本质上也是一种高度结构化的、需要严格遵循逻辑和语法规则的“语言”。信息抽取任务要求输出结构化的格式如JSON、特定标记这与代码生成任务在输出模式上有相似之处。Code Llama可能比纯文本LLM更擅长生成格式正确、符合模式约束的输出。在训练策略上GoLLIE采用了标准的指令微调Instruction Tuning方法。但关键在于其构建的指令数据。它并非简单地将传统IE数据集如ACE、OntoNotes的输入输出配对而是为每个任务人工或半自动地撰写了详细的指南并将指南作为输入的一部分。这样模型在训练时看到的不仅仅是“输入句子 - 输出标签”而是“【任务指南】 输入句子 - 输出标签”。通过在海量这样的数据上学习模型逐渐内化了如何根据指南进行推理。注意这里的“海量”是相对于传统IE训练集而言。GoLLIE的泛化能力依赖于其在训练阶段见过的“任务多样性”而非单一任务的数据量。它见过成百上千种不同的实体、关系定义从而学会了一种“元能力”——理解新定义。2.3 结构化输出的编码与解码如何让LLM输出复杂、嵌套的结构化信息如带有类型、边界、关系的实体图是一个挑战。GoLLIE采用了基于文本序列的编解码方式。它将结构化的标注如一组实体及其关系线性化为一种特定的文本格式类似于一种简化的标记语言或JSON的变体。例如一个实体可能被表示为[实体类型实体提及]的形式。在解码时模型被训练成生成这种格式的文本序列。然后后处理模块会解析这个序列将其还原成结构化的对象。这种方式的好处是完全利用LLM原有的文本生成能力无需修改模型架构。但挑战在于模型必须学会严格遵循这种输出格式任何格式错误都会导致解析失败。这也是为什么选择Code Llama可能更有优势的原因之一——它对格式的敏感性更高。3. 实操部署与环境搭建指南理论说得再多不如上手一试。GoLLIE项目提供了相对清晰的代码和模型权重但部署过程仍有一些细节需要注意。以下是我在本地环境Ubuntu 20.04 单卡A6000 48GB下的搭建实录。3.1 基础环境与依赖安装首先确保你的Python环境建议3.9或3.10和CUDA驱动正常。然后克隆仓库并安装依赖。git clone https://github.com/hitz-zentroa/GoLLIE.git cd GoLLIE pip install -r requirements.txt这里有个常见的坑requirements.txt里的包版本可能会与你的现有环境冲突特别是torch和transformers。如果遇到问题一个比较稳妥的做法是先创建一个全新的conda环境然后根据项目推荐的版本手动安装核心依赖。我成功的配置是conda create -n gollie python3.9 conda activate gollie pip install torch2.1.2 torchvision0.16.2 torchaudio2.1.2 --index-url https://download.pytorch.org/whl/cu118 pip install transformers4.36.2 accelerate sentencepiece protobuf datasets scikit-learnaccelerate库对于高效利用GPU内存很重要sentencepiece是LLaMA系列tokenizer所需。3.2 模型权重下载与加载GoLLIE提供了多个规模的模型检查点如7B, 13B。你需要从Hugging Face Hub下载。以7B模型为例from transformers import AutoTokenizer, AutoModelForCausalLM model_name HiTZ/GoLLIE-7B tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForCausalLM.from_pretrained(model_name, device_mapauto, torch_dtypetorch.float16)使用device_mapauto和torch_dtypetorch.float16(半精度) 可以显著减少GPU内存占用让7B模型在24GB显存的卡上也能运行。对于13B模型可能需要使用load_in_8bit或load_in_4bit(需要bitsandbytes库) 进行量化才能放入消费级显卡。实操心得下载模型时国内网络直接连接Hugging Face可能很慢或失败。可以尝试使用镜像站或者在能稳定访问的环境下先下载到本地再传输到目标机器。另外首次加载模型时transformers会下载一些配置文件确保网络通畅。3.3 验证基础功能加载成功后运行一个简单的示例脚本来验证模型是否能正常进行指令推理。项目仓库通常会有inference.py或demo.py。你需要准备一个符合其输入格式的样本包含guideline和text。guideline “”” 任务识别文本中提到的所有“组织机构”。 定义“组织机构”指的是公司、政府机构、学校、非营利组织等有正式名称的实体。 示例 输入“苹果公司发布了新iPhone。” 输出[组织机构苹果公司] “”” text “微软和谷歌在人工智能领域展开了激烈竞争。” inputs f“指南{guideline}\n\n文本{text}\n\n输出” input_ids tokenizer(inputs, return_tensors“pt”).input_ids.to(model.device) outputs model.generate(input_ids, max_new_tokens100) result tokenizer.decode(outputs[0], skip_special_tokensTrue) print(result)如果输出能正确包含类似[组织机构微软] [组织机构谷歌]的内容说明环境搭建成功。注意生成的文本可能包含输入重复需要截取“输出”之后的部分进行解析。4. 核心应用流程从定义指南到解析结果成功部署后如何用GoLLIE解决一个真实的信息抽取问题整个过程可以分解为四个关键步骤每一步都有其技巧和注意事项。4.1 步骤一定义清晰、无歧义的标注指南这是决定GoLLIE效果上限的最关键一步。指南的质量直接决定了模型的理解程度。编写指南时要站在一个完全不了解你领域知识的人的角度思考。优秀指南的特征具体而非抽象避免“识别重要信息”这种模糊描述。应改为“识别涉及合同金额、付款日期、违约责任的句子或短语”。提供正例与反例对于容易混淆的类别正反例对比非常有效。例如定义“疾病”时可以写“‘糖尿病’是疾病‘血糖高’可能是症状但不特指疾病不属于此类。”阐明边界情况比如“公司名称”是否包含“有限公司”、“Inc.”等后缀指南中应明确说明。结构化表述使用分点、编号、清晰的小标题来组织指南使其易于阅读。LLM对结构良好的文本理解更好。一个定义“客户投诉原因”的指南示例# 任务指南从客户反馈中抽取投诉原因 ## 目标 识别客户在文本中直接或间接表达的不满所对应的根本原因类别。 ## 原因类别定义 1. 产品质量问题指产品本身存在的缺陷、故障、与描述不符等。 - 示例“手机屏幕有坏点。”、“电池续航远低于宣传。” - 非示例“送货慢了。”属于物流问题 2. 客户服务问题指在与客服人员沟通、寻求支持过程中产生的不满。 - 示例“客服等了半小时没人接。”、“技术支持解决不了问题还态度差。” 3. 物流配送问题指与商品运输、送达相关的延误、损坏或错误。 - 示例“承诺次日达结果三天才到。”、“包裹外包装严重破损。” 4. 价格与费用问题指对商品价格、隐藏收费、计费方式的不满。 - 示例“结账时突然多了运费。”、“比隔壁平台贵了20%。” ## 输出格式 请按以下格式列出所有识别到的原因类别[原因类别原文中的相关引用句或关键词] 如果一段文本涉及多个原因请全部列出。这样的指南就比单纯一句“找出投诉原因”要有效得多。4.2 步骤二数据准备与预处理GoLLIE虽然主打零样本/小样本但如果你有少量标注数据可以将其用于示例Few-shot Learning或者用于评估模型在新任务上的表现。文本清洗确保输入文本是干净的。移除无关的HTML标签、特殊字符除非它们对任务重要进行基本的标准化。长度处理LLM有上下文长度限制如Code Llama可能是4096或更多token。你的“指南文本”总长度不能超过限制。如果文本过长需要考虑分割策略。简单的按句子或段落分割可能破坏语义更佳的做法是使用滑动窗口并允许一定的重叠。构建Prompt按照模型训练时的格式将指南和文本拼接起来。通常的模板是“指南{guideline}\n\n文本{text}\n\n输出”。务必与模型微调时使用的格式保持一致这是指令遵循模型的关键。4.3 步骤三模型推理与参数调优调用模型生成输出时生成策略的参数对结果影响很大。generation_config { “max_new_tokens”: 150, # 根据输出复杂程度调整 “temperature”: 0.1, # 低温度如0.1-0.3使输出更确定、更遵循格式。高温度0.7更有创造性但可能格式错误。 “top_p”: 0.9, # 核采样参数与temperature配合使用。 “do_sample”: True, # 如果想使用temperature和top_p需设为True “repetition_penalty”: 1.1, # 适当抑制重复防止模型陷入循环 “pad_token_id”: tokenizer.eos_token_id, # 重要设置填充token } outputs model.generate(input_ids, **generation_config)关键参数解析max_new_tokens预留足够的token给输出。太短会导致输出被截断太长会增加计算量且可能生成无关内容。可以先估算一下。temperature这是最重要的参数之一。对于信息抽取这种要求精确、格式化的任务强烈建议使用低temperature0.1-0.3。这能最大程度减少模型“胡编乱造”和格式错误。我在实践中发现temperature0时贪婪解码有时会导致模型输出过于保守或单一0.1是一个很好的起点。top_p (nucleus sampling)通常与temperature一起使用。0.9是一个通用值。避坑技巧如果模型频繁输出与输入无关的内容或者无法停止生成一直输出“指南”等内容检查pad_token_id是否设置正确。对于没有显式填充token的模型如LLaMA使用eos_token_id作为pad_token_id是常见做法。此外确保在tokenizer调用时没有设置add_special_tokensFalse除非你非常清楚后果因为模型可能需要特殊的开始token。4.4 步骤四后处理与结果解析模型生成的是文本我们需要将其解析回结构化的数据。这需要一个稳健的解析器。提取输出部分首先从生成的完整文本中分离出“输出”之后的部分。设计解析逻辑根据你在指南中定义的输出格式如[类别提及]编写正则表达式或简单的分割函数进行解析。格式越简单、一致解析越容易。处理异常与歧义格式错误模型可能偶尔漏掉括号或冒号。可以编写容错性强的解析器或者采用“重试”机制当解析失败时将错误信息和原始输出再次作为提示输入模型要求它纠正格式。例如“你刚才的输出格式有误请严格按照‘[类别提及]’的格式重新生成。”多结果与重叠模型可能对同一片段给出多个标签或者识别出的实体边界有重叠。需要根据业务逻辑制定冲突消解规则比如“取置信度最高的”或“优先选择更具体的类别”。置信度评估纯生成模型不直接输出置信度。一种粗略的评估方法是使用model.generate的output_scores参数获取生成每个token的概率并计算整个输出序列的平均或最小概率作为参考。但这计算开销大。更实用的方法是用少量标注数据做一个快速评估或者设计一些启发式规则如输出格式的规范性、提及是否确实出现在原文中。5. 性能优化与高级使用技巧当基本流程跑通后我们自然会追求更快的速度、更低的资源消耗和更好的效果。这部分分享一些进阶经验。5.1 加速推理与降低显存占用对于长文本或批量处理推理速度是瓶颈。以下方法可以提升效率量化使用bitsandbytes库进行8位或4位量化能大幅减少显存占用允许在更小的GPU上运行更大的模型且推理速度损失相对较小。from transformers import BitsAndBytesConfig bnb_config BitsAndBytesConfig(load_in_4bitTrue, bnb_4bit_compute_dtypetorch.float16) model AutoModelForCausalLM.from_pretrained(model_name, quantization_configbnb_config, device_map“auto”)Flash Attention如果你的torch和transformers版本支持启用Flash Attention 2可以加速注意力计算。在加载模型时指定attn_implementation“flash_attention_2”。批处理如果有多条文本需要处理且指南相同可以将它们构建成批进行推理。但要注意批处理会显著增加显存占用因为需要同时处理多个序列。需要根据GPU内存谨慎调整批次大小。使用vLLM或TGI对于生产环境的高吞吐量需求可以考虑使用专门的推理服务器如vLLM或Text Generation Inference (TGI)。它们通过PagedAttention等优化技术能实现极高的吞吐量和较低的延迟并且支持OpenAI兼容的API方便集成。5.2 提升效果Few-shot Learning与指南迭代GoLLIE在零样本下可能表现不错但加入少量示例Few-shot通常能带来显著提升。在指南中融入示例这是最直接的方式。在编写指南的“示例”部分不仅给出类别定义示例更关键的是给出“完整输入-输出对”示例。## 示例 输入文本“我昨天买的咖啡机漏水而且客服电话一直打不通太让人失望了。” 期望输出[产品质量问题咖啡机漏水] [客户服务问题客服电话一直打不通]提供2-3个覆盖了不同类别和复杂情况的示例能极大地校准模型对指南的理解。动态Few-shot如果你的应用场景中有持续积累的标注数据可以实现一个动态检索系统。对于一个新的输入文本系统从标注库中检索出最相似的几条样本基于文本语义相似度然后将它们的“指南文本输出”作为前缀in-context examples拼接到当前输入之前。这相当于给模型提供了即时的、最相关的参考。指南迭代与A/B测试不要指望第一版指南就完美。准备一个小的测试集20-50条用不同版本的指南如不同详细程度、不同示例、不同表述去运行模型评估效果精确率、召回率、F1。选择效果最好的版本。这个过程很像产品经理优化产品说明书。5.3 处理复杂任务关系抽取与事件抽取GoLLIE不仅能做实体识别也能处理更复杂的任务关键在于如何设计指南和输出格式。关系抽取指南需要明确定义关系类型、关系的头尾实体类型约束。输出格式需要能同时表示实体和关系。例如输出格式实体[人物张三] [组织ABC公司]。关系[雇佣关系头实体[人物张三] 尾实体[组织ABC公司]]。这要求模型有更强的结构化思维。可能需要提供更详细的示例并考虑分步引导先识别实体再判断关系。事件抽取这通常涉及触发词、事件类型、论元参与者等。指南会非常复杂。一个可行的策略是任务分解先用一个指南/模型抽触发词和事件类型再用另一个指南/模型以事件触发词和原文为输入抽取事件论元。这降低了单次任务的复杂度。经验之谈对于复杂任务直接让模型输出一个巨大的、嵌套的结构失败率会升高。采用“分而治之”的流水线策略虽然增加了调用次数但每一步的成功率和可调试性都更高。你可以用GoLLIE实现流水线中的每一个组件。6. 常见问题、局限性与应对策略在实际使用GoLLIE的过程中你一定会遇到各种问题。下面是我总结的一些典型情况及其应对思路。6.1 模型生成内容不相关或“胡言乱语”这是最常见的问题表现为模型完全忽略指南和输入文本开始生成无关的故事、代码或重复输入。原因与排查Temperature过高这是首要怀疑对象。立即将temperature降至0.1或0.2再试。Prompt格式不符检查你的Prompt格式是否与模型训练时使用的完全一致。仔细阅读项目文档中的示例。一个多余的换行、一个缺少的冒号都可能导致模型“迷失”。上下文超长虽然模型支持长上下文但当“指南文本”过长时模型在生成时可能会“遗忘”开头的指南。尝试压缩指南文本或分割输入文本。模型本身局限性在极端模糊或矛盾的指南下任何模型都可能失效。解决策略格式化检查编写一个函数严格校验输入的Prompt格式。系统提示词尝试在指南前加上一个更强的系统指令如“你是一个专业的信息抽取助手。请严格遵循用户提供的指南只输出要求的结构化信息不要添加任何解释或额外内容。”后处理重试当检测到输出明显无关时自动触发一次重试并在新的Prompt中加入纠正指令如“你刚才的回答没有遵循指南。请重新阅读指南并严格按要求输出。”6.2 模型识别出实体但类别错误或边界不准类别错误说明指南中对类别的定义不够清晰或者存在歧义。解决方法是细化指南增加正反例特别是加入与易混淆类别对比的例子。边界不准多词或少词LLM基于子词subword工作对实体边界的感知有时不精确。例如它可能把“苹果公司CEO”整体识别为“人物”而正确的“人物”应该是“CEO”“苹果公司”是“组织”。策略在指南中明确边界规则如“请抽取最核心的名词短语不包括其修饰语”。或者在后处理阶段进行校准将模型识别出的提及回原文定位然后根据一些启发式规则如名词短语分块进行微调。6.3 对于长文档或复杂逻辑处理能力不足LLM的单次处理能力受限于上下文窗口。对于超长文档需要采用“分割-处理-合并”的策略。智能分割不要简单按固定长度分割。最好按语义边界如章节、段落分割并保留一定的重叠区域例如前后各留一两句以确保跨边界的实体或关系不被切断。分而治之对每个片段分别应用GoLLIE进行信息抽取。结果去重与融合合并所有片段的结果。对于重叠区域识别出的重复实体进行去重根据文本偏移量判断。对于关系需要检查头尾实体是否来自不同片段并进行跨片段的关联这可能更具挑战性可能需要额外的逻辑或基于实体共指的判断。6.4 与专用模型相比效果有差距这是必须面对的客观现实。GoLLIE的强项是灵活性和快速启动而不是在某个固定任务上达到SOTAState of the Art的绝对精度。适用场景任务频繁变化或定义不固定例如业务部门经常提出新的数据抽取需求。冷启动缺乏标注数据快速验证需求生成初步结果甚至可以用于辅助标注加速数据积累。对精度要求不是极端苛刻例如用于趋势分析、舆情监控的粗粒度信息抽取。不适用场景对精度、召回率要求极高的场合如医疗诊断报告抽取、法律合同关键条款提取。任务极其稳定且拥有海量高质量标注数据此时训练一个专用的BERT、RoBERTa模型效果和成本可能更优。对推理延迟和成本极其敏感的大规模生产场景。混合策略一个实用的架构是用GoLLIE作为“前端”或“标注助手”快速响应新需求并生成初稿。同时对于已经稳定、重要的任务利用GoLLIE产生的数据或经过人工校对后训练一个轻量级、高效率的专用模型如基于BERT的微调模型作为“后端”用于大规模生产。这样兼顾了灵活性和性能。7. 效果评估与持续改进闭环将GoLLIE投入实际使用必须建立评估机制否则无法知其优劣也无法改进。7.1 构建黄金测试集无论数据多匮乏至少准备一个包含50-100条样本的测试集并确保标注高质量。这个测试集应覆盖各种预期的类别。边界案例和难点案例。不同长度和风格的文本。用这个测试集定期例如每次修改指南后评估GoLLIE的表现。计算精确率Precision、召回率Recall和F1分数。由于GoLLIE输出的是结构化数据评估时需要做模糊匹配允许实体边界有少量字符的偏差例如允许偏移1-2个字符类别必须完全匹配。7.2 错误分析与指南迭代评估后最重要的步骤是错误分析。手动检查所有预测错误的案例将其分类指南不清晰导致的错误模型似乎“误解”了指南。需要修改指南的表述增加示例。模型能力局限导致的错误指南很清晰但模型就是抽不出来或抽错。这可能是因为任务本身对语义理解要求很高如讽刺、隐喻或者需要复杂的推理。对于这类错误考虑是否可以通过任务分解来简化或者接受这是当前模型的局限。输出格式错误模型理解了但输出格式乱了。检查生成参数尤其是temperature或者强化指南中对格式的要求。根据错误分析的结果迭代更新你的标注指南。这是一个循环往复的过程测试 - 分析 - 修改指南 - 再测试。通常经过2-3轮迭代效果会有明显提升。7.3 人工审核与主动学习在实际应用中可以将GoLLIE的输出作为“初稿”再由人工进行审核和修正。这比从零开始标注要快得多。更进一步可以构建一个主动学习Active Learning循环GoLLIE处理一批未标注数据。系统根据模型预测的“不确定性”例如可以通过多次采样看预测结果是否一致来近似估计或对业务的重要性筛选出一部分样本给人工标注。将新标注的样本作为Few-shot示例加入指南或者积累起来作为未来训练专用模型的数据。用更新后的指南或模型处理新数据。这个闭环能让你在节省人工成本的同时不断提升系统的自动化水平。从我自己的使用体验来看GoLLIE最大的价值在于它提供了一种全新的、以“定义”驱动的人机协作信息抽取模式。它把我们从繁重的数据标注中部分解放出来让我们能更专注于对业务逻辑的抽象和规则的定义。虽然它目前还不能完全替代高质量的标注数据和专用模型但在敏捷响应、原型验证、辅助标注等场景下它是一个威力巨大的工具。尤其是在结合了清晰的指南设计、细致的错误分析和持续的迭代优化之后它能解决的实际问题会远超你的预期。最关键的是开始动手去定义你的第一个“指南”并在实践中感受这种范式带来的变化。

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