【項目】基于MCP+Tabelstore架構實現知識庫答疑系統

基于MCP+Tabelstore架構實現知識庫答疑系統

    • 整體流程設計
      • (一)Agent 架構
      • (二)知識庫存儲
        • (1)向量數據庫Tablestore
        • (2)MCP Server
      • (三)知識庫構建
        • (1)對文本進行切段并提取 FAQ
        • (2)寫入知識庫和 FAQ 庫
      • (四)知識庫檢索
      • (五)知識庫問答
    • 項目實踐一
      • (1)創建知識庫存儲實例
      • (2)啟動MCP Server
      • (3)導入知識庫
      • (4)檢索知識庫
      • (5)基于知識庫進行問答
    • 項目實踐二:利用CherryStudio實現MCP
      • (1)效果
        • 1.1 寫入到Tablestore
        • 1.2 搜索文檔
      • (2)流程
      • (3)本地運行
        • 3.1 下載源碼
        • 3.2 準備環境
        • 3.3 配置環境變量
        • 3.4 Embedding
        • 3.5 運行 MCP 服務
      • (4)集成三方工具
        • 4.1 Cherry Studio
      • (5)拓展應用場景

整體流程設計

在這里插入圖片描述

主要分為兩部分:知識庫構建和檢索。

1.知識庫構建

  • 文本切段:對文本進行切段,切段后的內容需要保證文本完整性以及語義完整性。
  • 提取 FAQ:根據文本內容提取 FAQ,作為知識庫檢索的一個補充,以提升檢索效果。
  • 導入知識庫:將文本和 FAQ 導入知識庫,并進行 Embedding 后導入向量。

2.知識檢索(RAG)

  • 問題拆解:對輸入問題進行拆解和重寫,拆解為更原子的子問題。
  • 檢索:針對每個子問題分別檢索相關文本和 FAQ,針對文本采取向量檢索,針對 FAQ 采取全文和向量混合檢索。
  • 知識庫內容篩選:針對檢索出來的內容進行篩選,保留與問題最相關的內容進行參考回答。

相比傳統的 Naive RAG,在知識庫構建和檢索分別做了一些常見的優化,包括 Chunk 切分優化、提取 FAQ、Query Rewrite、混合檢索等。

(一)Agent 架構

在這里插入圖片描述

整體架構分為三個部分:

  • 知識庫:內部包含 Knowledge Store 和 FAQ Store,分別存儲文本內容和 FAQ 內容,支持向量和全文的混合檢索。
  • MCP Server:提供對 Knowledge Store 和 FAQ Store 的讀寫操作,總共提供 4 個 Tools。
  • 功能實現部分:完全通過 Prompt + LLM 來實現對知識庫的導入、檢索和問答這幾個功能。

具體實現

所有代碼開源在這里,分為兩部分:

  • Python 實現的 Client 端:實現了與大模型進行交互,通過 MCP Client 獲取 Tools,根據大模型的反饋調用 Tools 等基本能力。通過 Prompt 實現了知識庫構建、檢索和問答三個主要功能。
  • Java 實現的 Server 端:基于 Spring AI 框架實現 MCP Server,由于底層存儲用的是 Tablestore,所以主體框架是基于這篇文章的代碼進行改造。

(二)知識庫存儲

(1)向量數據庫Tablestore

知識庫存儲選擇 Tablestore(向量檢索功能介紹),主要原因為:

  • 簡單易用:僅一個創建實例步驟后即可開始使用,Serverless 模式無需管理容量和后續運維。
  • 低成本:完全按量計費,自動根據存儲規模水平擴展,最大可擴展至 PB 級。當然如果采用本地知識庫肯定是零成本,但這里實現的是一個企業級、可通過云共享的知識庫。
  • 功能完備:支持全文、向量和標量等檢索功能,支持混合檢索。
(2)MCP Server

實現了 4 個 Tools(具體注冊代碼可參考 TablestoreMcp),相關描述如下:

Tools功能給 LLM 的描述輸入參數輸出結果
storeKnowledge寫入知識庫內容,同時進行 Embedding 后寫入向量。Store document into knowledge store for later retrieval.{
“content”:“知識庫內容”, “meta_data”: { “source”: “文檔” }
}
{
“content”: [
{ “type”: “text”,
“text”: “null” }
],
“isError”: false
}
searchKnowledge對知識庫進行向量檢索提取內容Search for similar documents on natural language descriptions from knowledge store.{
“query”: “知識庫內容”, “size”: 100
}
{
“content”: [
{ “type”: “text”,
“text”: “[{“content”:“知識庫內容”,“meta_data”:{“source”:“文檔”}}]}” } ],
“isError”: false
}
storeFAQ寫入 FAQ 內容,問題和答案分別寫入 Question 和 Answer 兩個字段,Question 字段額外進行 Embedding 后寫入向量。Store document into FAQ store for later retrieval.{
“question”: “問題”, “answer”: “答案”
}
{
“content”: [ {
“type”: “text”,
“text”: “null” } ],
“isError”: false
}
searchFAQ通過對 Question 的全文和向量的混合檢索來提取內容。Search for similar documents on natural language descriptions from FAQ store.{
“query”: “問題”, “size”: 100
}
{
“content”: [{
“type”: “text”,
“text”: “[{“question”:“問題”,“answer”:“答案”}]” } ],
“isError”: false
}

(三)知識庫構建

(1)對文本進行切段并提取 FAQ

完全通過提示詞來完成,可根據自己的要求進行調優。

提示詞輸入輸出
需要將以下文本切段,并根據文本內容整理 FAQ。文本切段的要求:
<1>保證語義的完整性:不要將一個完整的句子切斷,不要把表達同一個語義的不同句子分割開
<2>保留足夠多的上下文信息:如果切割后的文本段必須依賴上下文信息才能表達正確的語義,那就不能切割開
<3>過濾無效信息:過濾格式化內容如大量填充的空格,過濾不完整的段落以及過濾
<4>移除 markdown 內容的標記,層次關系按 1, 2, 3 以及 1.1, 2.1 來標記
<5>只保留文本內容,移除鏈接等信息
<6>不要對標題單獨切段:僅對正文進行切段,標題可以與正文合并一起,或者是作為上下文信息擴充進正文分段內
<7>切段后的文本如果不是一個完整的句子,請修改為一個完整表述的句子
表格存儲向量檢索在原有的 DiskANN 算法之上進行優化,提供大規模和高性能的向量檢索服務。前期,我們也先對用戶提供了基于 HNSW 的圖算法,但是發現明顯的性能問題,HNSW 對內存要求很高,很難支撐大規模數據,當內存不足時,HNSW 訪問磁盤的性能較差。表格存儲上的用戶大多數數量相對較大,HNSW 的規模和成本問題不符合我們產品的定位,我們希望可以讓更多的數據可以低成本的使用上向量能力,因此我們后續廢棄掉了 HNSW 算法,使用 DiskAnn 重新實現了向量檢索能力。{
“Chunks”: [ “表格存儲向量檢索在原有的 DiskANN 算法之上進行優化,提供大規模和高性能的向量檢索服務。前期,我們也先對用戶提供了基于 HNSW 的圖算法,但是發現明顯的性能問題。”, “HNSW 對內存要求很高,很難支撐大規模數據,當內存不足時,HNSW 訪問磁盤的性能較差。表格存儲上的用戶大多數數量相對較大,HNSW 的規模和成本問題不符合我們產品的定位。”, “我們希望可以讓更多的數據可以低成本使用上向量能力,因此我們后續廢棄掉了 HNSW 算法,使用 DiskAnn 重新實現了向量檢索能力。” ] }
{ “FAQ”: [
{“Question”: “表格存儲向量檢索使用了什么算法?”,
“Answer”: “表格存儲向量檢索在原有的 DiskANN 算法之上進行了優化,提供大規模和高性能的向量檢索服務。” },
{“Question”: “為什么最初選擇了 HNSW 圖算法?”,
“Answer”: “前期對用戶提供了基于 HNSW 的圖算法,但發現其存在明顯的性能問題。” },
{“Question”: “HNSW 算法的主要缺點是什么?”,
“Answer”: “HNSW 對內存要求很高,難以支撐大規模數據,且在內存不足時訪問磁盤的性能較差。”},
{ “Question”: “為什么廢棄了 HNSW 算法?”,
“Answer”: “HNSW 的規模和成本問題不符合表格存儲產品的定位,無法滿足大規模數據低成本使用向量能力的需求。” },
{“Question”: “表格存儲最終采用什么算法替代 HNSW?”,
“Answer”: “后續廢棄了 HNSW 算法,使用 DiskANN 重新實現了向量檢索能力。” } ] }

以上是一個示例,可以看到通過大模型能比較準確的對文本進行切段并提取 FAQ。這種方式的優勢是切段的文本能保證完整性以及語義一致性,能夠比較靈活的對格式做一些處理。提取的 FAQ 很全面,對于簡單問題的問答通過直接搜索 FAQ 是最準確直接的。最大的缺點就是執行比較慢并且成本較高,一次會消耗大量的 Token,不過好在是一次性的投入。

(2)寫入知識庫和 FAQ 庫

這一步也是通過提示詞來完成,基于 MCP 架構可以非常簡單的實現,樣例如下:

操作類型提示詞模板
寫入知識庫將以下內容存儲入 Knowledge 知識庫內:%s
寫入 FAQ將以下內容存儲入 FAQ 庫內:
Question:%s
Answer:%s

(四)知識庫檢索

同樣這一步也是通過提示詞加 MCP 來實現,非常的簡單,樣例如下:

提示詞模板檢索條件檢索結果
你是產品答疑助手,在回答問題之前請先檢索 Knowledge 庫和 FAQ 庫:
1. 先理解問題并對問題進行拆解,拆解成多個子問題。
2. 每個子問題同時檢索 Knowledge 庫和 FAQ 庫,每次檢索結果不超過 20 條
3. 對檢索的內容進行篩選,保留與問題最相關的內容,Knowledge 和 FAQ 分別不超過 10 條。
最后合并檢索內容,返回與檢索內容最相關的 20 條,直接返回檢索的結果,樣例如下:
1. 如果是 Knowledge,格式為:Knowledge:<結果一>
2. 如果是 FAQ,格式為:FAQ:<結果二>
檢索內容:%s
Tablestore 底層向量索引算法選擇了哪種實現?Knowledge:表格存儲向量檢索在原有的 DiskANN 算法之上進行優化。
Knowledge:表格存儲上的用戶大多數數據量相對較大。
FAQ:為什么最初選擇了 HNSW 圖算法?
FAQ:為了給用戶提供一種向量檢索的服務選項。
FAQ:表格存儲向量檢索是基于什么算法實現的?
FAQ:表格存儲向量檢索是在原有的 DiskANN 算法基礎上進行了優化。

通過提示詞描述實現了一個稍微復雜點的檢索:

  • 1.先對問題進行拆解,拆解為更原子的子問題。

  • 2.每個子問題分別檢索知識庫和 FAQ,檢索結果匯總后篩選留下與問題最相關的內容。

  • 3.按照格式返回結果。

(五)知識庫問答

直接看下提示詞和效果

提示詞模板問題答案
你是產品答疑助手,在回答問題之前請先檢索 Knowledge 庫和 FAQ 庫:
1. 先理解問題并對問題進行拆解,拆解成多個子問題,子問題盡量是比較小比較原子的問題。
2. 每個子問題同時檢索 Knowledge 庫和 FAQ 庫,每次檢索結果不超過 10 條,最后合并所有子問題的檢索結果。
對檢索的內容進行篩選,保留與問題最相關的檢索結果,利用檢索到的內容進行回答,不要亂給答案。
我的問題是:%s
Tablestore 底層向量索引算法選擇了哪種實現?Tablestore 底層向量索引算法選擇了 DiskANN 算法實現。
最初,Tablestore 曾嘗試使用 HNSW (Hierarchical Navigable Small World) 圖算法來提供向量檢索服務。
然而,HNSW 對內存要求很高,難以支撐大規模數據。當內存不足時,HNSW 訪問磁盤的性能極差。考慮到大多數用戶的大量數據需求以及希望讓更多的數據能夠以較低成本使用上向量能力的愿望,
最終決定不再使用 HNSW 算法,而是基于 DiskANN 算法進行了優化,提供了大規模和高性能的向量檢索服務。

從 MCP Server 的 Log 內可以看到自動調用了知識庫和 FAQ 的檢索工具,并能根據之前導入的內容進行回答。

項目實踐一

開源地址:aliyun/alibabacloud-tablestore-mcp-server

(1)創建知識庫存儲實例

可通過命令行工具(下載地址)來創建 Tablestore 實例,參考這個文檔先進行配置。

配置成功后執行以下命令進行實例創建,實例名自行選擇,需要保證 Region 內唯一。

tablestore> create_instance -r cn-hangzhou -d 'Knowledge store for AI Agent.' -n 'my-store' done

(2)啟動MCP Server

啟動前需要在環境變量內配置如下幾個參數:

變量名必填含義默認值
TABLESTORE_INSTANCE_NAME是(yes)實例名-
TABLESTORE_ENDPOINT是(yes)實例訪問地址-
TABLESTORE_ACCESS_KEY_ID是(yes)秘鑰 ID-
TABLESTORE_ACCESS_KEY_SECRET是(yes)秘鑰 SECRET-

可參考代碼庫 README 內的步驟進行啟動,也可將項目導入 IDE 后直接運行 App 這個類,啟動后會自動初始化表和索引。

(3)導入知識庫

這一步需要執行代碼庫內的 knowledge_manager.py 工具,執行前需要先配置訪問大模型的 API-KEY,默認采用 qwen-max。

export LLM_API_KEY=sk-xxxxxx

請自行準備知識庫文檔,使用 markdown 格式,執行如下:

在這里插入圖片描述

(4)檢索知識庫

執行如下:

在這里插入圖片描述

(5)基于知識庫進行問答

在這里插入圖片描述

項目實踐二:利用CherryStudio實現MCP

(1)效果

這里展示 2 個 tool 的能力,一個是存儲工具,一個是搜索工具。 我們使用的軟件是熱門的開源軟件 cherry-studio, 使用的大模型是通義千問的 qwen-max 模型

1.1 寫入到Tablestore

cherry-studio 使用示例如下圖:

在這里插入圖片描述

python Server 端代碼的寫入日志如下圖:

在這里插入圖片描述

Tablestore(表格存儲) 控制臺數據存儲結果如下圖:

在這里插入圖片描述

1.2 搜索文檔

Tablestore(表格存儲) 的多元索引支持向量、標量、全文檢索等各種類型的組合查詢,該示例代碼中使用了混合檢索,如需更復雜的查詢,可以參考文章最后的“貢獻代碼和二次開發”章節了解如何自定義開發。

cherry-studio 搜索查詢示例如下圖:

在這里插入圖片描述

python Server 端的查詢日志如下圖:

在這里插入圖片描述

Tablestore(表格存儲) 控制臺數據也可以進行查詢,這里以全文檢索示例:

在這里插入圖片描述

(2)流程

在這里插入圖片描述

MCP server 提供的 2 個工具十分簡單:

  1. 寫入: 文檔經過 MCP server 內置的 Embedding ( 默認為 BAAI/bge-base-zh-v1.5 ) 模型,寫入到Tablestore(表格存儲)即可。
  2. 查詢: 用戶的查詢文本經過 MCP server 內置的 Embedding 模型轉成向量,然后調用表格存儲的 多元索引即可,其內部使用了 向量檢索 和 全文檢索 進行混合查詢,最終召回用戶期望的結果。

(3)本地運行

3.1 下載源碼
  1. 使用 git clone 將代碼下載到本地。
  2. 進入 python 源碼的根目錄:cd tablestore-mcp-server/tablestore-python-mcp-server
3.2 準備環境

代碼需要 python3.10 版本以上進行構建,使用了 uv 進行包和環境管理。

安裝 uv:

# 方式1:使用現有 python3 安裝 uv
pip3 install uv
# 方式2:源碼安裝 uv:
curl -LsSf https://astral.sh/uv/install.sh | sh

準備 Python 環境:

如果本地有 python3.10 版本以上環境,無需執行這一小步。

因為我們項目至少需要 python3.10 版本,這里使用 python3.12 進行示例。

# 查看當前有哪些 python 環境
uv python list
# 如果沒有python 3.12.x 相關版本,請安裝 python3.12 版本. 內部會從 github 下載 uv 官方維護的 python 包。 
uv python install 3.12

創建虛擬環境:

# 使用 python 3.12 版本當做虛擬環境
uv venv --python 3.12
3.3 配置環境變量

代碼里所有的配置是通過環境變量來實現的,出完整的變量見下方表格。 主要依賴的數據庫 Tablestore(表格存儲) 支持按量付費,使用該工具,表和索引都會自動創建,僅需要在控制臺上申請一個實例即可。

變量名必填含義默認值
SERVER_HOSTMCP server 的 host0.0.0.0
SERVER_PORTMCP server 的 port8001
TABLESTORE_INSTANCE_NAME是(yes)實例名-
TABLESTORE_ENDPOINT是(yes)實例訪問地址-
TABLESTORE_ACCESS_KEY_ID是(yes)秘鑰 ID-
TABLESTORE_ACCESS_KEY_SECRET是(yes)秘鑰 SECRET-
TABLESTORE_TABLE_NAME表名ts_mcp_server_py_v1
TABLESTORE_INDEX_NAME索引名ts_mcp_server_py_index_v1
TABLESTORE_VECTOR_DIMENSION向量維度768
TABLESTORE_TEXT_FIELD文本字段名_content
TABLESTORE_VECTOR_FIELD向量字段名_embedding
EMBEDDING_PROVIDER_TYPEEmbedding 模型提供者hugging_face(當前僅支持 hugging_face)
EMBEDDING_MODEL_NAMEEmbedding 模型名字BAAI/bge-base-zh-v1.5(維度是768,和 TABLESTORE_VECTOR_DIMENSION 呼應)
TOOL_STORE_DESCRIPTION寫入的 MCP tool 的描述文字參考 settings.py
TOOL_SEARCH_DESCRIPTION查詢的 MCP tool 的描述文字參考 settings.py
3.4 Embedding

為了方便,這里不使用云服務的Embedding能力,而使用了內置的本地Embedding模型,示例代碼僅支持了 HuggingFace 的本地Embedding模型,使用十分簡單,如果網絡不好,可以配置 HuggingFace 的鏡像。

export HF_ENDPOINT=http://hf-mirror.com
3.5 運行 MCP 服務
# 加速下載 Hugging 的 Embedding Model
export HF_ENDPOINT=http://hf-mirror.comexport TABLESTORE_ACCESS_KEY_ID=xx
export TABLESTORE_ACCESS_KEY_SECRET=xx
export TABLESTORE_ENDPOINT=xxx
export TABLESTORE_INSTANCE_NAME=xxx
# 默認以 sse 模式運行,如果希望以 stdio 模式運行可以添加: `--transport stdio`
uv run tablestore-mcp-server

(4)集成三方工具

4.1 Cherry Studio

Cherry-Studio,是一個熱門的開源的 AI Client 軟件, 免費使用,其支持 MCP 服務。

安裝 :Github鏈接 下載最新版本的適合自己機器運行環境的安裝包. 比如我的電腦是m1芯片的mac,因此下載 Cherry-Studio-1.1.4-arm64.dmg 進行安裝。安裝好后,需要配置大模型的 api-key 相關信息,這里不再一一描述。

按照如下所示創建MCP服務:

在這里插入圖片描述

在聊天里使用MCP服務(可以把一些模版填充到 Cherry Studio 的模版里,生成一個自己的特殊助手,后續可以直接使用):

在這里插入圖片描述

(5)拓展應用場景

MCP 的 Tool 的能力和場景是 Tool 的描述來提供的,因此我們可以定義一些特殊的能力,可以發揮你的想象力。另外,當前我們沒有接入一些復雜的多字段自由 Filter 能力、稀疏向量(Sparse Vector)能力,后續有時間會繼續進行集成。

僅需要修改如下配置即可, 如何寫可以參考 settings.py

  export TOOL_STORE_DESCRIPTION="你的自定義的描述"export TOOL_SEARCH_DESCRIPTION="你的自定義的描述"

修改后從 MCP Client 中可以看到工具 (Tool) 的描述已經變成了自定義的描述,那么大模型(LLM)就會根據你的描述去使用工具(Tool)。

在這里插入圖片描述

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

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

相關文章

免費將靜態網站部署到服務器方法(僅支持HTML,CSS,JS)

原視頻鏈接&#xff1a;把HTML免費部署到網站上&#xff0c;實現別人也能訪問的教程來啦QAQ_嗶哩嗶哩_bilibili 注意&#xff1a;僅支持HTML、CSS、JS。不支持Vue等框架。 1.打開網站www.wordpress.org 點擊紅框按鈕 點擊紅框按鈕下載wordpress模板文件并解壓。 將自己編寫的…

游戲引擎學習第235天:在 Windows 上初始化 OpenGL

奇怪有問題 之前沒注意到 這個問題是Count 0 GlobalConstants_Renderer_UsedDebugCamer 打開的話會有Bug Count是零的話就不讓排序了 game.h: 查閱 TODO 列表 大家好&#xff0c;歡迎來到 game Hero&#xff0c;這是一檔我們在直播中一起編寫完整游戲的節目。不幸的是&a…

使用eCharts繪制中國地圖

eCharts官網&#xff1a;https://echarts.apache.org/zh/index.html 1. 首先新建一個html頁面&#xff0c;并引入echarts <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-…

Linux與Anaconda環境部署與管理(運維交接)

文章目錄 一、前言二、Linux基礎命令三、進程管理與監控四、后臺任務與服務管理五、Anaconda環境管理六、JAR包的運行與管理七、網絡與端口映射八、安全與權限管理九、故障排查與日志分析十、附錄 一、前言 本文將詳細介紹Linux系統下的常用命令以及Anaconda環境管理&#xff…

php:實現壓縮文件上傳、解壓、文件更名、刪除上傳臨時文件、存入數據庫等操作

一、效果圖 1.上傳文件 2.壓縮包文件 3.itemno1文件 二層結構 或 三層結構 4.上傳到系統路徑\ItemNo 5.更名后的itemno1文件(命名:當天日期+六位隨機數) 二、普通實現 1、內容介紹 含有兩種結構 二層結構:zip->料號文件夾->料號文件三層結構:zip->總文件夾-&g…

基于大語言模型的減肥健身計劃系統設計與實現

基于大語言模型的減肥健身計劃系統設計與實現 【包含內容】 【一】項目提供完整源代碼及詳細注釋 【二】系統設計思路與實現說明 【三】功能演示與部署指南 【技術棧】 ①&#xff1a;系統環境&#xff1a;Python 3.x Django 4.2 ②&#xff1a;開發環境&#xff1a;Web服務…

c#開發大沖鋒游戲登錄器

1 前言 本文主要分享登錄器的簡要開發過程&#xff0c;只適合小白選手&#xff0c;高手請自動避讓。 此項目是復刻大沖鋒計劃中的子集。 &#xff08;注&#xff1a;大沖鋒是迅雷代理的一款次時代多職業第一人稱FPS射擊游戲&#xff0c;目前已經關服嗝屁。&#xff09; 2 …

Linux[基礎指令][2]

Linux[基礎指令][2] cp(復制) 格式:cp [-rf] 源文件 {普通文件,目錄} 拷貝 cp -r 遞歸拷貝目錄 藍色為目錄,白色為具體文件 拷貝后面加一個不存在的文件會新建文件再拷貝 cp -ir -i是覆蓋的時候詢問 如果目標文件存在就會覆蓋原有文件 mv(重命名/剪切) 格式:mv 源文件…

React18+ 項目搭建-從初始化、技術選型到開發部署的全流程規劃

搭建一個 React 項目需要從項目初始化、技術選型到開發部署的全流程規劃。以下是詳細步驟和推薦的技術棧&#xff1a; 一、項目初始化 1. 選擇腳手架工具 推薦工具&#xff1a; Vite&#xff08;現代輕量級工具&#xff0c;支持 React 模板&#xff0c;速度快&#xff09;&am…

人工智能學習框架完全指南(2025年更新版)

一、核心框架分類與適用場景 人工智能框架根據功能可分為深度學習框架、機器學習框架、強化學習框架和傳統工具庫,以下是主流工具及選型建議: 1. 深度學習框架 (1)PyTorch 核心優勢:動態計算圖、靈活性強,適合科研與快速原型開發,支持多模態任務(如NLP、CV) 。技術生…

MySQL 詳解之事務管理

MySQL 詳解之事務管理 在數據庫領域,事務是一個核心概念,它確保了數據操作的可靠性和一致性。尤其是在處理涉及多個步驟且必須全部成功或全部失敗的業務場景時,事務更是不可或缺。本篇文章將深入探討 MySQL 中的事務管理,幫助您全面理解事務的工作原理及其在實際應用中的重…

SpringAI+DeepSeek大模型應用開發——5 ChatPDF

ChatPDF 知識庫 RAG檢索增強 由于訓練大模型非常耗時&#xff0c;再加上訓練語料本身比較滯后&#xff0c;所以大模型存在知識限制問題&#xff1a; 知識數據比較落后&#xff0c;往往是幾個月之前的&#xff1b;不包含太過專業領域或者企業私有的數據&#xff1b; 為了解決…

SSH 互信被破壞能導致 RAC 異常關閉嗎

一、 SSH 互信和 RAC 的關系 1、SSH 互信對 RAC 的作用 Oracle 11g R2 在安裝 Grid Infrastructure 的時候&#xff0c;能夠通過安裝程序配置節 點間的 SSH 用戶等效性&#xff0c;之所以要在安裝之前配置 SSH 用戶等效性&#xff0c;是為了能 夠在安裝前使用 C…

【數字圖像處理】立體視覺信息提取

雙目立體視覺原理 設一個為參考平面&#xff0c;一個為目標平面。增加了一個攝像頭后&#xff0c;P與Q在目標面T上有分別的成像點 雙目立體視覺&#xff1a;從兩個不同的位置觀察同一物體&#xff0c;用三角測量原理計算攝像機到該物體的距離的 方法 原理&#xff1a;三角測量…

基于springboot+vue的校園二手物品交易平臺

開發語言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服務器&#xff1a;tomcat7數據庫&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;數據庫工具&#xff1a;Navicat11開發軟件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

【Redis】Redis基本命令(1)

KEYS 返回所有滿足樣式&#xff08;pattern&#xff09;的key。 KEY * 返回所有key&#xff0c;不簡易使用 性能問題&#xff1a;當 Redis 存儲百萬級鍵時&#xff0c;會消耗大量 CPU 和內存資源&#xff0c;Redis 是單線程模型&#xff0c;KEYS * 執行期間會阻塞其他所有命令…

C#通用常見面試題-精心整理

以下是優化后的版本,在原有內容基礎上補充了應用場景,其他結構保持不變: 上位機面試題解答(技術詳解+示例) C#-IOC框架 1. 值類型和引用類型的本質區別 解釋 值類型:存儲在棧中,直接保存數據值(如 int, struct)。引用類型:存儲在堆中,變量保存對象地址(如 class,…

K8S節點出現Evicted狀態“被驅逐”

在Kubernetes集群中&#xff0c;Pod狀態為“被驅逐&#xff08;evicted&#xff09;”表示Pod無法在當前節點上繼續運行&#xff0c;已被集群從節點上移除。 問題分析&#xff1a; 節點磁盤空間不足 &#xff0c;使用df -h查看磁盤使用情況 可以看到根目錄 / 已100%滿&#x…

[密碼學基礎]國密算法深度解析:中國密碼標準的自主化之路

國密算法深度解析&#xff1a;中國密碼標準的自主化之路 國密算法&#xff08;SM系列算法&#xff09;是中國自主研發的密碼技術標準體系&#xff0c;旨在打破國際密碼技術壟斷&#xff0c;保障國家信息安全。本文將從技術原理、應用場景和生態發展三個維度&#xff0c;全面解…

Linux 網絡基礎(三) TCP/IP協議

一、TCP 與 IP 的關系 IP 層的核心作用是定位主機&#xff0c;具有將數據從主機 A 發送到主機 B 的能力&#xff0c;但是能力并不能保證一定能夠做到&#xff0c;所以這時就需要 TCP 起作用了&#xff0c;TCP 可以通過超時重傳、擁塞控制等策略來保證數據能夠發送到 B 主機。 所…