AI应用架构实战:上下文工程的数据预处理

AI应用架构实战:上下文工程的数据预处理——让模型“听懂”你的每一句话

关键词

上下文工程 | 数据预处理 | AI应用架构 | 对话系统 | 向量数据库 | 上下文窗口 | 语义分割

摘要

在AI应用(如对话系统、知识库问答、个性化推荐)中,上下文是模型理解用户意图的“记忆库”。然而,原始上下文数据(如对话历史、文档、用户行为)往往杂乱无章,直接输入模型会导致“信息过载”“意图误解”等问题。本文以上下文工程的数据预处理为核心,结合实战案例,一步步拆解“如何将 raw 数据转化为模型能有效利用的上下文”。你将学到:

  • 上下文工程的核心逻辑与数据预处理的作用;
  • 数据清洗、分割、增强、结构化的具体实现;
  • 如何解决“上下文过载”“无关信息干扰”等常见问题;
  • 未来上下文工程的发展趋势。
    无论你是AI应用开发者还是产品经理,本文都能帮你构建更智能、更贴合用户需求的AI系统。

一、背景介绍:为什么上下文工程是AI应用的“灵魂”?

1.1 从“断句”到“懂你”:AI的上下文依赖

想象一下,你和朋友聊天时说:“这个电影太烂了,结局居然是这样!”如果朋友不知道你说的是哪部电影(没有上下文),他只能回复:“什么电影?”——这和当前AI模型的处境一模一样。

大语言模型(LLM)如GPT-4、Claude 3虽然具备强大的生成能力,但本质上是“无状态”的:它们无法记住之前的对话,每一次输入都是独立的。因此,上下文工程的目标就是“给模型装一个记忆库”,让它能根据历史信息理解当前意图。

比如,在客服系统中,用户问:“我的订单怎么还没到?”如果没有之前的对话上下文(如订单号、下单时间),模型无法给出准确回答;而有了上下文,模型能直接回复:“您的订单(编号:12345)已发出,预计明天到达。”

1.2 数据预处理:上下文工程的“地基”

上下文工程的流程可分为三步:数据预处理→上下文构建→上下文管理(见图1)。其中,数据预处理是最基础也最关键的一步——它决定了后续上下文的质量。

原始上下文数据(如对话记录、知识库文档)通常存在以下问题:

  • 噪音多:包含表情、语气词、格式错误(如HTML标签);
  • 长度超标:超过模型的上下文窗口(如GPT-3.5-turbo的4k tokens限制);
  • 语义零散:多轮对话或长文档的信息碎片化;
  • 缺乏结构:无明确的角色(用户/助手)、时间戳等元数据。

如果不处理这些问题,直接将原始数据输入模型,会导致:

  • 模型输出错误:因噪音信息误解意图;
  • 上下文过载:模型无法处理过长的输入;
  • 信息丢失:关键信息被分割到不同的chunk中。

1.3 目标读者与核心挑战

本文的目标读者是AI应用开发者(如对话系统工程师、知识库问答产品经理),以及想提升AI系统智能度的技术人员

你可能遇到的核心挑战:

  • 如何将长文档分割成符合上下文窗口的“有效chunk”?
  • 如何保留对话历史中的关键信息,同时避免过载?
  • 如何让模型“看懂”上下文的结构(如角色、时间顺序)?

接下来,我们将一步步解决这些问题。

二、核心概念解析:用“备忘录”比喻上下文工程

为了让复杂概念更易理解,我们用**“给模型写备忘录”**来比喻上下文工程:

概念比喻作用
上下文工程给模型准备一本“精准备忘录”让模型记住关键信息,理解用户意图
上下文窗口备忘录的“页数限制”模型能处理的最大输入长度(tokens)
数据预处理整理备忘录的“内容”去掉无关信息,突出重点,结构化内容
上下文构建选择“备忘录的内容”从预处理后的数据中选取相关信息
上下文管理更新“备忘录”动态添加/删除上下文,保持时效性

2.1 上下文窗口:模型的“记忆容量”

上下文窗口(Context Window)是模型能处理的最大输入长度(以tokens为单位)。比如:

  • GPT-3.5-turbo:4k/16k tokens;
  • GPT-4:8k/32k/128k tokens;
  • Claude 3 Opus:200k tokens。

关键结论:数据预处理的核心目标是“将上下文数据压缩到模型的上下文窗口内,同时保留关键信息”。

2.2 数据预处理的四大任务

数据预处理的目标是将原始数据转化为“干净、紧凑、结构化、有语义”的上下文数据。具体包括四大任务(见图2):

原始数据

数据清洗(去噪音、去重复)

数据分割(按token/语义分割)

数据增强(加元数据、语义标注)

上下文结构化(JSON/表格)

输入模型上下文窗口

三、技术原理与实现:一步步做数据预处理

3.1 第一步:数据清洗——去掉“备忘录”中的乱涂乱画

数据清洗的目标是去除无关信息,保留核心内容。常见的噪音包括:

  • 格式噪音:HTML标签、Markdown格式(如#、*)、换行符;
  • 内容噪音:表情(如😊)、语气词(如“哦”“嗯”)、重复内容(如用户重复提问);
  • 敏感信息:用户手机号、身份证号(需脱敏)。
3.1.1 实现方法(Python)

用正则表达式(re模块)和字符串处理函数去除噪音:

importredefclean_text(text):# 去除HTML标签text=re.sub(r'<[^>]+>','',text)# 去除表情(用Unicode范围匹配)text=re.sub(r'[\U0001F600-\U0001F64F]','',text)# 去除重复的换行符和空格text=re.sub(r'\n+','\n',text)text=re.sub(r'\s+',' ',text).strip()# 脱敏处理(替换手机号)text=re.sub(r'1[3-9]\d{9}','[手机号]',text)returntext# 测试示例raw_text=""" < p > 你好😊,我的手机号是13812345678,请问我的订单(编号:12345)怎么还没到?< /p > 哦,对了,我昨天已经问过一次了,还是没收到。 """cleaned_text=clean_text(raw_text)print(cleaned_text)# 输出:你好,我的手机号是[手机号],请问我的订单(编号:12345)怎么还没到?哦,对了,我昨天已经问过一次了,还是没收到。

3.2 第二步:数据分割——把“长备忘录”分成“可阅读的页”

数据分割是数据预处理中最核心的步骤,其目标是将长文本(如对话历史、知识库文档)分割成符合上下文窗口的“chunk”(块),同时保留语义的连贯性。

3.2.1 核心原理:语义分割 vs 固定长度分割
  • 固定长度分割:按固定的tokens数分割(如每200 tokens一个chunk)。优点是简单,缺点是可能分割到句子中间,破坏语义。
  • 语义分割:按句子、段落、章节等语义边界分割。优点是保留语义连贯性,缺点是实现复杂。

最佳实践:使用递归字符分割法(Recursive Character Splitting),优先按语义边界(如换行符、句号)分割,若分割后的chunk仍超过长度限制,则继续按更小的边界分割(如逗号、空格)。

3.2.2 实现方法(LangChain)

LangChain是一个流行的AI应用开发框架,提供了强大的文本分割工具。以下是用RecursiveCharacterTextSplitter分割文档的示例:

fromlangchain.text_splitterimportRecursiveCharacterTextSplitter# 原始知识库文档(智能保温杯产品手册)raw_doc=""" 智能保温杯产品手册 1. 产品参数 - 材质:304不锈钢 - 容量:500ml - 保温时间:12小时(热水)/24小时(冷水) - 功能:蓝牙连接、水温显示、超温提醒 2. 使用说明 - 首次使用前,请用温水清洗杯身。 - 装水时不要超过杯口的2/3,以免漏水。 - 蓝牙连接:打开手机蓝牙,搜索“Smart Cup”,配对成功后即可查看水温。 3. 常见问题 Q:为什么保温效果不好? A:可能原因:1)杯盖未拧紧;2)装水温度过低;3)杯身有划痕。 Q:电池寿命是多久? A:内置锂电池,充满电后可使用6个月。 """# 初始化分割器text_splitter=RecursiveCharacterTextSplitter(chunk_size=200,# 每个chunk的最大字符数(近似tokens数)chunk_overlap=30,# 相邻chunk的重叠字符数(避免信息丢失)length_function=len,# 计算长度的函数(用字符数近似tokens数)separators=["\n\n","\n","。",","]# 分割符优先级:先按段落分割,再按句子分割)# 分割文档chunks=text_splitter.split_text(raw_doc)# 打印结果fori,chunkinenumerate(chunks):print(f"Chunk{i+1}(字符数:{len(chunk)}):\n{chunk}\n")
3.2.3 输出结果分析

分割后的chunk保留了语义的连贯性,且重叠部分(30字符)避免了信息丢失:

Chunk 1(字符数:180): 智能保温杯产品手册 1. 产品参数 - 材质:304不锈钢 - 容量:500ml - 保温时间:12小时(热水)/24小时(冷水) - 功能:蓝牙连接、水温显示、超温提醒 Chunk 2(字符数:190): - 功能:蓝牙连接、水温显示、超温提醒 2. 使用说明 - 首次使用前,请用温水清洗杯身。 - 装水时不要超过杯口的2/3,以免漏水。 - 蓝牙连接:打开手机蓝牙,搜索“Smart Cup”,配对成功后即可查看水温。 Chunk 3(字符数:170): - 蓝牙连接:打开手机蓝牙,搜索“Smart Cup”,配对成功后即可查看水温。 3. 常见问题 Q:为什么保温效果不好? A:可能原因:1)杯盖未拧紧;2)装水温度过低;3)杯身有划痕。 Chunk 4(字符数:100): Q:电池寿命是多久? A:内置锂电池,充满电后可使用6个月。
3.2.4 数学模型:如何计算最佳chunk大小?

chunk大小的选择需平衡“信息完整性”和“上下文窗口限制”。假设模型的上下文窗口为C(tokens),预留R(tokens)给模型输出(如1000 tokens),则每个chunk的最大大小为:

chunk size = min ⁡ ( target size , C − R ) \text{chunk size} = \min(\text{target size}, C - R)chunk size=min(target size,CR)

其中,target size是你期望的chunk大小(如200 tokens)。

示例:若模型上下文窗口为4096 tokens,预留1000 tokens给输出,则chunk的最大大小为4096-1000=3096tokens。若你的target size是200 tokens,则chunk大小为200 tokens。

3.3 第三步:数据增强——给“备忘录”加“标签”

数据增强的目标是给chunk添加元数据(Metadata),让模型能更好地理解上下文的背景。常见的元数据包括:

  • 来源信息:文档类型(产品手册/FAQ/用户评论)、产品ID、用户ID;
  • 时间信息:创建时间、更新时间、对话时间戳;
  • 语义信息:关键词、分类标签(如“保温问题”“蓝牙问题”)。
3.3.1 实现方法(LangChain)

用LangChain的Document类给chunk添加元数据:

fromlangchain.schemaimportDocument# 给每个chunk添加元数据documents=[Document(page_content=chunk,metadata={"doc_type":"product_manual",# 文档类型"product_id":"SC-123",# 产品ID"section":"参数/使用说明/常见问题",# 章节"chunk_number":i+1# chunk编号})fori,chunkinenumerate(chunks)]# 打印元数据fordocindocuments:print(f"Chunk{doc.metadata['chunk_number']}元数据:{doc.metadata}")print(f"内容:{doc.page_content}\n")
3.3.2 输出结果分析

每个chunk都有了明确的元数据,模型在处理时可以根据这些元数据筛选相关信息(如用户问“保温问题”时,优先选择section为“常见问题”的chunk):

Chunk 1 元数据:{'doc_type': 'product_manual', 'product_id': 'SC-123', 'section': '参数/使用说明/常见问题', 'chunk_number': 1} 内容:智能保温杯产品手册 1. 产品参数 - 材质:304不锈钢 - 容量:500ml - 保温时间:12小时(热水)/24小时(冷水) - 功能:蓝牙连接、水温显示、超温提醒

3.4 第四步:上下文结构化——把“备忘录”整理成“表格”

上下文结构化的目标是将非结构化的文本转化为结构化格式(如JSON、表格),让模型能快速识别关键信息(如角色、时间顺序)。

3.4.1 常见的结构化格式
  • 对话历史:用JSON数组表示,每个元素包含role(用户/助手)、content(内容)、timestamp(时间戳);
  • 知识库chunk:用JSON对象表示,包含page_content(内容)、metadata(元数据);
  • 用户行为:用表格表示,包含action(行为)、timestamp(时间戳)、item_id(物品ID)。
3.4.2 实现方法(对话历史结构化)

以下是将多轮对话转化为结构化JSON的示例:

importjsonfromdatetimeimportdatetime# 原始对话历史(用户与客服)raw_dialogue=[("user","我昨天买的智能保温杯,今天早上装热水,下午就凉了,怎么回事?"),("assistant","请问您装的热水温度是多少?我们的杯子保温时间是12小时,但如果水温本来就不高,可能保温效果会打折扣。"),("user","我装的是刚烧开的水,大概100℃。"),("assistant","那可能是杯子的密封有问题,您可以检查一下杯盖有没有拧紧。"),("user","我检查了,杯盖是拧紧的,还有别的原因吗?")]# 结构化对话历史structured_dialogue=[]forrole,contentinraw_dialogue:structured_dialogue.append({"role":role,"content":clean_text(content),# 用之前的clean_text函数清洗内容"timestamp":datetime.now().strftime("%Y-%m-%d %H:%M:%S")# 模拟时间戳})# 保存为JSON文件withopen("dialogue.json","w",encoding="utf-8")asf:json.dump(structured_dialogue,f,ensure_ascii=False,indent=4)
3.4.3 输出结果分析

结构化后的对话历史清晰易懂,模型能快速识别角色和时间顺序:

[{"role":"user","content":"我昨天买的智能保温杯,今天早上装热水,下午就凉了,怎么回事?","timestamp":"2024-05-01 15:00:00"},{"role":"assistant","content":"请问您装的热水温度是多少?我们的杯子保温时间是12小时,但如果水温本来就不高,可能保温效果会打折扣。","timestamp":"2024-05-01 15:01:00"},{"role":"user","content":"我装的是刚烧开的水,大概100℃。","timestamp":"2024-05-01 15:02:00"},{"role":"assistant","content":"那可能是杯子的密封有问题,您可以检查一下杯盖有没有拧紧。","timestamp":"2024-05-01 15:03:00"},{"role":"user","content":"我检查了,杯盖是拧紧的,还有别的原因吗?","timestamp":"2024-05-01 15:04:00"}]

四、实际应用:知识库问答系统的上下文预处理实战

4.1 项目背景

假设你要开发一个智能保温杯知识库问答系统,用户可以通过文字提问(如“我的杯子保温效果不好怎么办?”),系统需从产品手册、FAQ、用户评论中提取相关信息,生成准确回答。

4.2 实现步骤

4.2.1 数据收集

收集以下数据:

  • 产品手册:PDF格式,包含产品参数、使用说明、常见问题;
  • FAQ:Excel表格,包含用户常见问题及回答;
  • 用户评论:从电商平台爬取的用户评价(如“保温效果不错,但蓝牙连接有点慢”)。
4.2.2 数据预处理流程
  1. 数据清洗:去除PDF中的格式错误(如页码、页眉)、Excel中的重复行、用户评论中的表情和敏感信息;
  2. 数据分割:用RecursiveCharacterTextSplitter将产品手册分割成chunk(每个chunk 200 tokens,重叠30 tokens),将FAQ分割成“问题-回答”对,将用户评论分割成单条评论;
  3. 数据增强:给每个chunk添加元数据(如doc_type:product_manual/faq/user_review,product_id:SC-123);
  4. 上下文结构化:将产品手册chunk转化为Document对象,将FAQ转化为QuestionAnswer对象,将用户评论转化为Review对象。
4.2.3 上下文构建(向量数据库检索)

预处理后的chunk需要存储到向量数据库(如Pinecone、Chroma)中,以便快速检索相关信息。步骤如下:

  1. 嵌入(Embedding):用OpenAI的text-embedding-3-small模型将每个chunk转化为向量;
  2. 存储:将向量和元数据存储到Pinecone中;
  3. 检索:当用户提问时,将问题转化为向量,从Pinecone中检索最相关的top-k个chunk(如k=3);
  4. 整合:将检索到的chunk整合到模型的上下文窗口中。
4.2.4 代码示例(Pinecone检索)
importpineconefromlangchain.embeddingsimportOpenAIEmbeddingsfromlangchain.vectorstoresimportPinecone# 初始化Pineconepinecone.init(api_key="your-api-key",environment="your-environment")index_name="smart-cup-knowledge-base"# 初始化嵌入模型embeddings=OpenAIEmbeddings(model="text-embedding-3-small")# 将documents存储到Pinecone(仅需执行一次)vector_store=Pinecone.from_documents(documents,embeddings,index_name=index_name)# 检索示例(用户提问:“我的杯子保温效果不好怎么办?”)query="我的杯子保温效果不好怎么办?"retrieved_docs=vector_store.similarity_search(query,k=3)# 打印检索结果print("检索到的相关chunk:")fori,docinenumerate(retrieved_docs):print(f"Chunk{i+1}(相似度:{doc.metadata.get('score','N/A')}):")print(f"内容:{doc.page_content}")print(f"元数据:{doc.metadata}\n")
4.2.5 输出结果分析

检索到的chunk均与“保温效果不好”相关,且包含元数据(如section:常见问题),模型可以根据这些信息生成准确回答:

检索到的相关chunk: Chunk 1(相似度:0.89): 内容:Q:为什么保温效果不好?A:可能原因:1)杯盖未拧紧;2)装水温度过低;3)杯身有划痕。 元数据:{'doc_type': 'faq', 'product_id': 'SC-123', 'section': '常见问题', 'chunk_number': 3} Chunk 2(相似度:0.85): 内容:- 保温时间:12小时(热水)/24小时(冷水)- 功能:蓝牙连接、水温显示、超温提醒 元数据:{'doc_type': 'product_manual', 'product_id': 'SC-123', 'section': '参数/使用说明/常见问题', 'chunk_number': 1} Chunk 3(相似度:0.82): 内容:用户评论:这个杯子的保温效果不错,早上装的热水,晚上还是温的。就是蓝牙连接有时候有点慢。 元数据:{'doc_type': 'user_review', 'product_id': 'SC-123', 'chunk_number': 5}

4.3 常见问题及解决方案

4.3.1 问题1:上下文过载(超过模型窗口)

现象:检索到的chunk太多,总长度超过模型的上下文窗口。
解决方案

  • 摘要压缩:用模型总结检索到的chunk(如“用户的问题是保温效果不好,可能的原因是杯盖未拧紧、装水温度过低或杯身有划痕”);
  • 优先级排序:根据元数据(如doc_type:faq优先级高于user_review)筛选top-1 chunk。
4.3.2 问题2:上下文无关(检索到不相关的chunk)

现象:检索到的chunk与用户问题无关(如用户问“保温效果”,检索到“蓝牙连接”的chunk)。
解决方案

  • 混合检索:结合关键词检索(如“保温”)和向量检索,过滤掉不相关的chunk;
  • 优化嵌入模型:使用更适合中文的嵌入模型(如阿里云的text2vec)。
4.3.3 问题3:上下文顺序错误(对话历史混乱)

现象:对话历史的顺序乱了,模型误解用户意图(如用户先问“保温效果”,再问“蓝牙连接”,模型却用“保温效果”的上下文回答“蓝牙连接”的问题)。
解决方案

  • 保留时间戳:按时间戳排序对话历史;
  • 动态上下文管理:当用户提问新问题时,自动移除之前不相关的对话历史。

五、未来展望:上下文工程的发展趋势

5.1 动态上下文管理:让“备忘录”自动更新

当前的上下文管理多为“静态”(如固定检索top-k chunk),未来会向“动态”发展:

  • 意图预测:根据用户的提问意图,自动添加/删除上下文(如用户问“蓝牙连接”,自动移除之前“保温效果”的上下文);
  • 上下文摘要:用模型实时总结对话历史,保留关键信息(如“用户之前问过保温效果,现在问蓝牙连接”)。

5.2 多模态上下文:让“备忘录”更丰富

当前的上下文多为文本,未来会结合图像、语音、视频等多模态数据:

  • 图像上下文:用户发送杯子的照片,模型分析杯盖是否拧紧;
  • 语音上下文:用户用语音提问,模型识别语气(如生气、疑惑),调整回答方式;
  • 视频上下文:用户发送使用杯子的视频,模型分析使用方法是否正确。

5.3 上下文压缩技术:让“备忘录”更紧凑

随着模型上下文窗口的增大(如GPT-4的128k tokens),上下文压缩技术将成为关键:

  • 稀疏注意力机制:让模型只关注上下文的关键部分(如“保温效果”的chunk);
  • 自动编码器:用更高效的编码方式压缩上下文数据(如将1000 tokens压缩到500 tokens);
  • 知识蒸馏:用大模型总结上下文,生成更紧凑的小模型输入。

六、总结与思考

6.1 总结要点

  • 上下文工程是AI应用的“灵魂”,数据预处理是其“地基”;
  • 数据预处理的四大任务:清洗(去噪音)、分割(分chunk)、增强(加元数据)、结构化(转格式);
  • 实战技巧:用LangChain做文本分割,用Pinecone做向量检索,用JSON做上下文结构化;
  • 常见问题:上下文过载(摘要压缩)、上下文无关(混合检索)、顺序错误(时间戳排序)。

6.2 思考问题(鼓励探索)

  1. 如何平衡上下文的“完整性”和“模型处理能力”?
  2. 多模态上下文(图像+文本)的数据预处理该怎么做?
  3. 动态上下文管理的实现难点是什么?

6.3 参考资源

  • LangChain文档:https://python.langchain.com/
  • Pinecone博客:https://www.pinecone.io/blog/
  • OpenAI上下文最佳实践:https://platform.openai.com/docs/guides/context
  • 书籍:《构建AI驱动的应用》(Building AI-Powered Applications)

结尾

上下文工程的数据预处理是AI应用从“能用”到“好用”的关键一步。通过本文的实战案例,你应该掌握了如何将 raw 数据转化为模型能有效利用的上下文。未来,随着AI技术的发展,上下文工程将变得更智能、更动态,让模型真正“听懂”用户的每一句话。

如果你有任何问题或想法,欢迎在评论区留言,我们一起探讨!

作者:AI技术专家与教育者
日期:2024年5月1日
版权:本文为原创内容,转载请注明出处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1125655.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI大模型产品经理6个月速成路线图:4大学习阶段+12个实战项目+30+学习资源,薪资涨幅超60%!

文章详解了AI大模型产品经理这一黄金岗位的培养路径&#xff0c;提供6个月速成路线图&#xff0c;分4大阶段掌握核心能力。数据显示该岗位平均月薪38K&#xff0c;大模型方向溢价45%&#xff0c;2025年缺口达72万。文章包含12个实战项目、30学习资源&#xff0c;同时提供避坑指…

自然语言处理(NLP)核心知识体系

自然语言处理&#xff08;NLP&#xff09;核心知识体系 自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;是人工智能&#xff08;AI&#xff09;的重要分支&#xff0c;专注于实现计算机与人类自然语言之间的有效交互&#xff0c;让计算机能够…

[原创]基于VMD-SE-LSTM+Transformer多变量时序预测 Matlab代码

目录 1、代码简介 2、代码运行结果展示 3、代码获取 1、代码简介 [原创]基于变分模态分解结合样本熵结合长短期记忆神经网络Transformer(VMD-SE-LSTMTransformer)多变量时序预测 Matlab代码 采用VMD-SE对输出列进行分解&#xff0c;通过样本熵将个分量划分为高频分量和低频…

当RGB技术遇到高端视听:东芝电视在2026 CES展现对“感官真实”的极致追求

2026年1月6日至9日&#xff0c;全球消费电子行业的年度盛会——CES 2026国际消费电子展在美国拉斯维加斯正式启幕。作为深耕视听领域的领导品牌&#xff0c;东芝电视也亮相本次科技盛会&#xff0c;为来自全球各地的观展人士们精彩地展示了RGB显示技术、自研ZRα光色同控芯、AI…

Matlab 基于蜣螂算法优化高斯过程回归(DBO-GPR)的数据多变量回归预测+交叉验证 (多输入单输出)

目录 1、代码简介 2、代码运行结果展示 3、代码获取 1、代码简介 Matlab 基于蜣螂算法优化高斯过程回归(DBO-GPR)的数据多变量回归预测交叉验证 (多输入单输出) 默认5折&#xff0c;折数可调&#xff01;采用交叉验证一定程度上抑制了过拟合的发生&#xff01; 1.程序已经…

Activiti工作流模型部署全解析(附实战代码)

从0到1&#xff1a;Activiti工作流模型部署全解析&#xff08;附实战代码&#xff09; 在企业级应用开发中&#xff0c;工作流引擎是实现业务流程自动化的核心组件&#xff0c;而Activiti作为开源工作流领域的标杆框架&#xff0c;其模型部署机制直接决定了流程从设计到落地的效…

查询指定任务的办理时间轴

一、接口核心需求分析 你提供的这段代码是Activiti工作流中查询指定任务的办理时间轴接口&#xff0c;核心业务需求如下&#xff1a; 关联查询&#xff1a;根据传入的任务ID&#xff08;taskId&#xff09;&#xff0c;先获取对应的流程实例ID&#xff08;processInstanceId&am…

Matlab 基于蚁群算法优化高斯过程回归(ACO-GPR)的数据多变量回归预测+交叉验证 (多输入单输出)

目录 1、代码简介 2、代码运行结果展示 3、代码获取 1、代码简介 Matlab 基于蚁群算法优化高斯过程回归(ACO-GPR)的数据多变量回归预测交叉验证 (多输入单输出) 默认5折&#xff0c;折数可调&#xff01;采用交叉验证一定程度上抑制了过拟合的发生&#xff01; 1.程序已经…

通过`exclude`排除冲突的Security自动配置类,解决Activiti与若依权限体系的兼容性问题;

你提供的这段代码是若依&#xff08;RuoYi&#xff09;框架集成Activiti后的启动类核心配置&#xff0c;我会先解析这段配置的核心作用&#xff0c;再说明关键细节和扩展优化方向。 一、代码核心需求与作用解析 你编写的RuoYiApplication启动类通过SpringBootApplication的excl…

MYSQL 创建索引

目录 自动索引 手动创建 主键索引 唯一索引 普通索引 创建复合索引 查看索引 删除主键 自动索引 如果我们为一张表添加主键约束、外键约束、唯一约束时&#xff0c;MYSQL会为对应的列自动创建一个索引。如果不指定任何约束时&#xff0c;MYSQL会自动为每一列生成一个索…

Thinkphp和Laravel框架的流浪猫领养系统_ct8whxh8

目录 ThinkPHP与Laravel框架的流浪猫领养系统对比分析系统架构与开发效率功能模块设计数据库与性能优化安全性与社区支持部署与维护 项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理 ThinkPHP与Laravel框架的流浪猫领养系统对比分析 系统架构与开…

MySql 8.0安装教程(windows系统),全网最详细的教程

目录 前言安装步骤安装包下载 前言 MySQL数据库服务是一个完全托管的数据库服务&#xff0c;是目前比较流行的开源数据库来部署云原生应用程序&#xff0c;不管在企业开发&#xff0c;个人开发&#xff0c;学校做项目都是必备的一款工具&#xff0c;并且MySQL是开源的&#…

Tailwind CSS:告别传统CSS,拥抱原子化开发新时代

想象一下&#xff0c;你在开发一个项目时&#xff0c;不再需要为CSS命名而烦恼&#xff0c;不再需要频繁在HTML和CSS文件间切换&#xff0c;更不必担心样式冲突和重复代码——这一切都源于一个名为Tailwind CSS的工具类优先框架。 Tailwind CSS的核心理念是“功能类优先”&…

RK3576基于UVC协议USB摄像头配置指南,手把手教你搞定

瑞芯微RK3576芯片平台基于UVC协议&#xff0c;配置USB摄像头实现即插即用的适配采集功能。演示设备&#xff1a;触觉智能RK3576开发板Purple Pi OH2系统固件为&#xff1a;Buildroot2024其配套RK3576核心板&#xff0c;尺寸40.540.5mm&#xff0c;邮票孔封装&#xff0c;支持LP…

性能指标笔记

网络指标 TTFB Time to First Byte 衡量请求资源到响应第一个字节开始到达之间的时间&#xff0c;结合 网络 面吧的资源请求耗时&#xff0c;可以判断主要延迟在哪一层。 关于 Network 网络面板&#xff1a; Queued at&#xff1a;表示请求何时入队&#xff0c;如果是 HTTP/1…

Thinkphp和Laravel框架的海关出入口货物报关统筹管理系统_szdhjj06

目录摘要概述技术架构对比核心功能模块性能与安全优化实施效果与扩展性项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理摘要概述 ThinkPHP和Laravel框架在海关出入口货物报关统筹管理系统中的应用&#xff0c;展现了现代PHP框架在复杂业务场景下的…

ubuntu系统_每天定时23:00 定时关机_怎么实现

在Ubuntu系统中设置每天23:00定时关机&#xff0c;最可靠的方法是使用系统内置的 cron 服务。下面的表格汇总了实现步骤和关键要点&#xff0c;你可以快速了解整个过程。步骤核心操作说明/命令示例1. 编辑计划任务终端中输入 sudo crontab -e使用 sudo 获取root权限&#xff0c…

HTML 表单元素与 React 中的其他 DOM 元素有所不同

React 表单与事件 本章节我们将讨论如何在 React 中使用表单。 HTML 表单元素与 React 中的其他 DOM 元素有所不同,因为表单元素生来就保留一些内部状态。 在 HTML 当中&#xff0c;像 <input>, <textarea>, 和 <select> 这类表单元素会维持自身状态&…

2026年最好用的六大代理IP服务商推荐:IPIDEA、Decodo、Smartproxy、IPRoyal、SOAX、Oxylabs

一、IPIDEA&#xff1a;IPIDEA是一家面向企业级AI训练与数据采集场景的全球代理服务商&#xff0c;其技术架构以超1亿高质量代理IP组成的庞大资源池为核心&#xff0c;覆盖全球220多个国家和地区&#xff0c;提供动态/静态住宅代理、移动代理及数据中心代理等全类型服务。IPIDE…

indirectly_readable和indirectly_writable这两个核心概念的具体定义和使用场景是什么?

indirectly_readable 和 indirectly_writable 是 C20 中引入的两个核心概念&#xff0c;它们为迭代器操作提供了基础的类型安全约束&#xff0c;是理解现代 C 范围库和算法库的关键。 下面这个表格能帮你快速把握它们的核心区别&#xff1a;特性indirectly_readableindirectly_…