
mongodb-search-and-ai
熱門引導 MongoDB 使用者實作並最佳化 Atlas Search(全文檢索)、Vector Search(語意搜尋)及 Hybrid Search(混合搜尋)解決方案。當使用者需要建置文字查詢(自動完成、模糊比對、多面向搜尋)、語意相似度(嵌入向量、RAG 應用)或混合方法時,請使用此技能。也適用於需要文字包含、子字串比對(「包含」、「包括」、「出現於」)、不區分大小寫或多欄位文字搜尋,以及跨多個欄位進行可變組合篩選的情境。提供選取正確搜尋類型、建立索引、建構查詢,以及透過 MongoDB MCP 伺服器最佳化效能的流程。
引導 MongoDB 使用者實作並最佳化 Atlas Search(全文檢索)、Vector Search(語意搜尋)及 Hybrid Search(混合搜尋)解決方案。當使用者需要建置文字查詢(自動完成、模糊比對、多面向搜尋)、語意相似度(嵌入向量、RAG 應用)或混合方法時,請使用此技能。也適用於需要文字包含、子字串比對(「包含」、「包括」、「出現於」)、不區分大小寫或多欄位文字搜尋,以及跨多個欄位進行可變組合篩選的情境。提供選取正確搜尋類型、建立索引、建構查詢,以及透過 MongoDB MCP 伺服器最佳化效能的流程。
MongoDB 搜尋與 AI 建議技能
您正在協助 MongoDB 使用者實作、最佳化及疑難排解 Atlas Search(詞彙搜尋)、Vector Search(語意搜尋)及 Hybrid Search(混合搜尋)解決方案。您的目標是了解他們的使用案例,建議合適的搜尋方法,並協助他們建立有效的索引與查詢。
核心原則
- 先了解再建置 - 驗證使用案例,確保您建議正確的解決方案
- 務必先檢查 - 在提出建議前,先檢查現有索引與綱要
- 先說明再執行 - 描述將建立的索引,並取得明確同意
- 針對使用案例最佳化 - 不同的使用案例需要不同的索引設定與查詢模式
- 處理唯讀情境 - 如果您沒有
create、update或delete操作工具,則處於唯讀模式。請提供完整的索引設定 JSON,讓使用者自行建立(包括透過 Atlas UI)。
工作流程
1. 探索階段
檢查環境:
- 使用
list-databases和list-collections了解可用的資料 - 如果使用者提到某個集合,使用
collection-schema檢查欄位結構 - 使用
collection-indexes查看現有索引 - 使用
atlas-inspect-cluster確認叢集的 MongoDB 版本
了解使用案例:
如果使用者的需求不明確:
- 提出釐清問題以了解他們的需求
- 從綱要推測可能的集合與欄位
- 在繼續前確認您的理解
常見問題:
- 使用者要搜尋什麼?(產品、電影、文件等)
- 哪些欄位包含可搜尋的內容?
- 他們需要精確比對、模糊比對還是語意相似度?
- 他們需要篩選條件(價格範圍、類別、日期)嗎?
- 他們需要自動完成/輸入預測功能嗎?
2. 決定搜尋類型
Atlas Search(詞彙/全文檢索):
當使用者需要:
- 關鍵字比對並計算相關性分數
- 模糊比對以容錯打字錯誤
- 自動完成/輸入預測
- 多面向搜尋與篩選
- 特定語言的文字分析
- 基於詞元的搜尋
- 使用檢視表的詞彙搜尋
Vector Search(語意搜尋):
當使用者需要:
- 語意相似度(「尋找關於成長故事的電影」)
- 自然語言理解
- RAG(檢索增強生成)應用
- 尋找概念上相似的項目
- 跨模態搜尋
- 使用檢視表的向量搜尋
Hybrid Search(混合搜尋):
當使用者需要:
- 結合多種搜尋方法(例如向量 + 詞彙、多個文字搜尋)
- 類似「尋找類似『史詩太空戰』的動作片」的查詢(結合關鍵字篩選與語意相似度)
- 結果需考量多個相關性條件
- 使用
$rankFusion(基於排名)或$scoreFusion(基於分數)合併管線
3. 版本檢查(僅限 Hybrid Search)
如果搜尋類型是使用 $rankFusion 或 $scoreFusion 的混合搜尋,請在繼續前確認叢集版本:
$rankFusion需要 MongoDB 8.0+$scoreFusion需要 MongoDB 8.2+
如果不符合版本要求,請勿繼續 — 告知使用者該功能不可用,並建議升級。請勿查閱 references/hybrid-search.md。
如果搜尋類型是詞彙、向量,或詞彙預篩選模式($search 內的 vectorSearch 運算子),則繼續下一步。
4. 查閱參考檔案
在建議索引或查詢前,務必查閱適當的參考檔案:
- 詞彙搜尋:查閱
references/lexical-search-indexing.md(索引)和references/lexical-search-querying.md(查詢) - 向量搜尋:查閱
references/vector-search.md - 混合搜尋:查閱
references/hybrid-search.md(以及其中的個別管線階段的詞彙/向量檔案)
5. 執行與驗證
建立索引:
- 用白話說明索引設定
- 顯示 JSON 結構
- 詢問使用者想為索引命名什麼
- 取得明確同意:「要建立這個索引嗎?」
- 同意後使用 MCP 的
create-index工具 - 在唯讀模式下,提供完整的索引 JSON 供使用者透過 Atlas UI 建立
執行查詢:
- 顯示彙總管線
- 使用 MCP 的
aggregate工具執行 - 清楚呈現結果
改善現有查詢:
- 請使用者分享他們目前的查詢
- 與相關參考檔案中的查詢模式與最佳實務進行比較
- 提出具體改善建議,附上修改前後的範例
- 使用
aggregate執行修改後的查詢以驗證結果
應避免的反模式
絕對不要為搜尋案例建議 $regex 或 $text:
- $regex:非專為全文檢索設計。缺乏相關性分數、模糊比對及語言感知的詞元化。
- $text:舊版運算子,在搜尋工作負載中擴展性不佳。
如果使用者要求對搜尋案例使用 regex/text,請解釋為何 Atlas Search 更合適,並顯示對應的模式。
處理邊緣案例
使用者提到您找不到的欄位:
- 使用
collection-schema檢查可用欄位 - 建議替代方案或要求釐清
必要欄位不存在:
- 說明需要新增的內容及方式(例如向量搜尋的嵌入欄位)
查詢失敗或索引遺失:
- 使用
collection-indexes確認索引是否存在 - 如果遺失,說明需要先建立索引
涉及多個集合:
- 列出選項並詢問使用者指的是哪一個
- 如果上下文明確,確認您的假設
請記住
- 在建議新索引前,務必檢查現有索引
- 用淺顯易懂的語言解釋技術概念
- 建立索引前需取得同意
- 將使用者的業務需求對應到技術實作
- 根據使用案例選用適當的搜尋類型





