將 MongoDB 化身為預測性資料庫

Benjamin Flast, Zoran Pandovski, and Natasha Seelam

注意:這篇文章是在 2021 年 11 月10 日發布,部分內容已經更新,包含將 MongoDB 實例連結至 MindsDB 機器學習平台的安裝及連結指南,還有一些新的範例及用例。

現在越來越多人好奇如何將人工智慧(AI)及機器學習(ML)應用在商業世界,ML/AI 的預測能力比人工分析可以更快偵測邏輯,從中快速找到洞見。此外,近期生成式機器學習應用程式的快速成長,像是 OpenAI 和 Hugging Face,為公司提供強大工具,生成並分析文本資料,讓他們感受到這項技術可以提升營收、降低成本和加速創新。雖然不管公司的規模大小,都能受惠於 AI,但實際應用機器學習的流程可能是費時又複雜。

位處領導地位的 MongoDB, Inc. (NASDAQ: MDB) 是滿足各式目的的現代資料庫平台,與將自動化機器學習導入資料庫中的開源機器學習平台 MindsDB 成為技術夥伴,攜手促進機器學習創新更上一層樓。這項合作目標是要讓開發人員可以更輕鬆地將 ML 導向的功能帶入應用程式中,同時實際解決業務上帶來的挑戰。

最適合的方法是什麼?

第一步需要先找出你想要重點發展的 ML 專案,像是預測或是文本分析,接著要選擇適合的工具及方法,就能加速建立、訓練、最佳化和部署模型的時間。如果你沒注意到需要訓練的 ML 模型維度,可能會在模型選擇和特徵工程上造成困難並耗上許多時間。此外隨著時間過去,用來資料萃取和轉換的管道會需要進行維護,而機器學習模型也需要部署在正確的運算框架。

目前最先進的 AutoML 框架提供最佳化效能的方法,包括調整超參數,像是學習速率和批次大小。 MindsDB AutoML 框架超越最先進的超參數調整自動化系統,提供資料清洗、資料前處理和特徵工程的新興上游自動化方法。為了讓使用者的開發流程更透明,框架提供了可解釋工具,可以處理複雜的資料類型,包含NLP、時間序列、語言模型和異常偵測,並讓使用者自己選擇要輸入的模型,給予客製化的空間。

MindsDB 也能在資料層生成預測,不需要使用 DB 的資源,是另一項幫助加速研發速度的重大變革。透過 MindsDB AI 集合,直接在 MongoDB Atlas 生成預測,可以把預測當做一般資料使用和查詢,透過簡化部署工作流程,加速研發速度。

馬上開始使用 MindsDB

可以馬上使用 AWS 上的 MindsDB 或是上 http://cloud.mindsdb.com 取得 MindsDB 的雲端示範版本。若有比小規模測試版本(兩個模型及上千種文件)更大的需求,歡迎使用安裝容易、簡潔易懂、以使用容量計價的 MindsDB Pro。造訪我們在 AWS Marketplace 的商品頁面,了解如何在你原有的 AWS 帳號設定 MindsDB。

歡迎造訪 https://docs.mindsdb.com/,取得所有文件以及常見 Q&A。

如何在 MongoDB 上設定連結至 MindsDB

目前整合的方式是以 MindsDB 的 MongoDB API 作為新資料來源,存取 MongoDB。可到這個頁面,進一步了解如何連結 MongoDB。MindsDB 提供了附上簡單資料集的 MongoDB 資料庫示範。

可以使用 MongoDB Shell 或是 MongoDB Compass 的使用者介面連結 MindsDB 的 MongoDB API。你的 MongoDB shell 的版本必須是或高於版本 3.6,才能使用 MindsDB MongoDB API。

MongoDB Compass 的連結方法

可以用以下連結字串,連結 MindsDB 的示範資料庫 ,圖示為 MongoDB Compass 使用者介面會看到的畫面:

如果你想要在你自己的資料庫跟著這份教學的話,歡迎使用你自己的連結字串,並上傳範例資料集,執行一系列的測試案例 house_sales.csv。

如果你用的是自己的 MongoDB 實例,還需要多兩個額外的步驟:

步驟一:創建 MindsDB 帳號之後,就能使用你在 MindsDB 編輯器中的連結字串,把 MongoDB 實例連接至雲端或 AWS 的 MindsDB。(MindsDB 雲端編輯器的連結: https://cloud.mindsdb.com/editor

在 MindsDB 編輯器中運行查詢的畫面:

db.databases.insertOne({
    name: "mongo_int",
    engine: "mongodb",
    connection_args: {
            "port": 27017,
            "host": "mongodb+srv://admin:@localhost",
            "database": "test_data"
    }
});

運行之後會得到:

{
	"acknowledged" : true,
	"insertedId" : ObjectId("62dff63c6cc2fa93e1d7f12c")
}

欄位解釋:

步驟二:將你的 MongoDB Compass 或 Shell,連結至 MongoDB,並創建一個新的集合,加入 .csv 檔案,如下:

  • 創建集合>加入資料>選擇資料類型

  • 資料類型:[日期, 數字, 字串, 數字]

這樣就成功整合了 MongoDB 資料庫。下一步使用 MongoDB 用戶端來連結 MindsDB 的 MongoDB API 並訓練模型。MindsDB 擁有大量準備好的範本用例和資料集,包含租屋價格和季度房屋銷售預測,應用我們的 Hugging Face 整合,針對產品評論進行語言分析,預測客戶情感。 多個包含編碼的 MongoDB 案例,都可以在以下連接取得:

另外我們也用最近 MindsDB 與 OpenAI 的 GPT-3 整合的語言模型提供的獨特功能,作為更強大的示範案例。MindsDB 可以用來將 DB 中非結構化資料,生成 JSON 文件。如下面所示,MindsDB 可以創建 JSON 文件,包含從房地產清單中的自然語言描述所取得的租屋物件相關資訊,像是在空租期、廁所數量、價格、評分。

請跟著以下教學,或是閱讀關於如何把 MongoDB CompassMongoDB Shell 連結至 MindsDB的文件。

想在 MQL 中創建此模型,請運行以下來自 MongoDB Compass 或 MongoDB Shell 的指令:

db.models.insertOne({
    name: 'nlp_model',
    predict: 'json',
    training_options: {
        engine: 'openai',
        input_text: 'sentence',
        json_struct: {
            'rental_price': 'rental price',
            'location': 'location',
            'nob': 'number of bathrooms'
        }
    }
})

這時傳送三個相同的參數。

  1. 參數確保我們使用 OpenAI 引擎

  2. 參數儲存用於輸出結果的預先定義 JSON 結構

  3. 參數包含儲存輸入文本欄位的名稱

接下來就可以查詢模型,傳送儲存在句子欄位的輸入文本。

db.nlp_model.find({
    'sentence': 'Amazing 3 bedroom apartment located at the heart of Manhattan, has one full bathrooms and one toilet room for just 3000 a month.'
    })

運行之後會得到:

{
  json: {
    rental_price: '3000',
    location: 'Manhattan',
    nob: '1'
  },

  sentence: 'Amazing 3 bedroom apartment located at the heart of Manhattan, has one full bathrooms and one toilet room for just 3000 a month.'

這份教學強調創建 NLP 模型的步驟,透過應用 MindsDB 的 MongoDB 連接器和自動化能力,從 MongoDB 中非結構化文本中生成 JSON 輸出。應用現有的運算配置,上面列出的例子不需要大量的工具,就能在不到五分鐘的時間完成。有了 MongoDB 裡面的 MindsDB 的機器學習能力,開發人員就能以較低的成本建立機器學習模型,讓模型精準度變得更高,幫助使用者做出更好的資料導向決策。

透過 MongoDB 和 MindsDB 現代化

MongoDB 透過簡化及擴充資料,提供直覺的資料管理及探索流程。MindsDB 透過簡化將現代化帶入機器學習、AI 和其餘各範圍的資料科學,協助將資料轉化為智慧洞見。

馬上將 MindsDB 連結至 MongoDB,訓練模型並在雲端上運行預測。只要從 Amazon Marketplace 安裝 MindsDB,我們的團隊也都在 SlackGithub,提供回饋和服務支援。馬上就開始,歡迎問問題跟我們分享範例用例!