🐇明明跟你说过:个人主页

🏅个人专栏:《深度探秘:AI界的007》 🏅

🔖行路有良友,便是天堂🔖

目录

一、前言 

1、LLM 的局限:模型知识“封闭” vs 现实知识“动态”

2、什么是RAG

3、为什么需要“检索 + 生成”结合?

二、RAG 的整体架构与流程

1、检索增强生成的基本结构

2、核心流程

三、核心模块解析

1、向量检索模块(Retriever)

1.1、文档预处理与切分(Chunking)

1.2、向量化(Embedding)原理

1.3、向量数据库简介

2、生成模块(Generator)

2.1、提示模板设计(Prompt Template)

2.2、插入检索内容的方式

四、RAG 与传统 QA 系统的对比

1、检索式 QA(BM25 / Elasticsearch)

2、生成式 QA(LLM 单独输出)

3、RAG相比检索式 QA和生成式 QA的优势


一、前言

1、LLM 的局限:模型知识“封闭” vs 现实知识“动态”

🤖 大语言模型 LLM 的“大脑”怎么来的?

LLM(比如 ChatGPT)是通过“喂大量文字资料”训练出来的。
这些资料可能包括:

  • 维基百科 📚

  • 新闻、小说 🗞️📖

  • 技术文档、网站内容 🧑‍💻

  • 训练时截⽌于某⼀年(比如 2023 年)

✅ 优点:

  • 训练完之后,它能“理解语言”和“生成回答”,就像人一样 ✍️


🚫 但问题来了!

训练完之后,这些模型的知识就“封闭”了
就像你在 2023 年读完所有百科,然后被关进了房间…
以后就不能接触外面的新东西了 🙈


📅 现实世界是“动态”的!

现实世界每天都在变:

  • 新技术、新产品 💡

  • 股市波动 📉📈

  • 社会新闻 📰

  • 法律、政策变化 🏛️

  • 你公司的文档不断更新 📂


🤔 举个例子

你问 ChatGPT:

“苹果 iPhone 16 有哪些新功能?”

  • ❌ 普通 LLM(没联网)只能告诉你:
    “截至训练时,最新的是 iPhone 14 或 15…”

  • ✅ 使用 RAG 或联网增强的模型能回答:
    “iPhone 16 加入了 AI 拍照助手、无边框屏幕…”(实时查的!)


📌 所以说…

❗ LLM 的局限:

  • 它的知识是静态的、封闭的 🧱

  • 无法主动感知“此时此刻”发生了什么 ⏰

  


2、什么是RAG

你有没有和 ChatGPT 聊天时发现,它有时候回答得不太准确?🤔
那是因为它只靠“记忆”回答问题,而不是实时“查资料”。
RAG 就是来解决这个问题的!🎯


💡RAG 的全称

RAG = Retrieval-Augmented Generation
中文意思是:“检索增强生成”
听起来是不是很学术?别急,我们来举个栗子🌰


🍜 用“点外卖”举个例子

假设你在点外卖 🍱,你问:

哪家餐厅最近评价最好?

  • 如果是普通大模型(没有 RAG):
    它会靠以前学过的资料告诉你:
    “大众点评上XX餐厅评价不错哦~”

  • 如果是带 RAG 的模型:
    它会先去实时搜索
    “当前最新的餐厅评价”,
    然后结合自己的理解,告诉你答案!

✅是不是更靠谱了!

  


3、为什么需要“检索 + 生成”结合?

简单说一句话:

👉 “检索”找资料,“生成”来表达
合在一起,就成了聪明又靠谱的问答助手 🧠✨

🎓 一句话区分两者

模块是谁作用
🔍 检索类似 Google、百度从知识库里“找答案”
✍️ 生成类似 ChatGPT、文心一言把资料“说人话”告诉你

📦 为什么不能只靠“生成”?

生成模型(LLM)很强大,但有两个大问题:

  1. 知识是封闭的
    它只能回答训练时学过的内容,不能访问新数据 📅

  2. 可能张口就来(幻觉)
    它有时会“瞎编”一个听起来像真的答案 🤯

    “Python 6.0 已发布”❌(其实根本没有)

🔍 那只用“检索”行不行?

只用检索就像自己去 Google 搜资料:

  • 你得自己读、自己理解 🧾

  • 内容零碎,用户体验不好 😩


✅ 所以“检索 + 生成”强在哪?

它把 两者的优点结合起来

模块优点
检索提供实时、可靠、准确的“资料来源” 📚
生成自动理解内容,用自然语言表达答案 ✨

就像你有了个聪明秘书👇

  


二、RAG 的整体架构与流程

1、检索增强生成的基本结构

🧱 RAG 的基本结构组成

[用户问题]  
     ↓  
🔍 检索模块(Retriever)  
     ↓  
📄 相关文档(Document Store / 向量数据库)  
     ↓  
🤖 生成模块(LLM)  
     ↓  
✅ 最终回答

1️⃣ 用户问题(User Query)🗣️

用户提出一个自然语言的问题,比如:

“我们公司今年的假期安排是怎样的?”


2️⃣ 检索模块(Retriever)🔍

它会把这个问题变成“向量”或关键词,
知识库里找“相关资料”,比如 Word 文档、PDF、数据库记录等。

常用方式有:

  • 向量搜索(embedding 检索)🔢

  • 关键词搜索(BM25等)🔡


3️⃣ 文档库 / 知识源(Document Store)📚

这是你提供给系统的“专属资料库”:
可以是:

  • 内部文档系统(如 Confluence)

  • 产品手册、公司制度文档

  • FAQ 问答库

  • 向量数据库(如 Faiss、Weaviate、Pinecone)


4️⃣ 生成模块(LLM)✍️

将检索到的资料 + 用户问题
一起输入给大语言模型(如 GPT-4)
👉 它会生成一个贴合问题、参考资料的自然语言答案。


5️⃣ 最终输出 ✅

模型输出的回答结合了“当前资料”与语言表达能力,
能给出“有依据、不瞎编”的智能答复。

  


2、核心流程

🧭 1. 用户输入 query(提问)💬

用户输入自然语言问题,比如:

“公司 VPN 连不上怎么处理?”


🔍 2. 检索相关文档(Retriever)📂

将用户问题转化为向量(或关键词),
在知识库中查找相关资料片段,如:

  • 公司 IT 支持文档

  • 网络故障手册

  • FAQ 问答库

🔸 输出:若干条相关内容(上下文)


🧠 3. 拼接上下文 + 问题输入 LLM(Generator)🧾

把这些检索到的内容 + 用户问题
打包送入大语言模型(如 GPT-4)

🔸 模型可以“理解”上下文,结合已有知识进行回答。


✅ 4. 返回回答结果 ✨

LLM 输出一个贴合上下文、语义流畅的回答,例如:

“您好,请尝试重启 VPN 客户端,若仍无法连接,请联系 IT 支持人员并提供错误码。”

  


三、核心模块解析

1、向量检索模块(Retriever)

1.1、文档预处理与切分(Chunking)

🧐 为什么要切分文档?

我们不能直接把整本 PDF、整篇网页丢给模型或向量数据库!
因为:

  • 太大,无法一次处理(LLM 有长度限制)📏

  • 不利于精确匹配关键词或语义 🎯

所以要把大文档 ✂️ 切成小块(Chunk)

🔨 文档预处理与切分流程

原始文档(PDF / Word / 网页等)📄  
        ↓  
1. 文本提取(OCR / Parser)🔍  
        ↓  
2. 清洗格式(去除 HTML 标签、多余空格等)🧼  
        ↓  
3. 切分成小段(Chunking)✂️  
        ↓  
4. 生成每段的向量 Embedding(文本 → 数字)🔢  
        ↓  
存入向量数据库(如 Faiss / Weaviate / Milvus)📦

  


1.2、向量化(Embedding)原理

🎯 一句话理解:

把一句话或一段文字 ✍️
转换成一个可以在“数字世界”中比大小、量距离的 向量 📍
👉 方便让机器“理解语义”和“做相似度检索”!

🧠 举个例子:

原始文本向量化后
“猫是一种动物”[0.12, -0.85, 0.33, ..., 0.05]
“狗是哺乳动物”[0.11, -0.80, 0.30, ..., 0.07]
“咖啡是一种饮料”[0.95, 0.02, -0.30, ..., 0.88]

📌 可以看到:“猫”和“狗”的向量相近,说明语义上相关。
“咖啡”离它们就远了,语义无关 🧭


🧩 Embedding 是怎么做的?

过程如下图(概念流程):

输入文本:"如何重置公司邮箱密码?"  
     ↓  
🔤 分词(Tokenizer)  
     ↓  
🔢 编码(Embedding 模型)  
     ↓  
输出一个 N 维向量:[0.23, -0.45, 0.88, ..., -0.19]

✅ 每一维都代表了某种“语义特征”,比如技术性、办公场景、问题类型等。

 🚀 常见的文本向量模型(Embedding Models)

模型来源特点
OpenAI text-embedding-3-smallGPT家族准确度高、商用常用
bge-small / bge-largeBAAI(北京智源)中文支持优秀 🇨🇳
E5 / InstructorHugging Face 社区多语言、检索效果好
MiniLM / MPNet微软轻量快、适合端侧部署

🧭 向量的价值在哪?

  • ✅ 可以通过“距离”判断文本间的语义相似度

    • 常见方式:余弦相似度 cosine similarity

例如:

“公司如何申请年假?” 与 “怎样请假?”
向量距离近,说明意思接近,Retriever 会成功召回!

  


1.3、向量数据库简介

🧭 什么是向量数据库?

向量数据库是专门用来存储、管理、搜索「向量(Embedding)」的数据库 📦,
它能干的事情主要是👇:

  • ✅ 存:将文本、图像等向量数据存起来

  • ✅ 查:支持「相似度检索」——找出“语义最相近”的内容

  • ✅ 快:可处理数百万、甚至数十亿条向量数据

  • ✅ 强:支持高维向量、支持 GPU、分布式扩展能力强

🔍 所以,在 RAG 架构中,它就是连接 检索模块知识库 的超级引擎!

 📦 常见向量数据库介绍一览:

名称产地 / 背景优势亮点使用方式是否开源
FAISS 🧱Meta / Facebook极快的本地向量搜索Python 为主,嵌入式用多✅ 是
Milvus 🚀Zilliz(国产)云原生、分布式强REST / Python / Java✅ 是
Weaviate 🧠欧洲公司集成好(支持 OpenAI / Cohere 等)RESTful API,易部署✅ 是
Qdrant开发者友好支持过滤器、打分高效Web UI + API 易用✅ 是

  


🔹 FAISS(Facebook AI Similarity Search)

  • 🌱 轻量级、单机版神器

  • 🚀 支持 GPU,百万级向量检索毫秒级

  • 😅 不适合做分布式、管理功能弱

  • 🔧 适合离线处理、大量批量匹配任务


🔹 Milvus

  • 🇨🇳 开源之光,Zilliz 维护

  • ☁️ 支持云部署、分布式、多副本

  • 🔌 可接 Elastic、S3、MySQL 等

  • 💬 非常适合企业级大规模向量服务


🔹 Weaviate

  • 🔗 天生就是为 RAG 服务的向量库

  • 🎁 内置向量模型集成(OpenAI / HuggingFace)

  • 🌐 提供 GraphQL/REST API,简单易上手

  • 💡 适合快速搭建语义搜索原型


🔹 Qdrant

  • 💻 支持结构化 + 非结构化过滤查询(很灵活)

  • 🧪 拥有 Web 控制台、API 易用

  • 💨 检索性能强,开源活跃

  • 👍 很适合开发者 / 中小型 RAG 项目

  


2、生成模块(Generator)

2.1、提示模板设计(Prompt Template)

❓为什么要设计提示模板?

因为直接把检索结果 + 用户问题喂给 LLM,模型未必能「懂你想要什么」。
所以我们需要一个“引导话术”,像“说明书”一样告诉模型如何回答。📋

✅ 最常见的提示结构如下:

你是一位 [角色设定]。
请根据以下已知信息回答用户的问题:
【已知信息】
{{context}}

【用户问题】
{{question}}

请用简洁、准确的语言回答:

📌 {{context}} 是 Retriever 检索出来的内容
📌 {{question}} 是用户输入的问题


💡 示例:技术支持场景

你是一名经验丰富的 IT 支持工程师。
请根据以下信息回答用户的问题:

【已知信息】
1. VPN 客户端连接错误代码为 809。
2. 错误 809 常见于防火墙未开放 UDP 500 和 UDP 4500 端口。
3. 建议联系网络管理员确认 VPN 协议设置。

【用户问题】
VPN 连接一直失败,提示错误 809,怎么解决?

请用中文简洁说明处理方案。

🔍 这个模板能让 LLM:

  • 更清楚角色定位(你是谁)

  • 更聚焦已知信息(别胡编)

  • 更精确响应问题(不要答非所问)

  


2.2、插入检索内容的方式

🛠️ 插入检索内容的几种方式

1️⃣ 经典方式:直接拼接 Prompt(RAG-原始版)

👉 把检索结果(Top-K 文档)直接用 Prompt 拼到用户问题前面:

[文档1内容]
[文档2内容]
...
问题:请总结上述内容的要点。

优点:简单直接
缺点:信息可能冗余,文档质量参差不齐导致生成结果不稳定 😵

2️⃣ RAG Fusion 🧪

👉 灵感来自“多样性增强”。做法是:

  1. 对一个问题,向 多个不同视角的查询(Query variations) 检索文档(比如改写问题)

  2. 把多个检索结果合并、去重、排序

  3. 拼接后交给生成模块

🌟 优点

  • 检索结果更全面、不容易漏信息

  • 减少模型对单一文档的偏见

📌 举例:

问题:“公司的假期制度是怎样的?”

你可能会生成多个查询:

  • “公司节假日规定”

  • “年假政策”

  • “加班与调休”

然后将多个检索结果融合为一个 Prompt。

3️⃣ RAG with Rerank 🔁

👉 在 Top-K 检索结果出来后,使用一个 重排序(Reranker)模型,对这些文档按“相关性”重新排序 ✅

流程如下:

  1. 原始Retriever → 拿到Top-20候选文档

  2. 使用Reranker模型(如 BGE-Reranker、ColBERT)评分

  3. 选出 Top-N 最相关文档拼 Prompt

🌟 优点

  • 提升质量,去掉干扰文档

  • 对复杂问答场景更有效,比如医疗、法律

4️⃣ (加分项)Chunk Merging、信息整合式 Prompt 🧩

针对文档太长、碎片多的问题,有些系统会先:

  • 对多个文档内容做摘要或融合(比如提取共同主题)

  • 然后再生成回答,减少重复和冲突

方式特点适用场景
📜 原始拼接简单、快速小型项目、简单问答
🧪 RAG Fusion多视角、全面信息分散型问题
🔁 Rerank精准提取、抗噪性强复杂、高质量要求的问答
🧩 Chunk融合减冗余文档重复率高、大模型Token受限时

  


四、RAG 与传统 QA 系统的对比

1、检索式 QA(BM25 / Elasticsearch)

🧠 传统 QA 系统是怎么工作的?

传统 QA 系统的核心是:直接检索文档段落,作为回答返回

🧱 架构核心:

  1. 用户提问:“公司的加班政策是什么?”

  2. 系统使用 关键词匹配算法(如 BM25)在文档库中查找最相关的段落。

  3. 相关段落原文返回给用户。

🔍 BM25 / Elasticsearch 是主力选手:

  • BM25 是一种基于词频 + 逆文档频率的打分机制(TF-IDF 的升级版)

  • Elasticsearch 是支持 BM25 的流行全文搜索引擎


📦 举个例子:

🧑‍💼 你问:“我们公司节假日有哪些?”

🧾 传统 QA(BM25)返回结果:

第5章 节假日安排:
1. 元旦放假1天;
2. 春节放假7天;
3. 清明节放假1天;
...

✅ 优点:直接、可查证
❌ 缺点:用户得自己读、自己理解

  


2、生成式 QA(LLM 单独输出)

✨ 生成式 QA 是什么?

生成式问答(Generative QA)就是指:

只用大语言模型(LLM) 来回答问题,不借助外部知识库或检索系统

也就是说,模型完全靠 自己“脑子里”的知识 来作答📦。


🧱 它的工作方式非常简单:

  1. 用户提问:“黑洞为什么是黑的?”

  2. 模型在它的训练知识中找答案(比如 GPT-4 训练时学到的物理知识)

  3. 生成一段自然语言的回答


📦 举个例子

🧑‍💬 用户问:

“牛顿三大定律分别是什么?”

🤖 生成式 QA(单独 LLM)回答:

“牛顿三大定律包括惯性定律、加速度定律和作用反作用定律,分别为:1. 物体不受外力将保持静止或匀速直线运动;2. F=ma;3. 作用力与反作用力大小相等方向相反。”

✅ 回答清晰、自然,不需要引用外部资料


🧠 它的“知识库”来自哪里?

就是它训练时候用的大量数据,比如:

  • 书籍、百科、论文

  • 互联网上的网页、论坛

  • GitHub、博客、维基百科...

一旦模型训练完成,它就像一位博览群书的“闭卷考生”,可以根据脑中的“印象”来作答📚🧠

  


3、RAG相比检索式 QA和生成式 QA的优势

三种 QA 模型的区别:

模型类型数据来源回答方式是否有“理解力”是否会幻觉
🔍 检索式 QA外部文档库(如 ES / BM25)直接返回原文片段❌ 没有,靠关键词匹配❌ 基本不会
🧾 生成式 QA模型训练时的知识自由生成✅ 有语义能力⚠️ 高,容易胡编
🤖 RAG检索结果 + LLM先检索再生成✅ 有理解能力✅ 较低,可控

✨ 那么,RAG 到底比它们强在哪儿?一起来看!👇

🎯 对比优势一:结合了“知识准确性”和“语言表达能力”

能力检索式 QA生成式 QA✅ RAG
🎯 找到正确知识
🗣️ 表达自然语言

RAG = 检索准确性(靠 Retriever) + 表达通顺性(靠 Generator)
→ 既懂又会说 💡🧠🗣️


🔍 对比优势二:支持开放域问答

传统检索式 QA 往往只适用于特定知识文档,
生成式 QA 又容易“张口就来”。

🎯 RAG 则可以面向任意问题,只要资料在知识库中,就能通过检索 + 推理生成高质量回答。


🧠 对比优势三:降低幻觉风险

幻觉 = 模型一本正经地编!

  • ❌ 生成式 QA:幻觉高(完全靠记忆)

  • ✅ RAG:只在模型读了真实资料后生成,幻觉概率大大降低

  • ✅ 检索式 QA:无幻觉,但用户要自己读


📚 对比优势四:回答内容有“证据”可查

RAG 可将使用过的文档片段一起返回,形成“可追溯”的问答系统。

💡 示例:

问题:公司的带薪年假制度是什么?

🤖 RAG 回答:

  • 🗣️ 回答:你每年有5天带薪年假,未使用的部分可延期1年。

  • 📎 来源文档片段:

    “员工年假为每年5个工作日,未休部分可结转至次年使用。”

✅ 回答可信 + 有出处
(相比之下,生成式 QA 没法告诉你“这句话是哪来的”)


🔄 对比优势五:知识可随时更新,无需重训

模型知识更新方式难度
生成式 QA重训练 LLM😖 非常难
检索式 QA更新文档库😀 简单
✅ RAG更新知识库 + 检索器✅ 非常灵活!

💡 RAG 只要更新知识库和 Embedding 就能快速响应新内容,例如法规变化、产品更新、新闻实时问答等。


🧩 总结一句话:

RAG = 检索的严谨 + 生成的聪明 🧠 + 知识的可控 📚
是目前大多数企业级智能问答系统的首选!


🎁 用表格总结一下三者对比:

维度检索式 QA生成式 QA✅ RAG
数据来源文档库模型记忆文档库
回答风格原文复制自由生成生成回答
表达能力❌ 弱✅ 强✅ 强
知识更新✅ 易更新❌ 难(需重训)✅ 易更新
是否可溯源✅ 可❌ 否✅ 可
幻觉概率❌ 无❌ 高⚠️ 低
技术难度⭐⭐⭐⭐⭐⭐⭐⭐

  

💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!   

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

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

相关文章

linux tftpboot烧写地址分析

1,loadaddr 是一个环境变量,用于指定文件(如内核镜像、设备树等)加载到内存的起始地址。setenv loadaddr 0x82000000setenv loadaddr 0x80008000saveenv //.保存配置将 loadaddr 设置为 0x82000000,表示后续文件将加载…

硬件工程师9月实战项目分享

目录 简介 人员情况 实战项目简介 功能需求 需求分析 方案设计 电源树设计 时钟树设计 主芯片外围设计 接口设计 模拟链路设计 PCB设计检查要点 测试方案设计 硬件测试培训 测试代码学习 培训目标 掌握基本的硬件设计流程 掌握以FPGA为核心的硬件设计业务知识 …

力扣刷题——59.螺旋矩阵II

力扣刷题——59.螺旋矩阵II 题目 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。示例 1:输入:n 3 输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2: 输…

win11系统还原点恢复系统

背景 系统换位bug11后,真的是各种以前的操作和设置找不到,太烦了,我是没想到,连系统恢复还原点都这么难找。然后搜了一圈都是恢复系统之类的,真的崩溃。只好自己记录了。 ✍内容找到设置—>系统–>系统信息系统信…

DHCP 原理与配置(一)

应用场景随着网络规模的不断扩大,网络复杂度不断提升,网络中的终端设备例如主机、手机、 平板等,位置经常变化。终端设备访问网络时需要配置IP地址、网关地址、DNS服务器 地址等。采用手工方式为终端配置这些参数非常低效且不够灵活。 IETF于…

SARibbon的编译构建及详细用法

目录 1.1 源码构建 1.2 搭建项目 1.3 详细用法 1.4 不同风格 1.5 完整代码 引言:SARibbon是一个专门为Qt框架设计的开源Ribbon风格界面控件库,它模仿了微软Office和WPS的Ribbon UI风格,适用于需要复杂菜单和工具栏的大型桌面程序。本文从源码编译构建到详细使用,做了一…

CSS【详解】性能优化

精简 CSS移除未使用的 CSS(“死代码”),可借助工具如 PurgeCSS、UnCSS 自动检测并删除未被页面使用的样式。避免重复样式,通过提取公共样式(如 mixin 或公共类)减少代码冗余。利用预处理器(Sass…

Flutter 线程模型详解:主线程、异步与 Isolate

一、主线程:默认的执行环境 所有代码默认运行在主线程。下面的例子展示了一个会阻塞主线程的错误示范: import package:flutter/material.dart;void main() {runApp(const MyApp()); }class MyApp extends StatelessWidget {const MyApp({super.key});ov…

ChartDB:可视化数据库设计工具私有化部署

ChartDB:可视化数据库设计工具私有化部署一、什么是ChartDB ChartDB 是一款基于 Web 的开源数据库可视化工具,专为简化数据库设计与管理流程而开发。以下是其核心特性与功能概述: 1、核心功能 智能查询可视化‌:通过单条 SQL 查询即可生成数据库架构图&a…

单片机-FreeRTOS(ing)

目录 一、基础介绍 1.1 调度策略 1.1.1 调度方式 1.1.2 调度器 1.2 任务以及优先级 1.2.1 任务与协程 1.2.2 任务状态 1.2.3 任务优先级 1.2.4 任务优先级分配方案 1.3 任务间通信 - 信号量 1.3.1 信号量 1.3.2 任务间计数信号量的实现 1.3.3 中断方式计数信号量的…

为什么调用API总返回404,该如何调试

当调用一个应用程序接口(API)时,持续地收到“404 未找到”的错误,其核心原因在于客户端发起的“请求”,未能成功地,匹配到服务器上任何一个“真实存在”的、可供访问的“资源路径”。这本质上,是…

医疗信息化自主可控转型的实践探索 —— 以常德二院为例

目录 头雁领航 - 激发医疗新质生产力 核心支撑 - 电科金仓奠定数据底座 生态共建 - 携手护航医疗信创发展 信创产业发展是国家经济数字化转型、提升产业链发展的关键,是科技自立自强的核心基座,其本质是实现中国信息化产业的自主可控。医疗信创作为关…

Gin传参和接收参数的方式

Gin查询参数和接收参数的方式 常用 Gin 绑定方法对比方法用途特点c.Bind()自动识别 Content-Type最通用,根据请求头自动选择绑定方式c.ShouldBindJSON()只绑定 JSON强制使用 JSON 格式,类型明确c.ShouldBindXML()只绑定 XML强制使用 XML 格式c.ShouldBin…

MariaDB/MySQL 客户端工具与服务端配置精要指南

文章目录一、客户端与服务端程序二、用户账号管理三、MySQL 客户端命令3.1 命令类型​3.2 使用模式​3.3 常用选项​3.4 提示符定制​四、mysqladmin管理命令​​五、服务端配置​5.1 配置文件​​​5.2 Socket 通信配置​​六、最佳实践总结免费个人运维知识库,欢迎…

自动化项目日报生成工具测评与选型:如何匹配团队日报管理需求

引言在项目管理场景中,手动撰写日报常面临多重效率瓶颈:任务数据分散在协作群、Excel 表格、项目看板等多个平台,汇总时需反复核对;不同成员日报格式不统一,管理层整合分析耗时;任务进度与日报信息不同步&a…

基于SpringBoot+Vue的吴韵苏香文旅小程序(协同过滤算法、Echarts图形化分析、腾讯地图API、二维码识别)

🎈系统亮点:协同过滤算法、Echarts图形化分析、腾讯地图API、二维码识别;一.系统开发工具与环境搭建1.系统设计开发工具后端使用Java编程语言的Spring boot框架 项目架构:B/S架构 运行环境:win10/win11、jdk17小程序&a…

python numpy.random的基础教程(附opencv 图片转数组、数组转图片)

目录 1.在区间[a,b)随机生成n个整数。 2.在区间[a,b)随机生成n个数。 3.在区间[0,1)生成随机数 4.打乱顺序 5.从指定的列表中选择 NumPy(Numerical Python)是一个开源的科学计算库,专门用于高效处理多维数组(ndarray&#xf…

Vue2.x核心技术与实战(二)

目录 三、Vue2.x:生命周期+工程化开发(组件入门) 3.1 生命周期 3.1.1 生命周期 & 生命周期四个阶段 3.1.2 生命周期钩子 Vue生命周期钩子案例 - 新闻列表 & 输入框自动聚焦 3.2 综合案例:小黑记账清单 3.3 工程化开发入门 3.3.1 工程化开发 & 脚手架Vue …

【鸿蒙心迹】7×24小时极限求生:当Origin_null遇上鸿蒙,我如何用100杯咖啡换一条跨域活路?

文章概要 大家好,我是那个把黑眼圈熬成华为工牌挂绳的倒霉蛋。过去100个夜晚,我在HarmonyOS NEXT的ArkWeb里被Origin:null反复按在地上摩擦——小程序白屏、OPTIONS 400、官方文档沉默三连击。最终,我用C、libcurl、OpenSSL和一堆速溶咖啡&am…

【git】删除一条本地提交的历史commit

在工程中,如果想要删除一条本地提交的历史commit,可以通过droprebase -i HEAD^n的方式。1.情景提交了三条commit,想删掉第二条commit。git logcommit_id_*******1 commit_id_*******2 commit_id_*******32.解决git rebase -i HEAD~2输出&…