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

告别“知识孤岛”:RAG赋能网络安全运营

一、背景

在网络安全运营工作中,我们积累了大量的内部知识内容,涵盖了威胁情报、事件响应流程、安全策略、合规性要求等多个方面。然而,这些知识虽然数量庞大、内容丰富,却因形式多样、结构分散,难以让每一位成员真正掌握和熟练应用。尤其在安全事件发生时,往往面临“知道有知识却找不到”的尴尬局面,影响了问题的快速定位与处置效率。

这些知识大多以 Word、PDF、Excel 等格式零散存储,传统的信息检索方式不仅难以准确理解用户的查询意图,也很难从不同格式的文档中高效提取出有价值的信息,进一步加剧了知识利用的困难。

为了解决这一问题,我们倾向于采用以RAG(检索增强生成)为核心的技术路径,通过将内部知识库与大型语言模型深度集成,实现高效、可信的智能问答服务。让沉淀的安全运营经验在关键时刻快速“被看见、被理解、被用上”,显著提升知识获取效率与响应能力。

二、什么是 RAG

RAG,全称 Retrieval-Augmented Generation,中文可以翻译为检索增强生成。它是一种结合了信息检索和大型语言模型(LLM)生成能力的技术框架

简单来说,RAG 的目的是让大型语言模型在回答问题时,不再仅仅依赖于它训练时所学习到的通用知识,而是能够实时地、有针对性地去查找和利用外部的、更准确、更具体、甚至是最新的信息,然后再结合这些信息来生成回答。

三、RAG和模型微调的区别?

微调:在已有的预训练模型基础上,再结合特定任务的数据集进一步对其进行训练,使得模型在这一领域中表现更好(微调是考前复习,模型通过训练,消化吸收了这些知识然后给你回复)。

RAG:在生成回答之前,通过信息检索从外部知识库中查找与问题相关的知识,增强生成过程中的信息来源,从而提升生成的质量和准确性。(RAG是开卷考试,模型看到你的问题,开始翻你的知识库,以实时生成更准确的答案)。

四、RAG 架构核心流程

RAG 架构主要分为两个阶段:索引(Indexing)阶段查询(Querying/Generation)阶段

4.1 阶段一:索引阶段

这个阶段是将内部知识转化为 RAG 系统可以高效检索的格式。在这个步骤中,其效果的好坏,取决于以下几个方面共同作用的成果,索引阶段可以说是RAG实现的最关键的一步:

  • 数据本身的质量: 原始知识文档是否清晰、准确、没有太多噪声。
  • 文本分块策略: 是否将有意义的上下文完整地保留在块中,避免割裂关键信息。糟糕的分块会导致即使嵌入模型很好也无法生成有代表性的块向量。
  • 嵌入模型本身的质量: 它在您的特定领域数据上生成向量的能力。
  • 向量数据库的选择和配置: 数据库的索引类型、参数设置、硬件资源等都会影响查询的效率和准确找到最近邻向量的能力。

主要步骤有以下组成:

1. 数据采集与预处理 (Data Acquisition & Preprocessing):

    • 来源: 识别所有内部知识来源,例如:
      • 威胁情报报告 (内外部来源)
      • 事件响应 Playbooks/SOPs
      • 安全策略文档
      • 合规性要求文档 (如网络安全法、等保、数据安全法等)
      • 内部 Wiki/Confluence
      • 安全工具配置文档
      • 培训材料
      • 内部知识分享笔记
      • 特定脚本或代码片段 (针对自动化任务)
    • 格式: 这些数据可能以各种格式存在:PDF, DOCX, Markdown, HTML, Wiki 页面,甚至非结构化的文本文件或数据库记录。
    • 清洗: 移除不相关的文本(如页眉页脚、广告、代码块中的注释等),标准化文本格式,处理特殊字符。

2. 数据加载 (Data Loading):

  • 这是构建 RAG 应用的起点,核心环节是利用连接器 (Connectors / Loaders) 从各种数据源(如本地文件、云存储、数据库、网页、API 等)读取并提取你的非结构化或半结构化内容。数据加载的质量和范围直接影响后续检索的效果。

3. 数据分割 (Data Splitting / Chunking):

  • 将长文档分割成更小的、有意义的文本块 (Chunks)。这是因为嵌入模型和大模型通常有输入长度限制,且小的文本块更有利于精确检索。切片的目的是将大型文档分解成更小的、易于处理的块(Chunks),这些块将被嵌入并用于检索。理想的块应该包含足够的信息来回答一个潜在的问题,但又不能太大以至于超出 LLM 的上下文窗口或稀释嵌入的语义。具体策略如下:
a. 固定大小切片
  • 工作原理:将文档简单地切分成固定字符数或 Token 数的块。通常会带有一个固定大小的重叠 (Overlap) 部分,以便块之间保留一些连续的上下文。
  • 优点:实现简单,易于理解和控制。生成的块大小均匀,方便批量处理。
  • 缺点:不考虑文本结构: 容易在句子、段落甚至表格、代码的中间被截断,破坏语义完整性。即使有重叠,也可能丢失跨块的重要上下文连接。检索时可能返回不完整的句子或信息片段,导致生成质量下降。
  • 适合的知识类型:文本结构不那么重要、内容连续性较强的文档(但通常不是最优选择)。
b. 基于分隔符切片
  • 工作原理:根据特定的分隔符(如换行符 \n、双换行符 \n\n、句号 .、问号 ? 等)来分割文本。可以按段落、句子、行等自然语言结构进行切分。只关心你指定的分隔符在哪里。它的主要目标是根据这些符号(如句号、换行符、段落标记等)来划分文本边界,从而尊重文本原有的结构单位(句子、段落等)。至于切出来的块有多长,它不强制控制。一个很长的段落就会被切成一个很长的块。
  • 优点:尊重文本的自然结构(句子、段落),生成的块通常具有更好的语义完整性。避免在不恰当的位置截断文本。
  • 缺点:块大小不均匀: 有些段落可能很短,有些可能非常长,一个超长的段落会形成一个大块,可能超出 LLM 的上下文窗口或影响嵌入质量。依赖于文本的格式和分隔符的规范性,对于格式不规范的文档效果可能不好。
  • 适合的知识类型:结构清晰、段落/句子划分明确的文档,如书籍、文章、报告等。
c. 递归切片
  • 工作原理: 这是目前许多 RAG 框架(如 LlamaIndex, LangChain)中推荐的默认方法。它使用一个分隔符列表(如 ["\n\n", "\n", ". ", " "]),并递归地尝试切分:首先尝试使用第一个分隔符切分,如果生成的块仍然太大,则对这些大块递归地使用列表中的下一个分隔符进行切分,直到块小于指定的最大大小或用完所有分隔符。通常也结合重叠使用。既要考虑分隔符(尽可能尊重结构),但更重要的是要保证最终的每个块的长度(或大小)不超过设定的上限。它会用优先级高的分隔符先切,如果切出来的块还是太大,就递归地使用优先级低的分隔符在那个大块内部继续切,直到块的大小满足要求。长度(大小)是它一个非常重要的约束条件。
  • 优点:
    • 结合了分隔符切片的优点(尊重结构)和固定大小切片的优点(控制最大块大小)。
    • 能够更好地处理不同大小的文本单元,并尽可能保持语义单元的完整性。
    • 比较鲁棒,能适应多种文本结构。
  • 缺点:
    • 比简单的固定大小切片略复杂。
    • 最后的切分可能仍然基于空格等细粒度分隔符,可能在句子中间截断。
  • 适合的知识类型:绝大多数类型的文本文档。它是一种非常通用的方法,通常是开始时的首选。
d. 基于文档结构的切片
  • 工作原理:专门为特定格式(如 Markdown, HTML, JSON, Code)设计的切片器,它们理解文档的逻辑结构(如 Markdown 的标题、列表、代码块,HTML 的标签,JSON 的键值对结构,代码的函数、类)。
  • 优点:
    • 能够按照文档的逻辑单元进行切分,保留了原生格式的重要结构信息。
    • 对于特定类型的数据(如代码、表格),能够生成非常相关的块。
  • 缺点:
    • 需要针对不同格式实现不同的解析器和切片逻辑。
    • 不具有通用性。
    • 一个结构单元(如一个巨大的函数)可能仍然太大,需要结合其他方法(如递归)在内部进行二次切分。
  • 适合的知识类型:带有明确结构标记的文档: 代码文件 (.py, .java 等)、Markdown 文件 (.md)、HTML 文件、JSON 数据、表格数据等。
e. 基于语义/上下文的切片
  • 工作原理:这是一种更高级的方法,它不完全依赖固定的规则或分隔符,而是尝试理解文本的语义内容和上下文流,将语义相关的句子或段落组合成块。可能使用句子的嵌入相似度、主题模型、或更复杂的语言模型分析来确定切分点。
  • 优点:
    • 生成的块具有高度的语义凝聚力。
    • 理论上可以生成最有利于检索语义相关信息的块。
  • 缺点:
    • 实现非常复杂,需要依赖额外的语义分析步骤。
    • 计算成本通常更高。
    • 仍然是研究和发展的活跃领域,不如前几种方法成熟和易于实现。
  • 适合的知识类型:内容复杂、语义关联性强的文档,如研究论文、技术文档、会议记录等,其中找到与查询相关的概念比找到精确的句子或段落更重要。

4. 嵌入 (Embedding):

  • 将自然语言转换成计算机可以理解的高维向量,通过这个过程捕获到文本背后的语义信息,简单来说就是对上传的各类知识附件进行解析。
  • 将文本(用户查询和知识库中的文本块/文档)转换成高维度的数值向量,捕捉其语义信息。这是实现向量相似度搜索的关键。计算机无法直接理解文本的含义,但可以处理数字。通过将文本转化为向量,我们可以利用数学方法(如计算向量之间的距离或相似度)来衡量文本之间的语义相似性。一个好的嵌入模型生成的向量,应该能够准确地捕捉到原始文本块的语义信息上下文关系。也就是说,意思相近或相关的文本块,它们生成的向量在向量空间中的距离应该非常近;意思相差很大的文本,向量距离应该很远。
  • 技术选型 (嵌入模型):
    • gte (General Text Embeddings), bge (Baichuan Global Embeddings), 都是优秀的开源或可商用模型,在通用领域表现良好,且支持中文。
    • 选择考虑:
      • 性能: 在您的特定安全知识数据上进行测试评估检索效果。
      • 语言支持: 如果知识库包含多种语言,需要选择多语言模型。
      • 模型大小与速度: 影响索引和查询的速度。
      • 成本: 调用 API (OpenAI, Cohere) 或自托管开源模型的计算资源成本。
      • 许可: 确保模型许可允许您的使用场景。

5. 索引与存储 (Indexing & Vector Store):

  • 将生成的向量与对应的文本块及元数据 (来源文档、页码等) 存储起来,并构建索引以便快速检索。
  • 技术选型 (向量数据库/存储):
    • 独立向量数据库:Weaviate, Milvus, Pinecone, Qdrant, ChromaDB, Vald 等。这些是专门为向量相似度搜索设计,通常提供高性能、高可伸缩性以及丰富的过滤和搜索功能。
  • 选择考虑:
    • 数据规模: 预计的知识库大小。
    • 查询性能: 需要的检索速度 (延迟)。
    • 可伸缩性: 未来数据增长的预估。
    • 成本与运维: 托管、维护成本和复杂性。
    • 特性: 是否需要混合搜索 (向量+关键词)、过滤等高级功能。

4.2 阶段二:查询阶段

这个阶段是接收用户查询,检索相关信息,并生成回答。

1. 用户查询 (User Query):

    • 用户输入自然语言问题,例如:“发生 DDoS 攻击时,我们的第一响应步骤是什么?” 或 “现在遇到钓鱼邮件,我应该如何处理?”

2. 查询嵌入 (Query Embedding):

    • 使用与索引阶段相同的嵌入模型,将用户查询转化为一个向量。

3. 检索 (Retrieval):

    • 使用查询向量在向量数据库中进行相似度搜索,找到与查询语义最相关的文本块。通常会检索 Top-K 个相似度最高的块。
    • 检索策略:
      • 简单的相似度搜索
      • 最大边际相关性 (MMR - Maximum Marginal Relevance): 在相似度高的结果中,选择多样性更高的,避免返回大量内容高度相似的块。
      • 混合搜索 (Hybrid Search): 结合向量搜索和关键词搜索,可以提高检索的准确性和召回率。
      • 多跳检索 (Multi-hop Retrieval): 对于复杂问题,可能需要先检索信息A,然后用信息A作为新的查询去检索信息B。

4. 重排序 (Re-ranking):

  • 用户查询的原始文本和初步检索到的这个较长的候选片段列表(包含文本内容)输入到重排序模型。
  • 重排序模型对列表中的每个片段进行更精细的相关性评估,并给出新的得分或排序。
  • 从重排序后的列表中,选择最终需要发送给大模型的、数量更少、相关性更强的片段(例如 Top-5 到 Top-10)。
  • 这个阶段是重排序模型的核心工作,它对初步检索结果进行精选。

5. 上下文构建 (Context Augmentation):

    • 将检索到的文本块作为上下文信息,与原始用户查询一起输入给大模型。
    • 通常会将检索到的多个文本块拼接起来,形成一个完整的 Prompt Context。需要注意控制总长度,不超过所选大模型的上下文窗口限制。

6. 生成 (Generation):

    • 将构建好的 Prompt (用户查询 + 检索到的上下文) 输入给大模型,由大模型生成最终的回答。
    • 技术选型 (大模型):
      • 推荐deepseek 、chatgpt、Anthropic Claude 、Google Gemini等模型。
      • 选择考虑:
        • 性能: 生成回答的准确性、相关性、流畅性、是否能理解并利用提供的上下文。在安全领域的理解和生成能力。
        • 上下文窗口: 越大越好,可以容纳更多的检索结果。
        • 成本: API 调用费用或自托管的硬件/算力费用。
        • 速度: 生成回答的延迟。
        • 数据隐私与安全性: 对于内部敏感知识,是否能接受将数据发送给第三方 API (商业模型),或者是否必须选择自托管模型。
        • 微调潜力: 未来是否需要针对特定安全术语或回答风格进行微调。
    • 提示词工程: 精心设计 Prompt 模板,指导大模型如何利用上下文、如何回答问题、如何处理不确定性或矛盾信息。例如:
      • “请基于以下提供的安全知识内容,回答用户的问题。如果提供的知识中找不到相关信息,请说明知识库中未包含此信息。”
      • “用户问题:[用户查询]”
      • “安全知识内容:[检索到的文本块列表]”

7. 后处理与输出 (Post-processing & Output):

    • 对大模型生成的文本进行可能的后处理(如格式化、去除冗余信息)。
    • 将回答呈现给用户。
    • 重要: 建议在回答中引用或链接到检索到的原始知识来源,增加答案的可信度和可追溯性。

五、实现方式

笔者在近几个月使用了多款RAG 工具,给我的感受是,尽管 RAG(检索增强生成)技术在理论上极具前景,并且已经取得了显著进展,但目前整个RAG的实现和应用仍然处于一个快速发展和不断探索的阶段,对于普通用户和企业而言,确实还存在一定的应用门槛,不够“开箱即用”和“足够智能”。这个问题的产生主要原因还是现实世界的知识库远比标准数据集复杂,数据的多样性使得“一刀切”的自动化方案难以奏效。

在这里我使用一个叫做RagFlow开源的检索增强生成(RAG)引擎,可以理解成是一个 RAG 的一站式的解决方案或平台,此平台不管是易用性还是前端界面,都较为友好,可以支持线上 Demo使用(RAGFlow),也可以本地化部署(GitHub - infiniflow/ragflow: RAGFlow is an open-source RAG (Retrieval-Augmented Generation) engine based on deep document understanding.)。

5.1 模型配置

  • 在这一步中我们需要添加 Chat 模型、EMBEDDING模型、 RE-RANK模型。因为我使用的是线上 Demo 版本,直接添加 API Key 即可。

  • 这里我配置 Chat 模型为 DeepSeek,EMBEDDING和RE-RANK使用硅基流动接口。

5.2 知识库创建

  • 在首页选择“创建知识库”

  • 在配置中选择 PDF 解析器,这里我使用 Qwen 解析模型
  • 选择嵌入模型为 BAAI 的 bge-large
  • 切片方法这里选择 General,没有特殊需求,就选择这个,当然在后续中一个知识库会涉及多个文档,到时候可以根据每个文档不同的特点选择切片方法

5.3 知识库上传及解析

  • 这一步的主要作用是将自然语言使用嵌入模型进行向量化,使计算机能够理解我们的知识库内容
  • 根据下图,上传我们的知识库文件

  • 上传完成以后,对文件进行解析,如果不解析将无法使用我们的知识库内容
  • 在“动作”中,我们可以看到一个螺丝刀的配置功能,可以选择切片方法,这个需要根据文档的实际特点去选择

5.4 聊天配置

  • 在聊天配置界面,“新建助理”

  • 配置助理姓名
  • 配置我们要引用的知识库

  • “提示引擎”主要是通过精心设计 Prompt 模板,指导大模型如何利用上下文、如何回答问题、如何处理不确定性或矛盾信息。用大白话说就是他的回答必须按照你设定的格式来。

  • 最后一步就是配置 Chat 模型,我选择的是 Deepseek-R1 模型,然后点击确定即可

5.5 知识问答

  • 新建一个聊天窗口,我们回答关于知识库中的内容,他会给出回答,并把引用标明出来。

相关文章:

告别“知识孤岛”:RAG赋能网络安全运营

一、背景 在网络安全运营工作中,我们积累了大量的内部知识内容,涵盖了威胁情报、事件响应流程、安全策略、合规性要求等多个方面。然而,这些知识虽然数量庞大、内容丰富,却因形式多样、结构分散,难以让每一位成员真正…...

A级、B级弱电机房数据中心建设运营汇报方案

该方案围绕A 级、B 级弱电机房数据中心建设与运营展开,依据《数据中心设计规范》等标准,施工范围涵盖 10 类机房及配套设施,采用专业化施工团队与物资调配体系,强调标签规范、线缆隐藏等细节管理。运营阶段建立三方协同运维模式,针对三级故障制定30 分钟至 1 小时响应机制…...

C 语言学习笔记(数组)

C 语言基础:第 08天笔记 内容提要 数组 排序算法:冒泡排序二维数组字符数组 数组 冒泡排序 排序思想(向前冒泡): 一次排好一个数,针对n个数,最差情况需要n - 1次就可以排好每次排序假定第一…...

jvm安全点(二)openjdk17 c++源码垃圾回收安全点信号函数处理线程阻塞

1. 信号处理与桩代码(Stub)​​ 当线程访问安全点轮询页(Polling Page)时: ​​触发 SIGSEGV 信号​​:访问只读的轮询页会引发 SIGSEGV 异常。​​信号处理函数​​:pd_hotspot_signal_handl…...

uni-app 开发HarmonyOS的鸿蒙影视项目分享:从实战案例到开源后台

最近,HBuilderX 新版本发布,带来了令人兴奋的消息——uni-app 现在支持 Harmony Next 平台的 App 开发。这对于开发者来说无疑是一个巨大的福音,意味着使用熟悉的 Vue 3 语法和开发框架,就可以为鸿蒙生态贡献自己的力量。 前言 作…...

【赵渝强老师】在PostgreSQL中访问Oracle

在PostgreSQL数据库中,oracle_fdw是PostgreSQL数据库支持的外部扩展。通过使用oracle_fdw扩展可以读取到Oracle数据库中的数据。它是一种非常方便且常见的PostgreSQL与Oracle的同步数据的方法。使用oracle_fdw扩展需要依赖Oracle的Instance Client环境。 视频讲解如…...

板凳-------Mysql cookbook学习 (二)

生成一个包含cookbook数据库中的表备份的名为backup.sql的dump文件。 sql C:\Users\lenovo>mysqldump -u root -p --default-character-setutf8mb4 cookbook > D:\sql\Mysql_learning\backup.sql mysqldump 不是内部或外部命令,也不是可运行的程序 或批处理文…...

sudo apt update是什么意思呢?

非常好的问题! ✅ sudo apt update 是什么意思? 它的作用是: 更新你的 Ubuntu 系统中软件列表的信息(但不安装软件) 就像你每天先去超市了解今天上架了哪些新商品(只是“查看”而不是“买”)&a…...

.NET Core 中 Swagger 配置详解:常用配置与实战技巧

随着微服务架构和 RESTful API 的广泛应用,API 文档的管理和自动化生成成为了开发中的重要部分。Swagger(现为 OpenAPI)是一款功能强大的工具,它可以自动生成 API 文档,并提供交互式 UI,帮助开发者、测试人…...

spring cache使用指南

Spring cache Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。 Spring Cache 提供了一层抽象,底层可以切换不同的缓存实现。 例如:EHCache,Caffeine,Redi…...

9.DMA

目录 DMA —为 CPU 减负 DMA 的简介和使用场景 DMA 的例子讲解 STM32 的 DMA 框图和主要特性 ​编辑 DMA 的通道的对应通道外设 – DMA 和哪些外设使用 ​编辑​编辑ADC_DR 寄存器地址的计算 常见的数据滤波方法 ADCDMA 的编程 DMA —为 CPU 减负 DMA 的简介和使用场…...

Python自学笔记3 常见运算符

常用运算符 加减法 python的自动数据类型转换 整形转为浮点型 实数转为复数 数字类型不能和浮点数类型相加减 乘除法 数据转换基本同加减法, 但字符串可以和整数相加减,作用是字符串的自我复制 反斜杠 成员运算符 判断一个元素是不是一个序列的成员…...

【C/C++】C++中constexpr与const的深度对比

文章目录 C中constexpr与const的深度对比1. 编译期确定性2. 更严格的优化保证3. 适用范围更广4. 类型安全与错误检查5. 现代 C 的演进方向何时使用 const?constexpr应用场景1. 配置常量与全局参数2. 数据验证与业务规则检查3. 数学计算与业务逻辑优化4. 模板元编程与…...

劳特巴赫trace32负载率测试

按照下图步骤点击即可...

牛客OJ在线编程常见输入输出练习--Java版

目录 一、链接 二、题目 一、链接 牛客输入输出链接:牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网 二、题目 1.只有输出 public class Main {public static void main(String[] args) {System.out.println("H…...

STM32 | FreeRTOS 递归信号量

递归信号量 一、概述 互斥量的使用比较单一,因为它是信号量的一种,并且它是以锁的形式存在。在初始化的时候,互斥量处于开锁的状态,而被任务持有的时候则立刻转为闭锁的状态。 递归类型的互斥量可以被拥有者重复获取。拥有互斥量…...

STM32 | 软件定时器

01 一、概述 软件定时器是用程序模拟出来的定时器,可以由一个硬件定时器模拟出成千上万个软件定时器,这样程序在需要使用较多定时器的时候就不会受限于硬件资源的不足,这是软件定时器的一个优点,即数量不受限制。但由于软件定…...

2025年EB SCI2区TOP,多策略改进黑翅鸢算法MBKA+空调系统RC参数辨识与负载聚合分析,深度解析+性能实测

目录 1.摘要2.黑翅鸢优化算法BKA原理3.改进策略4.结果展示5.参考文献6.代码获取7.读者交流 1.摘要 随着空调负载在电力系统中所占比例的不断上升,其作为需求响应资源的潜力日益凸显。然而,由于建筑环境和用户行为的变化,空调负载具有异质性和…...

互联网大厂Java面试:从Spring到微服务的全面探讨

文章简述 本文模拟了一个互联网大厂Java求职者的面试场景,涵盖了Java核心语言与平台、构建工具、Web框架、微服务与云原生等多个技术栈。通过面试问答的形式,展示了在真实业务场景下如何应用这些技术点,帮助初学者理解和学习。 场景介绍 在…...

Python爬虫之路(14)--playwright浏览器自动化

playwright 前言 ​ 你有没有在用 Selenium 抓网页的时候,体验过那种「明明点了按钮,它却装死不动」的痛苦?或者那种「刚加载完页面,它又刷新了」的抓狂?别担心,你不是一个人——那是 Selenium 在和现代前…...

Elasticsearch Fetch阶段面试题

Elasticsearch Fetch阶段面试题 🚀 目录 基础原理性能优化错误排查场景设计底层机制总结基础原理 🔍 面试题1:基础原理 题目: 请描述Elasticsearch分布式搜索中Query阶段和Fetch阶段的工作流程,为什么需要将搜索过程拆分为这两个阶段? 👉 点击查看答案 查询流程…...

RAGFlow Arbitrary Account Takeover Vulnerability

文章目录 RAGFlowVulnerability Description[1]Vulnerability Steps[2]Vulnerability Steps[3]Vulnerability Steps RAGFlow RAGFlow is an open-source RAG (Retrieval-Augmented Generation) engine developed by Infiniflow, focused on deep document understanding and d…...

框架之下再看HTTP请求对接后端method

在当今的软件开发领域,各类框架涌现,极大地提升了开发效率。以 Java 开发为例,Spring 框架不断演进,Spring Boot 更是简化到只需引入 Maven 包,添加诸如SpringBootApplication、RestController等注解,就能轻…...

机器学习中的过拟合及示例

文章目录 机器学习中的过拟合及示例1. 过拟合的定义2. 过拟合的常见例子例1:图像分类中的过拟合例2:回归任务中的过拟合例3:自然语言处理(NLP)中的过拟合 3. Python代码示例:过拟合的直观演示示例1&#xf…...

机器学习-人与机器生数据的区分模型测试 -数据筛选

内容继续机器学习-人与机器生数据的区分模型测试 使用随机森林的弱学习树来筛选相对稳定的特征数据 # 随机森林筛选特征 X data.drop([city, target], axis1) # 去除修改前的城市名称列和目标变量列 y data[target] X_train, X_test, y_train, y_test train_test_split(X…...

第9讲、深入理解Scaled Dot-Product Attention

Scaled Dot-Product Attention是Transformer架构的核心组件,也是现代深度学习中最重要的注意力机制之一。本文将从原理、实现和应用三个方面深入剖析这一机制。 1. 基本原理 Scaled Dot-Product Attention的本质是一种加权求和机制,通过计算查询(Query…...

无监督学习在医疗AI领域的前沿:多模态整合、疾病亚型发现与异常检测

引言 人工智能技术在医疗领域的应用正经历着从辅助决策向深度赋能的转变。无监督学习作为人工智能的核心范式之一,因其无需大量标注数据、能够自动发现数据内在规律的特性,在医疗AI领域展现出独特优势。尤其在2025年,无监督学习技术在医疗AI应用中呈现出多模态整合、疾病亚…...

PostgreSQL内幕剖析——结构与架构

大家好,这里是失踪人口bang__bang_,从今天开始持续更新PostgreSQL内幕相关内容,让我们一起了解学习吧✊! 目录 1️⃣ DB集群、数据库、表 🍙 数据库集群的逻辑结构 🍙 数据库集群的物理结构 &am…...

架构师论文《论模型驱动架构软件开发方法及其应用》

摘要 在当前的软件开发领域,模型驱动架构(MDA)作为一种重要的开发方法,强调通过抽象化模型指导系统设计与实现,能够有效提升开发效率并降低复杂性。本文结合笔者参与的某医疗信息管理系统的开发实践,探讨MD…...

当硅基存在成为人性延伸的注脚:论情感科技重构社会联结的可能性

在东京大学机器人实验室的档案室里,保存着一份泛黄的二战时期设计图——1943年日本陆军省秘密研发的“慰安妇替代品”草图。这个诞生于战争阴霾的金属躯体,与2025年上海进博会上展出的MetaBox AI伴侣形成时空对话:当人类将情感需求投射于硅基…...

最小二乘法拟合直线,用线性回归法、梯度下降法实现

参考笔记: 最小二乘法拟合直线,多个方法实现-CSDN博客 一文让你彻底搞懂最小二乘法(超详细推导)-CSDN博客 目录 1.问题引入 2.线性回归法 2.1 模型假设 2.2 定义误差函数 2.3 求偏导并解方程 2.4 案例实例 2.4.1 手工计算…...

机器学习 day04

文章目录 前言一、线性回归的基本概念二、损失函数三、最小二乘法 前言 通过今天的学习,我掌握了机器学习中的线性回归的相关基本概念,包括损失函数的概念,最小二乘法的理论与算法实现。 一、线性回归的基本概念 要理解什么是线性回归&…...

数据分析_Python

1 分析内容 1.1 数据的整体概述 提供数据集的基本信息,包括数据量、时间跨度、地理范围和主要字段. import pandas as pd# 创建示例数据 data {姓名: [张三, 李四, 王五, 赵六, 钱七, 孙八, 周九, 吴十],年龄: [25, 30, 35, 40, 45, 50, 55, 60],性别: [男, 男, 女, 女, 男,…...

精益数据分析(63/126):移情阶段的深度潜入——从用户生活到产品渗透的全链路解析

精益数据分析(63/126):移情阶段的深度潜入——从用户生活到产品渗透的全链路解析 在创业的移情阶段,成功的关键不仅在于发现用户的表面需求,更在于深入潜入用户的日常生活,理解其行为背后的真实动机与场景…...

【MySQL】第五弹——表的CRUD进阶(三)聚合查询(上)

文章目录 🌅聚合函数🌊1.COUNT();统计所有行🌊2. SUM(列名); 求和🌊3. AVG() 求平均🌊4. MAX(),MIIN() 🌅分组查询🌊GROUP BY 子句🌊HAVING 🌅联合查询🌊联合…...

英语学习5.16

recede 【动词】 👉 关键词:后退、减弱、退去 ✅ 释义: 后退,远离 指物体逐渐远离、移开或变得不明显,常用于描述水面、声音、军队、头发线等的“退却”或“后移”。 如:The floodwaters receded.&#x…...

创建react工程并集成tailwindcss

1. 创建工程 npm create vite admin --template react 2.集成tailwndcss 打开官网跟着操作一下就行。 Installing Tailwind CSS with Vite - Tailwind CSS...

2025 年九江市第二十三届中职学校技能大赛 (网络安全)赛项竞赛样题

2025 年九江市第二十三届中职学校技能大赛 (网络安全)赛项竞赛样题 (二)A 模块基础设施设置/安全加固(200 分)A-1 任务一登录安全加固(Windows,Linux)A-2 任务二 Nginx 安全策略&…...

STM32IIC实战-OLED模板

STM32IIC实战-OLED模板 一,SSD1306 控制芯片1, 主要特性2,I2C 通信协议3, 显示原理4, 控制流程5, 开发思路 二,HAL I2C API 解析I2C 相关 API1,2,3,4&#xf…...

BMVC2023 | 多样化高层特征以提升对抗迁移性

Diversifying the High-level Features for better Adversarial Transferability 摘要-Abstract引言-Introduction相关工作-Related Work方法-Methodology实验-Experiments结论-Conclusion 论文链接 GitHub链接 本文 “Diversifying the High-level Features for better Adve…...

C++ deque双端队列、deque对象创建、deque赋值操作

在deque中,front()是头部元素,back()指的是尾部元素。begin()是指向头部的迭代器,end()是指向尾部的下一个元素的迭代器。 push_front 头部进行插入 pop_front 尾部进行删除 push_back 尾部进行插入 pop_back 尾部进行删除 deque如果同时…...

【论文阅读】人脸修复(face restoration ) 不同先验代表算法整理2

文章目录 一、前述二、不同的先验及代表性论文2.1 几何先验(Geometric Prior)2.2 生成式先验(Generative Prior)2.3 codebook先验(Vector Quantized Codebook Prior)2.4 扩散先验 (Diffusion Pr…...

2025年渗透测试面试题总结-百度面经(题目+回答)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 百度面经 百度安全工程师面试深度复盘与优化指南 一、项目经验反思与优化策略 二、技术问题深度解析 …...

muduo库TcpConnection模块详解——C++

muduo库中的TcpConnection模块详解 TcpConnection是muduo库中处理TCP连接的核心模块,负责管理单个TCP连接的生命周期、数据读写、状态转换以及事件回调。每个TCP连接对应一个TcpConnection对象,其设计体现了高性能、线程安全和灵活回调的特点。 一、核心…...

aksharetools:大模型智能体框架agno可直接获取A股金融数据

原创内容第889篇,专注智能量化投资、个人成长与财富自由。 今天说说金融智能体开发。 智能体开发需要一个多agent框架。这样的框架,现在太多了,langchain, langgraph,autogen,crewai等等,还有各种低代码平…...

使用Maven部署WebLogic应用

使用Maven部署WebLogic应用 在Maven项目中部署应用到WebLogic服务器可以通过以下几种方式实现&#xff1a; 1. 使用WebLogic Maven插件 (官方推荐) Oracle提供了官方的WebLogic Maven插件&#xff0c;这是最直接的部署方式。 基本配置 <build><plugins><pl…...

[Java][Leetcode simple] 13. 罗马数字转整数

一、自己想的 只有提到的六种情况是-&#xff0c;其他都是 public int romanToInt1(String s) {int res 0;int n s.length();Map<Character, Integer> map new HashMap<>();map.put(I, 1);map.put(V, 5);map.put(X, 10);map.put(L, 50);map.put(C, 100);map.pu…...

【论文阅读】针对BEV感知的攻击

Understanding the Robustness of 3D Object Detection with Bird’s-Eye-View Representations in Autonomous Driving 这篇文章是发表在CVPR上的一篇文章&#xff0c;针对基于BEV的目标检测算法进行了两类可靠性分析&#xff0c;即恶劣自然条件以及敌对攻击。同时也提出了一…...

Ansible模块——设置软件仓库和安装软件包

设置软件仓库 ansible.builtin.rpm_key ansible.builtin.rpm_key 用于在 Fedora/RHEL 上导入或移除 GPG 公钥。 参数名 类型 默认值 说明 fingerprintstrnull 指定公钥的完整指纹&#xff08;long-form&#xff09;。在导入前会比对公钥是否匹配此指纹&#xff0c;增强安全…...

基于CentOS7制作OpenSSL 1.1的RPM包

背景&#xff1a;CentOS7 已经不再维护了&#xff0c;有时候需要升级某些组件&#xff0c;网上却没有相关的资源了。尤其是制作OpenSSH 9.6 的RPM包&#xff0c;就会要求OpenSSL为1.1的版本。基于此&#xff0c;还是自己制作吧&#xff0c;以下是踩坑过程。 1、官网提供的源码包…...