【項目】GraphRAG基于知識圖譜的檢索增強技術-實戰入門

GraphRAG—基于知識圖譜的檢索增強技術

      • (一)GraphRAG入門介紹
      • (二)GraphRAG基本原理回顧
      • (三)GraphRAG運行流程
        • 3.1 索引(Indexing)過程
        • 3.2 查詢(Query)過程
        • 3.3 Prompt 調優
        • 3.4 GraphRAG計算流程極簡示例
      • (四)GraphRAG安裝與Indexing&Query流程實現
      • (五)GraphRAG API使用方法

(一)GraphRAG入門介紹

發展歷程

? 2024年2月,由微軟研究院提出GraphRAG基本思路;
? 2024年4月,同樣由微軟研究院發表相關論文《From Local to Global: A Graph RAG Approach to Query-Focused Summarization》,學術角度論證GraphRAG有效性;
? 2024年6月,正式發布GraphRAG項目…

GraphRAG 項目地址:https://github.com/microsoft/graphrag/

在這里插入圖片描述

檢索增強生成(RAG) 是一種通過結合真實世界的信息來提升大型語言模型(LLM)輸出質量的技術。RAG 技術是大多數基于 LLM 的工具中的一個重要組成部分。大多數 RAG 方法使用 向量相似性 作為檢索技術,我們將其稱為 基線 RAG(Baseline RAG)

RAG 技術在幫助 LLM 推理私有數據集方面顯示了很大的潛力——例如,LLM 沒有在訓練時接觸過的、企業的專有研究、業務文檔或通信數據。基線 RAG 技術最初是為了解決這個問題而提出的,但我們觀察到,在某些情況下,基線 RAG 的表現并不理想。以下是幾個典型的場景:

  1. 基線 RAG 很難將信息串聯起來:當一個問題的答案需要通過多個不同的信息片段,并通過它們共享的屬性來連接,進而提供新的綜合見解時,基線 RAG 表現得很差。
  2. 例如,在回答類似“如何通過現有的數據推斷出新結論”這種問題時,基線 RAG 無法很好地處理這些散布在不同文檔中的相關信息,它可能會遺漏一些關鍵聯系點。
  3. 基線 RAG 無法有效理解大型數據集或單一大文檔的整體語義概念:當被要求在大量數據或復雜文檔中進行總結、提煉和理解時,基線 RAG 往往表現不佳。
  4. 例如,如果問題要求對整個文檔或多篇文檔的主題進行總結和理解,基線 RAG 的簡單向量檢索方法可能無法處理文檔間的復雜關系,導致對全局語義的理解不完整。

為了應對這些挑戰,技術社區正在努力開發擴展和增強 RAG 的方法。微軟研究院(Microsoft Research)提出的 GraphRAG 方法,使用 LLM 基于輸入語料庫構建 知識圖譜。這個圖譜與社區總結和圖譜機器學習輸出結合,能夠在查詢時增強提示(prompt)。GraphRAG 在回答以上兩類問題時,展示了 顯著的改進,尤其是在 復雜信息的推理能力智能性 上,超越了基線 RAG 之前應用于私有數據集的其他方法。

在這里插入圖片描述

(二)GraphRAG基本原理回顧

? GraphRAG 是微軟研究院開發的一種先進的增強檢索生成(RAG)框架,旨在提升語言模型(LLM)在處理復雜數據時的性能。與傳統的 RAG 方法依賴向量相似性檢索不同,GraphRAG 利用 知識圖譜 來顯著增強語言模型的問答能力,特別是在處理私有數據集或大型、復雜數據集時表現尤為出色。

在這里插入圖片描述

傳統的 Baseline RAG 方法在某些情況下表現不佳,尤其是當查詢需要在不同信息片段之間建立聯系時,或是當需要對大規模數據集進行整體理解時。GraphRAG 通過以下方式克服了這些問題:

  • 更好的連接信息點:GraphRAG 能夠處理那些需要從多個數據點合成新見解的任務。
  • 更全面的理解能力:GraphRAG 更擅長對大型數據集進行全面理解,能夠更好地處理復雜的抽象問題。

而借助微軟開源的GeaphRAG項目,我們可以快速做到以下事項:

  • 基于圖的檢索:傳統的 RAG 方法使用向量相似性進行檢索,而 GraphRAG 引入了知識圖譜來捕捉實體、關系及其他重要元數據,從而更有效地進行推理。
  • 層次聚類:GraphRAG 使用 Leiden 技術進行層次聚類,將實體及其關系進行組織,提供更豐富的上下文信息來處理復雜的查詢。
  • 多模式查詢:支持多種查詢模式:
    • 全局搜索:通過利用社區總結來進行全局性推理。
    • 局部搜索:通過擴展相關實體的鄰居和關聯概念來進行具體實體的推理。
    • DRIFT 搜索:結合局部搜索和社區信息,提供更準確和相關的答案。
  • 圖機器學習:集成了圖機器學習技術,提升查詢響應質量,并提供來自結構化和非結構化數據的深度洞察。
  • Prompt 調優:提供調優工具,幫助根據特定數據和需求調整查詢提示,從而提高結果質量。

(三)GraphRAG運行流程

3.1 索引(Indexing)過程
  1. 文本單元切分:將輸入文本分割成 TextUnits,每個 TextUnit 是一個可分析的單元,用于提取關鍵信息。
  2. 實體和關系提取:使用 LLM 從 TextUnits 中提取實體、關系和關鍵聲明。
  3. 圖構建:構建知識圖譜,使用 Leiden 算法進行實體的層次聚類。每個實體用節點表示,節點的大小和顏色分別代表實體的度數和所屬社區。
  4. 社區總結:從下到上生成每個社區及其成員的總結,幫助全局理解數據集。
3.2 查詢(Query)過程

索引完成后,用戶可以通過不同的搜索模式進行查詢:

  • 全局搜索:當我們想了解整個語料庫或數據集的整體概況時,GraphRAG 可以利用 社區總結 來快速推理和獲取信息。這種方式適用于大范圍問題,如某個主題的總體理解。
  • 局部搜索:如果問題關注于某個特定的實體,GraphRAG 會向該實體的 鄰居(即相關實體)擴展搜索,以獲得更詳細和精準的答案。
  • DRIFT 搜索:這是對局部搜索的增強,除了獲取鄰居和相關概念,還引入了 社區信息 的上下文,從而提供更深入的推理和連接。
3.3 Prompt 調優

為了獲得最佳性能,GraphRAG 強烈建議進行 Prompt 調優,確保模型可以根據你的特定數據和查詢需求進行優化,從而提供更準確和相關的答案。

3.4 GraphRAG計算流程極簡示例

在這里插入圖片描述

(四)GraphRAG安裝與Indexing&Query流程實現

最新版GraphRAG特性如下:

(1)架構升級與知識圖譜構建優化

  • 智能化的知識圖譜構建
    GraphRAG 2.0 在數據預處理階段,通過大模型自動抽取文本中的實體及關系,構建出層次化的知識圖譜。相比傳統的簡單文本片段檢索,構建后的圖譜能夠以“社區”(topic-based clusters)的方式對數據進行組織,這樣不僅可以覆蓋全局信息,也能針對局部查詢給出更精準的答案。
  • 動態社區選擇機制
    新版本引入了動態社區選擇流程。系統會在生成響應之前,對知識圖譜中不同“社區”的相關性進行評估,從而僅保留與當前查詢最匹配的部分。這種機制能有效“丟棄”噪聲數據,提高檢索效率和答案的準確性。

(2)查詢流程與成本優化

  • **兩階段查詢流程:**GraphRAG 2.0 將整個流程拆分為“索引階段”和“查詢階段”:
    • 在索引階段,系統利用大模型對原始數據進行結構化處理,提取實體及其關系,構建分層知識圖譜;
    • 在查詢階段,則先進行初步的相關性測試,再利用經過動態社區篩選的信息來生成上下文豐富、精準的回答。
      這種分步處理不僅提高了檢索的廣度和深度,還能根據查詢需求靈活調用大模型。
  • Token消耗大幅降低
    為了應對大規模數據調用時高昂的成本,GraphRAG 2.0 對 LLM 的調用做了優化。據報道,在某些場景下整體 Token 消耗降低高達 77%,這使得系統在保證高質量回答的同時,也大幅提升了成本效率。
  • LazyGraphRAG 模式
    新版本還推出了“LazyGraphRAG”模式——一種結合了向量檢索和圖結構檢索優勢的方案。該模式采用迭代深化的方式,只有在必要時才調用資源密集型的大模型進行深度分析,從而實現了與傳統 GraphRAG 相比成本更低但效果相當的目標。

(3)搜索結果質量與應用擴展

  • 精準且上下文豐富的答案
    利用層次化的知識圖譜和動態社區篩選,GraphRAG 2.0 能夠生成更具有可解釋性和上下文關聯的答案。無論是全局性問題(例如“核心主題是什么?”)還是局部性查詢(如“誰、何時、何地”等),系統都能根據不同場景調整檢索策略,返回最相關的信息。
  • 多系統和多場景集成
    此外,新版本在設計上也更注重與其它系統的集成能力,例如在數字營銷場景中,通過與 URL 縮短服務、鏈接分析等工具相結合,為用戶提供定制化且綜合的查詢反饋。
# Step 1.使用pip安裝graphrag
pip install graphrag
pip show graphrag# Step 2.創建檢索項目文件夾
mkdir -p ./ragtest/input# Step 3.上傳數據集
目前GraphRAG只支持txt和csv兩種文本格式 https://whakv.xetslk.com/s/pxKHG 中會詳細介紹如何修改源碼,拓展支持文件類型。# Step 4.初始化項目文件
graphrag init --root ./ragtest# Step 5.修改項目配置
打開.env文件,填寫DeepSeek API-KEY或OpenAI API-Key
打開setting.yaml文件,填寫模型名稱和反向代理地址:# 【可選】Step 6.驗證API-KEY和反向代理地址是否可以正常運行
from openai import OpenAI
api_key = 'your-openai-api-key'
# 實例化客戶端
client = OpenAI(api_key=api_key, base_url="反向代理地址")
# 調用 GPT-4o-mini 模型
response = client.chat.completions.create(model="gpt-4o-mini",messages=[{"role": "user", "content": "你好,好久不見!"}]
)
# 輸出生成的響應內容
print(response.choices[0].message.content)
你好!好久不見!你最近怎么樣?有什么新鮮事分享嗎?
然后查看當前API-KEY可以調用的模型:models_list = client.models.list()
models_list.data# Step 7.借助GraphRAG腳本自動執行indexing
graphrag index --root ./ragtest
graphrag query --root ./ragtest --method local --query "請幫我介紹下ID3算法"

(五)GraphRAG API使用方法

## 1.初始化項目
from pathlib import Path
from pprint import pprint
import pandas as pd
import graphrag.api as api
from graphrag.config.load_config import load_config
from graphrag.index.typing.pipeline_run_result import PipelineRunResultmkdir -p ./graphrag/inputgraphrag init --root ./graphrag## 2.借助API進行Indexing過程
PROJECT_DIRECTORY = "./graphrag"
# 生成 GraphRagConfig 對象graphrag_config = load_config(Path(PROJECT_DIRECTORY))"""
索引 API
索引是指攝取原始文本數據并構建知識圖譜的過程。GraphRAG 目前支持純文本(.txt)和 .csv 文件格式。
構建索引
index_result: list[PipelineRunResult] = await api.build_index(config=graphrag_config)
[2025-03-19T13:17:26Z WARN  lance::dataset::write::insert] No existing dataset at /root/autodl-
tmp/MCP/graphrag/output/lancedb/default-entity-description.lance, it will be created
[2025-03-19T13:17:28Z WARN  lance::dataset::write::insert] No existing dataset at /root/autodl-
tmp/MCP/graphrag/output/lancedb/default-community-full_content.lance, it will be created
[2025-03-19T13:17:30Z WARN  lance::dataset::write::insert] No existing dataset at /root/autodl-
tmp/MCP/graphrag/output/lancedb/default-text_unit-text.lance, it will be created
"""
# index_result 是一個包含索引流水線各個工作流的列表,每個工作流代表一次索引構建過程。for workflow_result in index_result:status = f"error\n{workflow_result.errors}" if workflow_result.errors else "success"print(f"Workflow Name: {workflow_result.workflow}\tStatus: {status}")
"""
Workflow Name: create_base_text_units	Status: success
Workflow Name: create_final_documents	Status: success
Workflow Name: extract_graph	Status: success
Workflow Name: finalize_graph	Status: success
Workflow Name: create_communities	Status: success
Workflow Name: create_final_text_units	Status: success
Workflow Name: create_community_reports	Status: success
Workflow Name: generate_text_embeddings	Status: success
在此循環中,遍歷 index_result 列表,并打印每個工作流的名稱及其執行狀態。如果工作流中存在錯誤,則輸出錯誤信息,否則輸出 "success"。
"""## 2.借助API進行Query過程
# 查詢索引, 在查詢索引之前,必須先將多個索引文件加載到內存中,并傳遞給查詢 API。
entities = pd.read_parquet(f"{PROJECT_DIRECTORY}/output/entities.parquet")
communities = pd.read_parquet(f"{PROJECT_DIRECTORY}/output/communities.parquet")
community_reports = pd.read_parquet(f"{PROJECT_DIRECTORY}/output/community_reports.parquet"
)
# 上述代碼讀取 .parquet 格式的索引數據,包括 實體(entities)、社群(communities) 以及 社群報告(community_reports)。
# 執行全局搜索
query = "請幫我對比下ID3和C4.5決策樹算法優劣勢。并用中文進行回答。"
response, context = await api.global_search(config=graphrag_config,entities=entities,communities=communities,community_reports=community_reports,community_level=2,dynamic_community_selection=False,response_type="Multiple Paragraphs",query=query,
)
# 在這里,我們調用 global_search 方法,使用已加載的索引數據進行查詢。
community_level=2:設定社群層級為 2 級。
dynamic_community_selection=False:禁用動態社群選擇。
response_type="Multiple Paragraphs":設置返回的查詢結果為多段落格式。
query=query:查詢問題為 **"請幫我對比下ID3和C4.5決策樹算法優劣勢。并用中文進行回答。"**# 解析查詢結果
print(response)"""
在決策樹算法的發展歷程中,ID3算法和C4.5算法是兩個非常重要的里程碑。它們各自具有獨特的特點和應用場景,以下是對這兩種算法優劣勢的對比分析。### ID3算法ID3算法是決策樹算法的先驅,它使用信息熵作為選擇分裂規則的標準。這種方法的優點在于其簡單性,使得算法在處理較小或者較簡單的數據集時計算效率較高。然而,ID3算法也存在一些明顯的局限性。首先,它無法直接處理連續特征,這在實際應用中是一個較大的限制。其次,ID3沒有機制來防止過擬合,這意味著在處理更復雜的數據集時,其性能可能不如預期 [Data: Reports (10)]。### C4.5算法C4.5算法在ID3的基礎上進行了顯著的改進。首先,它引入了增益率(Gain Ratio)和信息價值(Information Value)來優化數據分割過程,這不僅解決了ID3處理連續變量不足的問題,還通過引入增益率來減少對具有更多類別的屬性的偏見。其次,C4.5通過剪枝過程改善了決策樹的泛化能力,有效減少了過擬合的風險。然而,這些改進也使得C4.5算法的計算復雜度增加,尤其是在處理大規模數據集時 [Data: Reports (2, 11, +more)]。### 總結總的來說,ID3算法以其簡單高效著稱,適合于處理較小或簡單的數據集。而C4.5算法則在ID3的基礎上做了重要改進,不僅能夠處理連續變量,還通過剪枝過程減少了過擬合的風險,使其更適合處理復雜的數據集。然而,這些改進也帶來了更高的計算復雜度。因此,在選擇使用哪種算法時,需要根據實際的數據特性和應用場景做出合理的決策。
response 變量是 GraphRAG 返回的正式查詢結果。
"""print(context)
"""
{'reports':     id                                              title  occurrence weight  \
0    2  Evolution of Decision Tree Algorithms: From ID...           1.000000   
1    3  Scikit-Learn Ecosystem: A Comprehensive Machin...           0.916667   
2   11  Evolution of Decision Tree Algorithms: From C4...           0.833333   
3    0  CART and Its Foundational Impact on Machine Le...           0.833333   
4   13                             Scikit-Learn Ecosystem           0.750000   
5    5  Machine Learning Ecosystem: Scikit-Learn, CART...           0.666667   
6   10         Decision Tree Models and Metrics Community           0.666667   
7   21                      Python Data Science Ecosystem           0.416667   
8    9  Friedman and the Evolution of Boosting Algorithms           0.416667   
9   15                Scikit-Learn Decision Tree Analysis           0.416667   
10  22           Decision Tree Algorithms: CART and CHAID           0.333333   
11   8  Statistical Measures and Predictive Modeling C...           0.333333   
12  14    Scikit-learn's DecisionTreeClassifier Ecosystem           0.250000   
13   4  Decision Tree Parameters and Strategies in skl...           0.250000   
14  18                 Decision Tree Parameters Community           0.250000   
15  19           Decision Tree Model Parameters Community           0.166667   
16  16  Decision Tree Model Strategies and Randomness ...           0.166667   
17  20   Aurélien Géron and Machine Learning Technologies           0.083333   
18  12         GR, IG, and IV in Decision Tree Algorithms           0.083333   
19   7  CART and Its Foundational Impact on Machine Le...           0.500000   
20   6  Decision Tree Analysis and Income-Credit Ratin...           0.333333   
21   1  Logistic Regression and Its Ecosystem in Machi...           0.333333   
22  17  ExtraTreeClassifier and Its Parameters in Sklearn           0.083333   content  rank  
0   # Evolution of Decision Tree Algorithms: From ...   8.5  
1   # Scikit-Learn Ecosystem: A Comprehensive Mach...   8.5  
2   # Evolution of Decision Tree Algorithms: From ...   8.5  
3   # CART and Its Foundational Impact on Machine ...   8.5  
4   # Scikit-Learn Ecosystem\n\nThe Scikit-Learn (...   8.5  
5   # Machine Learning Ecosystem: Scikit-Learn, CA...   8.5  
6   # Decision Tree Models and Metrics Community\n...   7.5  
7   # Python Data Science Ecosystem\n\nThe communi...   8.5  
8   # Friedman and the Evolution of Boosting Algor...   8.5  
9   # Scikit-Learn Decision Tree Analysis\n\nThis ...   7.5  
10  # Decision Tree Algorithms: CART and CHAID\n\n...   7.5  
11  # Statistical Measures and Predictive Modeling...   7.5  
12  # Scikit-learn's DecisionTreeClassifier Ecosys...   8.0  
13  # Decision Tree Parameters and Strategies in s...   7.5  
14  # Decision Tree Parameters Community\n\nThis c...   7.5  
15  # Decision Tree Model Parameters Community\n\n...   7.5  
16  # Decision Tree Model Strategies and Randomnes...   7.5  
17  # Aurélien Géron and Machine Learning Technolo...   8.5  
18  # GR, IG, and IV in Decision Tree Algorithms\n...   7.5  
19  # CART and Its Foundational Impact on Machine ...   8.5  
20  # Decision Tree Analysis and Income-Credit Rat...   7.5  
21  # Logistic Regression and Its Ecosystem in Mac...   7.5  
22  # ExtraTreeClassifier and Its Parameters in Sk...   7.5  }
context 變量包含關于查詢過程的詳細元數據,包括:查詢過程中檢索到的數據信息
被用于構建上下文的文本片段
其他元數據
深入分析 context 對象可以獲取更精細的信息,比如LLM 模型最終使用的文本數據來源。
"""
# 3.封裝函數完成GraphRAG Query
async def rag_ML(query: str) -> str:"""輸入機器學習領域相關問題,獲得問題答案。:param query: 機器學習領域的相關問題:return: query問題對應的答案"""PROJECT_DIRECTORY = "/root/autodl-tmp/MCP/mcp-graphrag/graphrag"graphrag_config = load_config(Path(PROJECT_DIRECTORY))# 加載實體entities = pd.read_parquet(f"{PROJECT_DIRECTORY}/output/entities.parquet")# 加載社區communities = pd.read_parquet(f"{PROJECT_DIRECTORY}/output/communities.parquet")# 加載社區報告community_reports = pd.read_parquet(f"{PROJECT_DIRECTORY}/output/community_reports.parquet")# 進行全局搜索response, context = await api.global_search(config=graphrag_config,entities=entities,communities=communities,community_reports=community_reports,community_level=2,dynamic_community_selection=False,response_type="Multiple Paragraphs",query=query,)return response
query = '請幫我對比下ID3和C4.5決策樹算法優劣勢。并用中文進行回答。'
await rag_ML(query)
"""
'### ID3算法與C4.5算法的對比\n\n#### ID3算法概述\n\nID3算法是由Ross Quinlan開發的決策樹算法的早期版本,它主要通過信息增益(Information Gain)作為選擇屬性的標準,專注于處理分類問題。ID3算法的主要優點在于其簡單直觀,易于理解和實現,使其成為決策樹算法中的一個重要基石 [Data: Reports (1, 13)]。然而,ID3算法存在幾個顯著的限制,包括無法直接處理連續屬性和缺失值,以及缺乏有效的過擬合預防措施,這些限制可能會影響算法的泛化能力和應用范圍 [Data: Reports (1, 13)]。\n\n#### C4.5算法改進\n\nC4.5算法是在ID3的基礎上進行改進的,同樣由Ross Quinlan開發。C4.5算法的主要改進包括引入信息增益率(Gain Ratio)來選擇屬性,這一改進解決了ID3算法在屬性選擇時偏向于選擇取值多的屬性的問題。此外,C4.5算法能夠處理連續屬性和缺失值,并引入了剪枝技術來減少過擬合的風險,從而提高了模型的泛化能力 [Data: Reports (1, 13)]。C4.5算法的這些改進使得它更加健壯,適用于更廣泛的數據集。然而,需要注意的是,C4.5算法的計算復雜度較高,尤其是在處理大型數據集時,這可能會成為其應用的一個限制 [Data: Reports (1, 13)]。\n\n#### 總結\n\n總的來說,C4.5算法在功能上對ID3算法進行了顯著的改進,包括處理連續屬性和缺失值的能力,以及引入剪枝策略來避免過擬合問題,這些改進顯著提高了決策樹模型的泛化能力。然而,這些改進也帶來了更高的計算復雜度,特別是在處理大規模數據集時 [Data: Reports (1, 13)]。因此,在選擇使用ID3算法還是C4.5算法時,需要根據具體的應用場景和數據集的特點來權衡算法的優勢和潛在的限制。'
"""

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/88593.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/88593.shtml
英文地址,請注明出處:http://en.pswp.cn/web/88593.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Zookeeper添加SASL安全認證 修復方案

#作者:任少近 文章目錄1修復背景2 修復方案說明3 配置流程3.1停止zookeeper服務3.2Zookeeper添加SASL參數3.3配置jaas密碼文件3.4 添加啟動參數3.5啟動zookeeper服務3.6訪問測試4 Kafka連接zookeeper服務端配置4.1未配置身份認證4.2停止kafka服務4.3配置身份認證4.4…

AI進化論07:第二次AI寒冬——AI“改頭換面”,從“AI”變成“機器學習”

書接上回,上回咱們聊了神經網絡在第一次寒冬中的“蟄伏”與“萌動”。但別高興太早,AI很快就迎來了它的第二次“寒冬”(大概從20世紀80年代末到90年代中期)。這次寒冬啊,比第一次還“冷”,還“漫長”。AI這…

基于開源AI智能名片鏈動2+1模式與S2B2C商城小程序的渠道選擇策略研究

摘要:在數字化商業環境下,品牌與產品的渠道選擇對其市場推廣和運營成功至關重要。本文聚焦于如何依據自身品牌和產品特性,結合開源AI智能名片鏈動21模式與S2B2C商城小程序,運用科學的渠道選擇方法,慎重挑選1 - 2個適宜…

開源 C# .net mvc 開發(八)IIS Express輕量化Web服務器的配置和使用

文章的目的為了記錄.net mvc學習的經歷。本職為嵌入式軟件開發,公司安排開發文件系統,臨時進行學習開發,系統上線3年未出沒有大問題。開發流程和要點有些記憶模糊,趕緊記錄,防止忘記。 相關鏈接: 開源 C# .net mvc 開…

PostgreSQL安裝及簡單應用

下載地址:EDB: Open-Source, Enterprise Postgres Database Management 安裝 注意:端口號默認是5432 配置dbeaver應用,創建數據庫和表 -- 創建模式(如果不存在) CREATE SCHEMA IF NOT EXISTS bbbase;-- 創建序列&…

wedo智能車庫-----第31節(免費分享圖紙)

夸克網盤:https://pan.quark.cn/s/10302f7bbae0 高清圖紙源文件,需要的請自取

【springboot】IDEA創建SpringBoot簡單工程(有插件)

需求 使用SpringBoot開發一個web應用,瀏覽器發起請求/hello后,給瀏覽器返回字符串 hello world~ 步驟 1.創建Maven工程 2.導入spring-boot-stater-web起步依賴 3.編寫controller 4.提供啟動類 pom.xml文件了解 啟動類 新建包 創建類 package com.zw…

python正則表達式re(Regular Expression)

目錄 正則表達式: match()函數: search()函數: findall()函數: 正則表達式的參數: 表示字符范圍的參數: 表示字符出現的次數的參數: 表示同一類字符的參數: 貪婪和非貪婪模式…

事件驅動設計:Spring監聽器如何像咖啡師一樣優雅處理高并發

架構哲學:當咖啡店面對洶涌客流時,真正的優雅不是更快的動作,而是科學的協作機制。Spring事件驅動正是通過發布-訂閱模式,讓系統像頂級咖啡師般從容應對突發流量。一、從咖啡店看監聽器本質:3大核心組件拆解 場景還原&…

C++ const 關鍵字解析

const 是 C 中用于定義常量或指定不可變性的關鍵字,它在不同上下文中有不同的含義和用法。下面是對 const 的全面解析:1. 基本用法定義常量const int MAX_SIZE 100; const double PI 3.14159;這些值在程序運行期間不能被修改必須在定義時初始化與指針結…

[es自動化更新] Updatecli編排配置.yaml | dockerfilePath值文件.yml

鏈接:https://github.com/elastic/elasticsearch/tree/main/build-conventions elasticsearch自動化更新 本專欄使用updatecli實現自動化版本更新與依賴管理。 其配置通過編排文件(updatecli-compose.yaml)實現,該文件羅列了稱…

新手向:使用Python將多種圖像格式統一轉換為JPG

本文將詳細解析一個專業的Python腳本,它能夠將指定文件夾中的所有非JPG格式圖像批量轉換為JPG格式。這個腳本雖然代碼量不大,但包含了文件操作、圖像處理、異常處理等多個重要編程概念,非常適合初學者系統學習。環境準備在開始之前&#xff0…

深入剖析C++ RPC框架原理:有棧協程與分布式系統設計

深入剖析C RPC框架原理:有棧協程與分布式系統設計 🛠? 第一部分:RPC框架核心原理與技術架構 🌐 1.1 RPC在分布式系統中的核心地位 遠程過程調用(RPC)是現代分布式系統的基石,它實現了&#xf…

基于springboot+Vue的二手物品交易的設計與實現

基于springbootVue的二手物品交易的設計與實現 作者: Mr順 | 某大廠全棧開發工程師 | CSDN新星計劃導師 | Java領域優質創作者 技術棧: SpringBoot, JavaWeb, 數據庫等。精通Java、微信小程序開發。 項目亮點: 完整可運行: 提供…

騰訊云輕量服務器創建快照免費API接口教程

接口簡介 該API用于騰訊云輕量服務器系統盤快照創建,無需關機即可自動刪除舊快照并創建新快照。特點包括: 不占用騰訊云快照配額支持自動備份策略適用于定時備份任務僅支持系統盤快照(云硬盤需調用專用接口) ?請求地址? https…

C++中的智能指針(1):unique_ptr

一、背景普通指針是指向某塊內存區域地址的變量。如果一個指針指向的是一塊動態分配的內存區域,那么即使這個指針變量離開了所在的作用域,這塊內存區域也不會被自動銷毀。動態分配的內存不進行釋放則會導致內存泄漏。如果一個指針指向的是一塊已經被釋放…

HTTPS安全機制:從加密到證書全解析

目錄 1.HTTPS是什么 2.加密是什么 3.HTTPS的加密過程 3.1對稱加密 3.2非對稱加密 4.引入證書 4.1"中間人"攻擊 4.2 引入證書機制 4.3 理解數據簽名 4.4 非對稱加密 對稱加密 證書認證 5.常見問題 5.1 Fiddler等抓包工具,為啥能解析HTTPS的數據…

2024年深度學習技術主要發展分析

摘要:深度學習作為人工智能領域的戰略級技術,在2024年持續取得突破性進展,持續重構現代戰爭規則,成為大國軍事智能化競爭的核心角力點。對2024年深度學習技術熱門領域的主要發展進行了綜合評述。研究了深度學習技術的發展現狀&…

Swift 枚舉:深入理解與高效使用

Swift 枚舉:深入理解與高效使用 引言 Swift 枚舉(Enum)是 Swift 編程語言中的一種基本數據類型,它允許我們將一組相關的值組合在一起。枚舉在 Swift 中有著廣泛的應用,從簡單的數據分類到復雜的業務邏輯處理,枚舉都能發揮巨大的作用。本文將深入探討 Swift 枚舉的原理、…

從大模型到云游戲,國鑫SY8108G-G4如何化身“全能AI引擎”?

當大模型參數量突破萬億級,傳統服務器在散熱枷鎖與擴展瓶頸前舉步維艱。國鑫全新推出的 SY8108G-G4 8U8卡AI服務器 ,以顛覆性架構支持8張600W GPU全速并行,結合CPU-GPU直連、冗余電源和彈性擴展三大優勢,為AI訓練、生成式創作、數…