MCP 實踐:基於 MCP 架構實現知識庫系統
本文通過一個實際案例展示如何基於 MCP(Model Context Protocol)開發一個支持私有知識庫的 AI Agent 問答系統。
AI Agent 問答系統整體流程
AI Agent 問答知識庫系統整體由構建與檢索流程組成。
第一、知識庫構建流程
1、文本切分
對輸入的文本進行切分,確保切分後的文本段在保持完整性和語義連貫性的同時,便於後續處理和檢索。
2、FAQ 提取
從文本中提取常見問題及其答案(FAQ),作爲知識庫的一部分,以增強檢索的準確性和效率。
3、知識庫導入
將切分後的文本段和提取的 FAQ 導入知識庫,並進行 Embedding 處理,以便將文本轉換爲向量形式,便於檢索。
第二、知識檢索(RAG)流程
1、問題拆解
對用戶提出的問題進行拆解,將其分解爲更小、更具體的子問題,以提高檢索的精確度。
2、檢索策略
對每個子問題分別進行檢索,包括:
對文本段進行向量檢索,以找到最相關的文本內容。
對 FAQ 進行全文和向量混合檢索,以確保檢索結果的全面性和準確性。
3、內容篩選
對檢索結果進行篩選,選擇與子問題最相關的內容,作爲生成回答的參考。
第三、優化策略
與傳統的 Naive RAG 相比,本流程在知識庫構建和檢索階段進行了以下優化:
1、Chunk 切分優化
改進文本切分方法,以更好地保持文本的完整性和語義連貫性。
2、FAQ 提取
自動從文本中提取 FAQ,豐富知識庫內容,提高檢索效果。
3、Query Rewrite
對用戶問題進行重寫,使其更易於檢索。
4、混合檢索
結合全文和向量檢索方法,提高檢索的準確性和效率。
通過這些優化,我們的知識庫構建和檢索流程能夠更有效地處理和響應用戶查詢,提供更準確、更全面的答案。
基於 MCP 的 AI Agent 知識庫架構設計
基於 MCP 的 AI Agent 知識庫架構設計主要分爲三個核心部分:知識庫、MCP Server 以及功能實現模塊。每個部分在系統中扮演着不同的角色,共同協作以實現高效的知識管理和檢索功能。
第一、知識庫模塊
知識庫是系統的數據存儲中心,包含兩個主要的存儲組件:
-
Knowledge Store:用於存儲和管理文本內容。它支持向量檢索和全文檢索,以確保快速且準確的信息檢索。
-
FAQ Store:專門用於存儲常見問題及其答案(FAQ)。同樣支持混合檢索方式,以提高檢索效率和準確性。
第二、MCP Server 模塊
MCP Server 作爲系統的操作核心,負責對 Knowledge Store 和 FAQ Store 進行讀寫操作。它提供了四個主要的工具(Tools),用於支持不同的操作需求:
-
storeKnowledge:用於將新的文本內容導入 Knowledge Store。
-
searchKnowledge:用於在 Knowledge Store 中檢索文本內容。
-
storeFAQ:用於將新的 FAQ 導入 FAQ Store。
-
searchFAQ:用於在 FAQ Store 中檢索 FAQ。
第三、功能實現部分模塊
這一部分完全依賴於 Prompt 和 LLM(大語言模型)來實現對知識庫的操作,包括:
-
文檔導入:通過 LLM 處理,將文檔內容導入 Knowledge Store。
-
檢索:利用 LLM 的能力,對 Knowledge Store 或 FAQ Store 進行內容檢索。
-
問答:通過 LLM 解析用戶問題,並在知識庫中檢索相關信息以生成答案。
這種設計使得系統能夠靈活地處理各種知識管理和檢索任務,同時保持高效的性能和準確性。
基於 MCP 的 AI Agent 知識庫架構實現
第一、開源代碼概覽
阿里的這個項目代碼已全部開源,主要分爲兩個部分:
Github 地址:
https://github.com/aliyun/alibabacloud-tablestore-mcp-server
-
客戶端(Client):使用 Python 編寫,負責與大語言模型(LLM)進行交互。它通過 MCP 客戶端獲取所需的工具(Tools),並根據 LLM 的反饋來調用這些工具。客戶端利用精心設計的提示(Prompt)實現了三個核心功能:知識庫構建、檢索和問答。
-
服務器端(Server):使用 Java 編寫,基於 Spring AI 框架實現 MCP 服務器。由於底層存儲採用的是 Tablestore,因此主體框架是基於相關文章的代碼進行改造。
第二、知識庫存儲
我們選擇 Tablestore 作爲知識庫的存儲解決方案,原因如下:
-
簡單易用:只需創建一個實例即可開始使用,採用 Serverless 模式,無需管理容量和後續運維。
-
低成本:完全按量計費,自動根據存儲規模水平擴展,最大可擴展至 PB 級。雖然採用本地知識庫可以實現零成本,但我們實現的是一個企業級、可通過雲共享的知識庫。
-
功能完備:支持全文、向量和標量等檢索功能,支持混合檢索。
第三、MCP 服務器
MCP 服務器實現了四個工具(Tools),具體註冊代碼可參考 TablestoreMcp,相關描述如下:
第四、知識庫構建
1、對文本進行切段並提取 FAQ
以上完全通過提示詞來完成,可根據自己的要求進行調優。這種方式的優勢是切段的文本能保證完整性以及語義一致性,能夠比較靈活的對格式做一些處理。提取的 FAQ 很全面,對於簡單問題的問答通過直接搜索 FAQ 是最準確直接的。最大的缺點就是執行比較慢並且成本較高,一次會消耗大量的 Token,不過好在是一次性的投入。
2、寫入知識庫和 FAQ 庫
這一步也是通過提示詞來完成,基於 MCP 架構可以非常簡單的實現。
3、知識庫檢索
同樣這一步也是通過提示詞加 MCP 來實現,非常簡便。通過提示詞描述實現了一個稍微複雜點的檢索:先對問題進行拆解,拆解爲更原子的子問題;每個子問題分別檢索知識庫和 FAQ,檢索結果彙總後篩選留下與問題最相關的內容;按照格式返回結果。
4、知識庫問答
直接查看提示詞和效果。從 MCP 服務器的日誌中可以看到自動調用了知識庫和 FAQ 的檢索工具,並能根據之前導入的內容進行回答。
通過這種方式,我們實現了一個高效、靈活且功能完備的知識庫系統。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/n56zgMe3FtH3pOW9k4vp2w