
阿里妹導讀
文章探討了AI Agent的發展趨勢,並透過一個實際案例展示瞭如何基於MCP(Model Context Protocol)開發一個支援私有知識庫的問答系統。
前言
業界推測 2025 年是 AI Agent 的元年,從目前的技術發展速度看確實是有這個趨勢。從年初 DeepSeek 的爆火開始,目前開源大模型的能力基本與商業大模型拉齊甚至是超越,完全開放的開源策略讓大模型的使用徹底平權。這個可以說在某種程度上改變了 AI 應用的商業模式,基於自訓練的閉源模型的優勢被顯著削弱,商業競爭從模型效能轉向對應用場景的創新。
AI 應用的形態不斷演進,從早期的 Chat 到 RAG,再到現在的 Agent。參考 Web 2.0 和移動網際網路時代的技術發展,當某種新形態的應用開發需求爆發式增長,會催生新的開發框架和新的標準的建立,AI 應用正在經歷這個過程。
目前開發框架還處於百花齊放的狀態,Python 是否會成為主流開發語言,哪個開發框架會成為主流,這些都還未知,有待觀望。但是近期比較火熱的 MCP(Model Context Protocol)看起來已成事實標準,特別是近期 OpenAI 也官宣了對 MCP 的支援。
關於 MCP 的介紹不在本文贅述,本著學習的目的,動手做了一個實踐,主要為了體驗如何基於 MCP 開發一個 Agent 應用。本次實踐會實現一個目前最常見的一類 AI 應用即答疑係統,支援基於私有知識庫的問答,會對知識庫構建和 RAG 做一些最佳化。
整體流程設計

主要分為兩部分:知識庫構建和檢索。
1.知識庫構建
a.文字切段:對文字進行切段,切段後的內容需要保證文字完整性以及語義完整性。
b.提取 FAQ:根據文字內容提取 FAQ,作為知識庫檢索的一個補充,以提升檢索效果。
c.匯入知識庫:將文字和 FAQ 匯入知識庫,並進行 Embedding 後匯入向量。
2.知識檢索(RAG)
a.問題拆解:對輸入問題進行拆解和重寫,拆解為更原子的子問題。
b.檢索:針對每個子問題分別檢索相關文字和 FAQ,針對文字採取向量檢索,針對 FAQ 採取全文和向量混合檢索。
c.知識庫內容篩選:針對檢索出來的內容進行篩選,保留與問題最相關的內容進行參考回答。
相比傳統的 Naive RAG,在知識庫構建和檢索分別做了一些常見的最佳化,包括 Chunk 切分最佳化、提取 FAQ、Query Rewrite、混合檢索等。
Agent 架構

整體架構分為三個部分:
1.知識庫:內部包含 Knowledge Store 和 FAQ Store,分別儲存文字內容和 FAQ 內容,支援向量和全文的混合檢索。
2.MCP Server:提供對 Knowledge Store 和 FAQ Store 的讀寫操作,總共提供 4 個 Tools。
3.功能實現部分:完全透過 Prompt + LLM 來實現對知識庫的匯入、檢索和問答這幾個功能。
具體實現
所有程式碼開源在這裡,分為兩部分:
1.Python 實現的 Client 端:實現了與大模型進行互動,透過 MCP Client 獲取 Tools,根據大模型的反饋呼叫 Tools 等基本能力。透過 Prompt 實現了知識庫構建、檢索和問答三個主要功能。
2.Java 實現的 Server 端:基於 Spring AI 框架實現 MCP Server,由於底層儲存用的是 Tablestore,所以主體框架是基於這篇文章的程式碼進行改造。
知識庫儲存
知識庫儲存選擇 Tablestore(向量檢索功能介紹),主要原因為:
1.簡單易用:僅一個建立例項步驟後即可開始使用,Serverless 模式無需管理容量和後續運維。
2.低成本:完全按量計費,自動根據儲存規模水平擴充套件,最大可擴充套件至 PB 級。當然如果採用本地知識庫肯定是零成本,但這裡實現的是一個企業級、可透過雲共享的知識庫。
3.功能完備:支援全文、向量和標量等檢索功能,支援混合檢索。
MCP Server
實現了 4 個 Tools(具體註冊程式碼可參考 TablestoreMcp),相關描述如下:


知識庫構建
1、對文字進行切段並提取 FAQ
完全透過提示詞來完成,可根據自己的要求進行調優。



以上是一個示例,可以看到透過大模型能比較準確的對文字進行切段並提取 FAQ。這種方式的優勢是切段的文字能保證完整性以及語義一致性,能夠比較靈活的對格式做一些處理。提取的 FAQ 很全面,對於簡單問題的問答透過直接搜尋 FAQ 是最準確直接的。最大的缺點就是執行比較慢並且成本較高,一次會消耗大量的 Token,不過好在是一次性的投入。
2、寫入知識庫和 FAQ 庫
這一步也是透過提示詞來完成,基於 MCP 架構可以非常簡單的實現,樣例如下:

知識庫檢索
同樣這一步也是透過提示詞加 MCP 來實現,非常的簡單,樣例如下:

透過提示詞描述實現了一個稍微複雜點的檢索:
1.先對問題進行拆解,拆解為更原子的子問題。
2.每個子問題分別檢索知識庫和 FAQ,檢索結果彙總後篩選留下與問題最相關的內容。
3.按照格式返回結果。
知識庫問答
直接看下提示詞和效果

從 MCP Server 的 Log 內可以看到自動呼叫了知識庫和 FAQ 的檢索工具,並能根據之前匯入的內容進行回答。
演示
1、建立知識庫儲存例項
可透過命令列工具(下載地址)來建立 Tablestore 例項,參考這個文件先進行配置。
配置成功後執行以下命令進行例項建立,例項名自行選擇,需要保證 Region 內唯一。

2、啟動 MCP Server
啟動前需要在環境變數內配置如下幾個引數:

可參考程式碼庫 README 內的步驟進行啟動,也可將專案匯入 IDE 後直接執行 App 這個類,啟動後會自動初始化表和索引。
3、匯入知識庫
這一步需要執行程式碼庫內的 knowledge_manager.py 工具,執行前需要先配置訪問大模型的 API-KEY,預設採用 qwen-max。
exportLLM_API_KEY=sk-xxxxxx
請自行準備知識庫文件,使用 markdown 格式,執行如下:

4、檢索知識庫
執行如下:

5、基於知識庫進行問答

最後
對應前言部分的觀點,這一輪技術革命可以參考 Web 2.0 和移動網際網路時代的技術發展,當某種新形態的應用開發需求爆發式增長,一定會催生新的開發框架和新的標準的建立。AI 應用的技術是能夠完全構建在當前的技術框架之上,所以發展迭代的速度非常之快,很期待未來的發展。
構建OLAP全場景,揭秘即時/離線數倉一體化架構
隨著企業的業務資料量和資料來源不斷增加,分析的難度和複雜度顯著提升。AnalyticDB MySQL 提供了一個能整合多型別資料來源,確保資料的一致性和完整性、高效的資料分析平臺, 支援複雜查詢和分析需求,能夠快速洞察資料價值,更好地支撐業務決策。
點選閱讀原文檢視詳情。