深入 RAG(檢索增強生成)系統架構:如何構建一個能查資料的大語言模型系統

🐇明明跟你說過:個人主頁

🏅個人專欄:《深度探秘: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輸出&…