TruthX:通过向量编辑缓解大模型幻觉的轻量级方法实践

news2026/5/3 11:55:33
1. 项目概述TruthX——在“真实空间”中编辑大模型以缓解幻觉如果你最近在折腾大语言模型尤其是尝试用它们来回答一些事实性问题比如“每天吃一个苹果有什么好处”或者“历史上哪些UFO报告后来被证实与外星人有关”那你大概率会遇到一个让人头疼的问题模型一本正经地胡说八道。这种现象在学术上被称为“幻觉”指的是模型生成的内容看似合理但与事实或逻辑不符。对于需要高可靠性的应用场景比如医疗咨询、法律分析或教育辅导幻觉是阻碍大模型落地的核心障碍之一。今天要聊的TruthX就是来自中科院计算所团队的一个非常巧妙的解决方案。它不像传统的微调那样需要海量的标注数据也不像RAG那样依赖外部知识库。TruthX的核心思想是在大模型推理时直接干预其内部表征通过一个微小的向量编辑就能引导模型走向“真实”或“幻觉”的方向。简单来说它找到了大模型内部一个关于“真实性”的“开关”拨动这个开关就能显著影响模型输出的可信度。根据论文数据在TruthfulQA基准测试上TruthX能让13个主流大模型的真实性平均提升20%。这个数字背后意味着我们可能找到了一种更轻量、更可控的方式来“调教”大模型让它变得更可靠。这篇文章我将从一个实践者的角度带你深入拆解TruthX。我会解释它背后的核心原理为什么编辑一个向量就能影响真实性手把手带你完成从环境搭建、模型下载到实际推理和评估的全过程并分享我在复现和实验过程中踩过的坑和总结的经验。无论你是想在自己的项目中集成TruthX来提升模型可靠性还是单纯对模型内部机理感兴趣相信都能从中获得启发。2. 核心原理拆解什么是“真实空间”的向量编辑要理解TruthX首先得抛开“模型是个黑箱”的固有观念。现代的大语言模型本质上是一个由数百亿参数构成的复杂函数。当我们输入一个提示词时这个提示会经过模型的每一层神经网络被逐步转化为一系列高维向量这些向量被称为“表征”或“激活值”。最终模型根据最后一层的表征预测出下一个最可能的词。TruthX的突破口就在于它假设在这些海量的内部表征中存在一个或多个与“真实性”高度相关的“方向”或“子空间”。2.1 如何定位“真实方向”TruthX的做法非常具有启发性。它不需要我们事先定义什么是“真实”而是利用了一个巧妙的对比学习思路。研究人员收集了一批问题并为每个问题准备了一对答案一个真实答案通常来自可靠来源和一个幻觉答案由另一个大模型生成或人为构造的虚假信息。然后他们将这些问题输入到目标大模型比如Llama-2-7B-Chat中并记录下模型在生成这两个不同答案时中间层的内部表征。关键的一步来了。对于同一问题下的“真实”和“幻觉”两个生成过程研究人员计算它们在模型某一层通常是靠后的若干层激活值的差值向量。这个差值向量理论上就编码了“从幻觉走向真实”所需的变化方向。通过对大量这样的问题-答案对进行统计分析例如计算这些差值向量的主成分TruthX最终提取出了一个相对稳定、通用的“真实方向”向量。这个向量就是那个可以拨动的“开关”。注意这里说的“方向”是一个高维空间中的概念。你可以把它想象成在一个复杂的调味盘里加入一点点特定的“真实香料”就能让整道菜的味道从“虚构”转向“纪实”。这个“香料”就是那个编辑向量。2.2 推理时编辑如何拨动这个开关得到“真实方向”向量后如何使用它呢TruthX采用了一种称为“推理时干预”的方法。具体流程如下前向传播至目标层当用户输入一个问题时模型正常进行前向计算直到我们预设的需要编辑的神经网络层论文中通常选择最后10层。施加向量编辑在目标层的激活值上直接加上或减去我们预先学习到的“真实方向”向量并乘以一个可调节的“编辑强度”系数。公式可以简化为编辑后激活值 原始激活值 强度系数 * 真实方向向量。继续前向传播使用编辑后的激活值继续完成剩余层的前向计算最终得到模型的输出。编辑强度的正负控制正强度如 4.5在激活值上加上“真实方向”向量相当于将模型的内部状态向“真实”一侧推动从而抑制幻觉生成更可信的回答。负强度如 -4.5在激活值上减去“真实方向”向量相当于将模型的内部状态向“幻觉”一侧推动这会“鼓励”模型编造内容生成看似流畅但完全虚构的回答。这个功能在研究模型为何产生幻觉时非常有用。这种方法的精妙之处在于它的轻量化和通用性。你不需要修改模型的任何权重参数只需要在推理时动态地修改中间激活值。这意味着同一个基础模型配合不同的编辑向量和强度可以瞬间切换成“严谨模式”或“幻想模式”。而且这个编辑向量通常很小只是一个向量存储和加载的成本极低。2.3 为什么选择最后几层进行编辑这是一个很好的技术细节问题。在Transformer架构的大模型中不同层负责不同抽象级别的信息处理。浅层可能更关注词汇和语法而深层则更多地负责语义整合、逻辑推理和最终的内容决策。TruthX选择在最后的若干层如第20层到第30层对于32层的模型进行编辑是因为这些层更直接地影响着最终的输出分布。在这里进行干预能以最小的“扰动”获得最显著的“真实性”调控效果。如果编辑太浅的层可能会过多影响基础的语言建模能力导致语句不通顺编辑太深的层如最后一层则可能为时已晚难以扭转模型已经形成的输出倾向。3. 环境准备与模型获取实战理论讲清楚了接下来我们进入实战环节。我将以最流行的Llama-2-7B-Chat模型为例展示如何搭建环境、获取模型并运行TruthX。3.1 系统环境与依赖安装TruthX的代码库对Python和PyTorch版本有明确要求这是为了避免因版本不兼容导致的各类诡异错误。我强烈建议使用conda或venv创建一个干净的虚拟环境。# 1. 创建并激活虚拟环境以conda为例 conda create -n truthx python3.10 -y conda activate truthx # 2. 克隆TruthX仓库 git clone https://github.com/ictnlp/TruthX.git cd TruthX接下来的依赖安装是关键一步。TruthX需要从源码安装特定版本的transformers和FastChat这是因为其实现修改了这些库中的模型前向传播逻辑以注入编辑操作。# 3. 安装PyTorch请根据你的CUDA版本选择以下为CUDA 11.8示例 pip install torch2.0.1 torchvision0.15.2 torchaudio2.0.2 --index-url https://download.pytorch.org/whl/cu118 # 4. 从源码安装transformers和FastChat cd transformers pip install --editable ./ cd ../FastChat pip install --editable ./实操心得--editable或-e参数意味着以“开发模式”安装。这会将包链接到源码目录而不是复制到site-packages。这样当你修改TruthX代码库中的modeling_llms目录下的文件时这些改动会立即生效无需重新安装。这对于后续的调试和自定义修改至关重要。3.2 两种模型获取方式详解TruthX提供了两种使用模式对应两种模型获取方式你需要根据需求选择。方式一直接使用“烘焙”好的模型推荐给快速体验者这是最简单的方式。团队已经将TruthX的编辑效果“烘焙”进了Llama-2-7B-Chat的权重中生成了一个名为Llama-2-7b-chat-TruthX的模型。你只需要像加载普通Hugging Face模型一样加载它它就会默认以“增强真实性”的模式运行。模型地址 ICTNLP/Llama-2-7b-chat-TruthX下载方式from transformers import AutoTokenizer, AutoModelForCausalLM model_name ICTNLP/Llama-2-7b-chat-TruthX tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForCausalLM.from_pretrained(model_name, torch_dtypetorch.float16).cuda()或者使用git-lfs命令行下载git lfs install git clone https://huggingface.co/ICTNLP/Llama-2-7b-chat-TruthX方式二使用独立的TruthX编辑模型推荐给研究者和需要灵活控制者这种方式将基础模型如原始的Llama-2-7B-Chat和TruthX编辑模型分离。你需要分别下载两者并在推理时动态加载编辑向量。这种方式更灵活可以自由调整编辑强度和层数也支持更多模型。下载基础LLM从Hugging Face下载你需要的原始模型例如meta-llama/Llama-2-7b-chat-hf。下载TruthX编辑模型从 ICTNLP/TruthX 仓库下载对应你基础模型的编辑文件。例如对于Llama-2-7b-chat-hf你需要下载truthx_model.fold1.pt和truthx_model.fold2.pt两个文件用于交叉验证提升稳定性。替换模型文件这是最关键也最容易出错的一步。为了让TruthX的编辑逻辑生效你需要用TruthX代码库中提供的修改过的模型定义文件替换掉transformers库中对应的文件。对于Llama模型你需要将TruthX/modeling_llms/modeling_llama.py复制并替换掉你环境中transformers库里的对应文件。路径可能类似于你的虚拟环境路径/lib/python3.10/site-packages/transformers/models/llama/modeling_llama.py。重要警告直接替换系统文件有风险。建议先备份原文件。更好的做法是在代码中通过trust_remote_codeTrue参数加载本地修改过的模型文件但这需要更复杂的配置。对于初次尝试替换是最直接的方法。踩坑记录我最初在替换modeling_llama.py文件后运行代码时遇到了AttributeError提示缺少某个属性。这是因为TruthX提供的修改文件是基于某个特定版本的transformers库开发的。确保你从源码安装的transformers版本与TruthX代码库兼容。如果遇到问题可以尝试回退到TruthX仓库requirements.txt中指定的transformers提交哈希版本。4. 快速上手从代码调用到可视化交互环境准备好模型下好了我们来真正让TruthX跑起来看看效果。4.1 使用Python脚本进行推理对于“烘焙”好的模型使用起来和普通模型无异。这里是一个完整的示例脚本import torch from transformers import AutoTokenizer, AutoModelForCausalLM # 1. 指定模型路径使用烘焙好的TruthX模型 model_name ICTNLP/Llama-2-7b-chat-TruthX # 或者你的本地路径 tokenizer AutoTokenizer.from_pretrained(model_name, trust_remote_codeTrue) # 使用半精度浮点数以节省显存 model AutoModelForCausalLM.from_pretrained(model_name, trust_remote_codeTrue, torch_dtypetorch.float16).cuda() # 2. 准备问题 questions [ What are the benefits of eating an apple a day?, What UFO report was later proved to involve aliens?, Who invented the telephone? ] # 3. 生成回答 for question in questions: print(f\n 问题: {question} ) # 编码输入 inputs tokenizer(question, return_tensorspt).to(model.device) # 生成设置一些生成参数以获得更好结果 with torch.no_grad(): outputs model.generate( **inputs, max_new_tokens256, # 最大生成长度 do_sampleTrue, # 使用采样否则可能是贪婪解码 temperature0.7, # 采样温度 top_p0.9 # 核采样参数 ) # 解码并打印 answer tokenizer.decode(outputs[0][inputs[input_ids].shape[1]:], skip_special_tokensTrue) print(f回答: {answer.strip()})运行这段代码你会看到模型对于“UFO与外星人”这类容易引发幻觉的问题会给出非常谨慎、基于事实的回答强调“没有科学证据”而不是像原始模型那样罗列一堆未经证实的都市传说。4.2 使用Gradio Web界面进行对比强烈推荐TruthX团队提供了一个基于FastChat的Gradio Web界面可以并排对比原始模型和TruthX增强模型的效果并且能实时调整编辑强度和层数直观感受编辑带来的变化。启动服务需要运行多个进程。请确保你有足够的GPU内存至少需要能同时加载两个7B模型约需14GB*2显存。如果显存不足可以考虑使用--load-8bit或--load-4bit参数进行量化加载但可能会影响效果。# 终端1: 启动控制器 python3 -m fastchat.serve.controller # 终端2: 启动原始Llama-2-7B-Chat的工作进程 # 将 ${path_to_Llama-2-7b-chat} 替换为你的原始模型本地路径 CUDA_VISIBLE_DEVICES0 python3 -m fastchat.serve.model_worker --model-path ${path_to_Llama-2-7b-chat} --conv-template llama-2 --controller http://localhost:21001 --port 31000 --worker http://localhost:31000 # 终端3: 启动TruthX增强版Llama-2-7B-Chat的工作进程 # 将 ${path_to_Llama-2-7b-chat-TruthX} 替换为你的TruthX模型本地路径 CUDA_VISIBLE_DEVICES1 python3 -m fastchat.serve.model_worker --model-path ${path_to_Llama-2-7b-chat-TruthX} --conv-template llama-2 --controller http://localhost:21001 --port 31001 --worker http://localhost:31001 # 终端4: 启动Web服务器 python3 -m fastchat.serve.gradio_web_server_multi执行完毕后在浏览器中打开http://localhost:7860你就能看到一个并排的聊天界面。左侧是原始模型右侧是TruthX增强模型。你可以在右侧的“Edit Config”区域调整edit_strength编辑强度和top_layers编辑层数然后输入问题实时观察两个模型的回答差异。界面操作技巧编辑强度 (edit_strength)尝试设置为4.5强真实性增强或-4.5强幻觉诱导对比效果。编辑层数 (top_layers)默认是10即编辑最后10层。你可以尝试减少到5看看效果是否减弱或者增加到15但注意可能会影响语言流畅性。多轮对话TruthX的编辑是在单轮推理中生效的。对于多轮对话每一轮的回答都会经过编辑处理。5. 在TruthfulQA基准上进行量化评估如果只是定性看看效果可能还不够。TruthX论文中的20%提升是在TruthfulQA基准上测出来的。我们也可以在自己的机器上复现这个评估过程这不仅是为了验证结果更是学习如何系统评估模型真实性的好机会。TruthfulQA评估主要分为两部分多项选择题和开放式生成题。TruthX的代码库提供了完整的评估脚本。5.1 多项选择题评估多项选择题评估模型从几个选项中选出唯一正确答案的能力。TruthfulQA-MC的评估脚本会自动下载数据集并进行测试。评估原始模型# 设置环境变量和路径 export CUDA_VISIBLE_DEVICES0 ROOT/path/to/your/TruthX # 替换为你的TruthX代码根目录 EXP_ROOT$ROOT/results MODEL_PATH/path/to/llama-2-7b-chat-hf # 替换为你的原始模型路径 python3 $ROOT/scripts/truthfulqa_mc.py \ --model-path $MODEL_PATH \ --fewshot-prompting True \ # 使用少样本提示效果更好 --output-dir $EXP_ROOT/truthfulqa_mc/llama-2-7b-chat运行后结果会保存在$EXP_ROOT/truthfulqa_mc/llama-2-7b-chat/metrics.csv中主要看acc准确率这一列。评估TruthX增强后的模型 在运行此脚本前请确保你已经完成了3.2节方式二的所有步骤下载了TruthX编辑模型.pt文件并替换了对应的modeling_*.py文件。export CUDA_VISIBLE_DEVICES0 ROOT/path/to/your/TruthX EXP_ROOT$ROOT/results MODEL_PATH/path/to/llama-2-7b-chat-hf # 指定两个fold的TruthX模型路径用于交叉验证 TRUTHX_MODEL1$ROOT/truthx_models/Llama-2-7b-chat-hf/truthx_model.fold1.pt TRUTHX_MODEL2$ROOT/truthx_models/Llama-2-7b-chat-hf/truthx_model.fold2.pt # 设置编辑参数使用论文中报告的最佳参数 STRENGTH4.5 LAYERS10 python3 $ROOT/scripts/truthfulqa_mc_truthx.py \ --model-path $MODEL_PATH \ --truthx-model $TRUTHX_MODEL1 \ --truthx-model2 $TRUTHX_MODEL2 \ --two-fold True \ # 启用双fold验证 --data-yaml $ROOT/data/truthfulqa_data_fold1.yaml \ # 指定数据划分 --edit-strength $STRENGTH \ --top-layers $LAYERS \ --fewshot-prompting True \ --output-dir $EXP_ROOT/truthfulqa_mc_truthx/llama-2-7b-chat.truthx同样结果在对应的metrics.csv中。对比两次运行的准确率你就能看到TruthX带来的提升。5.2 开放式生成题评估开放式生成题要求模型自由生成答案然后使用GPT-4等更强大的模型作为评判员根据事实性、信息量等维度对生成答案进行评分。这个过程计算量更大也更耗时。生成原始模型的答案python3 $ROOT/scripts/truthfulqa_generation.py \ --model-path $MODEL_PATH \ --fewshot-prompting True \ --output-file $EXP_ROOT/truthfulqa_generation/llama-2-7b-chat-hf.jsonl生成TruthX增强模型的答案python3 $ROOT/scripts/truthfulqa_generation_truthx.py \ --model-path $MODEL_PATH \ --truthx-model $TRUTHX_MODEL1 \ --truthx-model2 $TRUTHX_MODEL2 \ --two-fold True \ --data-yaml $ROOT/data/truthfulqa_data_fold1.yaml \ --edit-strength 1.0 \ # 注意生成任务的最佳强度可能与MC任务不同 --top-layers $LAYERS \ --fewshot-prompting True \ --output-file $EXP_ROOT/truthfulqa_generation_truthx/llama-2-7b-chat-hf.truthx.jsonl生成的结果是JSONL格式每一行包含问题、模型生成的答案等信息。要得到最终的评分需要运行额外的评估脚本通常使用OpenAI API调用GPT-4进行评判这部分代码可能在TruthX仓库的eval目录下或者需要参考TruthfulQA官方仓库。由于涉及API调用和费用这里不展开但思路是清晰的将生成的答案和标准答案或参考信息一起提交给评判模型打分。评估经验在自己的机器上跑TruthfulQA评估尤其是生成任务非常耗时。建议先从MC任务开始它能快速验证TruthX是否在你的环境上正常工作。MC任务的提升通常是最明显的。生成任务的评估则更适合在有了初步阳性结果后进行更全面的衡量。6. 深入探索自定义与高级用法当你成功运行了TruthX的基本流程后可能会想更进一步这个“真实方向”向量是怎么训练出来的我能用自己的数据训练一个针对特定领域比如医疗、法律的TruthX吗或者我能编辑其他属性比如“创造性”、“安全性”吗6.1 理解TruthX的训练流程虽然TruthX的代码库主要提供了预训练模型和推理脚本但我们可以从其论文中窥见训练“真实方向”向量的核心步骤数据准备需要构建一个对比数据集D {(q, a_true, a_false)}其中对于每个问题q都有一个真实答案a_true和一个幻觉答案a_false。激活值收集将问题q输入目标模型并让模型分别以a_true和a_false作为目标进行生成或使用教师强制的方式同时收集模型中间层通常是所有层在生成每个token时的激活值。差分向量计算对于每一对(a_true, a_false)在相同的网络层和token位置计算激活值的差值delta activation_true - activation_false。方向聚合收集所有数据对在所有层和位置产生的delta向量。然后通过主成分分析等方法从这些高维差分向量中提取出一个或多个最主要的“方向”。论文中发现第一个主成分就包含了最强的“真实性”信号。模型保存将这个提取出的主成分向量即“真实方向”向量保存下来供推理时使用。理论上如果你能为自己关心的领域例如“生物医学事实”构建高质量的对比数据集你就可以遵循类似的流程训练出一个专属的“生物医学真实性”编辑向量。6.2 尝试编辑其他属性TruthX的方法具有普适性。其核心思想是通过对比“拥有某属性”和“缺乏某属性”的文本对在模型激活值中寻找该属性对应的方向。例如如果你想增强模型的“创造性”数据收集问题-答案对其中“高创造性”答案和“低创造性”答案。训练用同样的方法计算激活值差分寻找“创造性方向”。推理在需要创造性写作时施加正向的“创造性”编辑。同理可以应用于“安全性”安全 vs 不安全回答、“正式性”正式 vs 口语化、“简洁性”等属性。这为可控文本生成打开了一扇新的大门。6.3 参数调优与效果权衡在使用TruthX时有两个关键参数需要调节编辑强度强度越大对模型输出的影响越强但过大的强度可能会损害语言的基本流畅性和连贯性。需要在“真实性增益”和“语言质量损失”之间取得平衡。论文中对于Llama-2-7B-Chat在MC任务上4.5是最佳值。编辑层数决定在哪些层进行干预。编辑更多层通常效果更强但计算开销和干扰也更大。通常集中在最后几层效果最好。我的调参建议从一个中等强度如2.0和默认层数10层开始。准备一个小型测试集包含容易产生幻觉的问题和一些需要常识推理的问题。逐步增加强度观察幻觉是否减少同时检查回答是否变得过于保守、重复或不通顺。可以尝试固定强度调整编辑层数例如5, 10, 15找到效果和效率的最佳结合点。最重要的评估是人工检查。自动化指标如TruthfulQA分数是参考但最终要看生成的内容在具体应用场景下是否真的更可靠、更可用。7. 常见问题与故障排查实录在复现和使用TruthX的过程中我遇到了不少问题。这里把一些典型问题和解决方案记录下来希望能帮你节省时间。Q1: 运行评估脚本时出现ModuleNotFoundError: No module named fastchat或类似错误。A1:这几乎总是因为环境安装问题。请务必确保在TruthX代码根目录下执行了cd transformers pip install -e .和cd FastChat pip install -e .。你当前激活的Python环境就是安装这些包的环境。如果问题依旧尝试在代码开头或命令行中通过PYTHONPATH环境变量显式添加TruthX的根目录路径。Q2: 加载TruthX编辑模型时报错提示张量形状不匹配或版本不兼容。A2:这通常是因为TruthX编辑模型.pt文件是用特定版本的PyTorch和模型权重保存的与当前环境不匹配。确保你下载的TruthX模型与你的基础模型完全对应。例如Llama-2-7b-chat-hf的编辑模型不能用于Llama-2-7b。尝试使用与TruthX仓库推荐版本一致的PyTorch。查看仓库的requirements.txt或setup.py文件。如果使用的是“烘焙”模型则不存在此问题。Q3: 使用Gradio Web界面时模型加载失败提示GPU内存不足。A3:同时加载两个7B模型FP16精度需要约14GB*2的显存。方案一推荐使用量化。在启动model_worker时添加参数--load-8bit8位量化或--load-4bit4位量化需安装bitsandbytes库。例如python3 -m fastchat.serve.model_worker --model-path /path/to/model --load-8bit ...。方案二只加载一个模型进行对比。修改gradio_web_server_multi.py或只启动一个worker单独测试TruthX模型的效果。方案三使用CPU加载极慢。添加--device cpu参数但推理速度会非常慢。Q4: 替换modeling_llama.py文件后运行其他不相关的代码也出错了。A4:这是因为你修改了全局的transformers库。这是使用TruthX独立编辑模型模式的最大不便。临时方案在需要运行TruthX时使用一个独立的环境。在这个环境中替换文件。运行其他项目时切换回干净的环境。长期方案考虑修改代码不直接替换文件而是通过继承和重写的方式在本地代码中定义支持TruthX编辑的模型类然后通过trust_remote_code或自定义加载方式使用。这需要更强的工程能力但更干净。Q5: TruthX对模型推理速度的影响有多大A5:TruthX在推理时只增加了简单的向量加法操作计算开销几乎可以忽略不计。因此推理速度的下降微乎其微主要瓶颈仍然是基础模型本身的前向传播。这与需要额外检索的RAG方法或需要运行多个模型进行校验的方法相比在效率上有巨大优势。Q6: TruthX能否完全消除大模型的幻觉A6: 不能也不应该抱有这个期望。TruthX是一种有效的缓解手段能将模型的真实性倾向显著地向积极方向调整。但它并非万能它依赖于训练“真实方向”时所用数据的质量和广度。如果问题超出了训练数据的范畴效果可能打折扣。它可能会让模型在某些问题上变得过于保守回答“我不知道”或给出非常笼统、信息量少的答案。它无法修正模型底层知识中存在的错误。如果模型权重本身记住了错误信息TruthX可能无力纠正。TruthX的价值在于它为我们提供了一把精细调节的“螺丝刀”而不是一把解决所有问题的“锤子”。在追求可靠性的应用道路上它应该与提示词工程、RAG、结果验证等多种技术结合使用。

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