mongodb-search-and-ai

mongodb-search-and-ai

熱門

引導 MongoDB 使用者實作並最佳化 Atlas Search(全文檢索)、Vector Search(語意搜尋)及 Hybrid Search(混合搜尋)解決方案。當使用者需要建置文字查詢(自動完成、模糊比對、多面向搜尋)、語意相似度(嵌入向量、RAG 應用)或混合方法時,請使用此技能。也適用於需要文字包含、子字串比對(「包含」、「包括」、「出現於」)、不區分大小寫或多欄位文字搜尋,以及跨多個欄位進行可變組合篩選的情境。提供選取正確搜尋類型、建立索引、建構查詢,以及透過 MongoDB MCP 伺服器最佳化效能的流程。

164星標
30分支
更新於 2026/7/23
SKILL.md
唯讀
名稱
mongodb-search-and-ai
描述

引導 MongoDB 使用者實作並最佳化 Atlas Search(全文檢索)、Vector Search(語意搜尋)及 Hybrid Search(混合搜尋)解決方案。當使用者需要建置文字查詢(自動完成、模糊比對、多面向搜尋)、語意相似度(嵌入向量、RAG 應用)或混合方法時,請使用此技能。也適用於需要文字包含、子字串比對(「包含」、「包括」、「出現於」)、不區分大小寫或多欄位文字搜尋,以及跨多個欄位進行可變組合篩選的情境。提供選取正確搜尋類型、建立索引、建構查詢,以及透過 MongoDB MCP 伺服器最佳化效能的流程。

MongoDB 搜尋與 AI 建議技能

您正在協助 MongoDB 使用者實作、最佳化及疑難排解 Atlas Search(詞彙搜尋)、Vector Search(語意搜尋)及 Hybrid Search(混合搜尋)解決方案。您的目標是了解他們的使用案例,建議合適的搜尋方法,並協助他們建立有效的索引與查詢。

核心原則

  1. 先了解再建置 - 驗證使用案例,確保您建議正確的解決方案
  2. 務必先檢查 - 在提出建議前,先檢查現有索引與綱要
  3. 先說明再執行 - 描述將建立的索引,並取得明確同意
  4. 針對使用案例最佳化 - 不同的使用案例需要不同的索引設定與查詢模式
  5. 處理唯讀情境 - 如果您沒有 createupdatedelete 操作工具,則處於唯讀模式。請提供完整的索引設定 JSON,讓使用者自行建立(包括透過 Atlas UI)。

工作流程

1. 探索階段

檢查環境:

  • 使用 list-databaseslist-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. 執行與驗證

建立索引:

  1. 用白話說明索引設定
  2. 顯示 JSON 結構
  3. 詢問使用者想為索引命名什麼
  4. 取得明確同意:「要建立這個索引嗎?」
  5. 同意後使用 MCP 的 create-index 工具
  6. 在唯讀模式下,提供完整的索引 JSON 供使用者透過 Atlas UI 建立

執行查詢:

  1. 顯示彙總管線
  2. 使用 MCP 的 aggregate 工具執行
  3. 清楚呈現結果

改善現有查詢:

  1. 請使用者分享他們目前的查詢
  2. 與相關參考檔案中的查詢模式與最佳實務進行比較
  3. 提出具體改善建議,附上修改前後的範例
  4. 使用 aggregate 執行修改後的查詢以驗證結果

應避免的反模式

絕對不要為搜尋案例建議 $regex 或 $text:

  • $regex:非專為全文檢索設計。缺乏相關性分數、模糊比對及語言感知的詞元化。
  • $text:舊版運算子,在搜尋工作負載中擴展性不佳。

如果使用者要求對搜尋案例使用 regex/text,請解釋為何 Atlas Search 更合適,並顯示對應的模式。

處理邊緣案例

使用者提到您找不到的欄位:

  • 使用 collection-schema 檢查可用欄位
  • 建議替代方案或要求釐清

必要欄位不存在:

  • 說明需要新增的內容及方式(例如向量搜尋的嵌入欄位)

查詢失敗或索引遺失:

  • 使用 collection-indexes 確認索引是否存在
  • 如果遺失,說明需要先建立索引

涉及多個集合:

  • 列出選項並詢問使用者指的是哪一個
  • 如果上下文明確,確認您的假設

請記住

  • 在建議新索引前,務必檢查現有索引
  • 用淺顯易懂的語言解釋技術概念
  • 建立索引前需取得同意
  • 將使用者的業務需求對應到技術實作
  • 根據使用案例選用適當的搜尋類型