AI - PostgreSQL應用- PostgresML研究測試 與客製化編譯建置

2024/02

第一航AI話題近年來節節攀升,而PostgreSQL資料庫與AI的搭配中,發現到有個PostgresML的專案,我就簡易初步測試並記錄分享

參考 PostgresML網址: https://postgresml.org/

### 介紹分析篇 ###

PostgresML 是一個開源資料庫擴展,它將 Postgres 變成一個端到端(end-to-end)的機器學習平台。直接在 Postgres 資料庫中建置、訓練和部署 ML/AI 模型,無需在系統之間移動資料。

在SQL extension上,PostgresML對於AI和ML有提供以下功能:

在AI(人工智慧)上有:

1. pgml.embed() : 透過更快的端到端向量操作產生高品質嵌入,無需額外的向量資料庫。

2. pgml.transform(): 使用數千個模型執行數十個最先進的自然語言處理 (NLP) 任務。使用相同的 Postgres 基礎設施提供服務。

3. pgml.tune(): 根據您自己的資料微調開源模型。

在ML(機器學習)上有:

4. pgml.deploy(): 當訓練期間計算的 ML 品質指標改善時,發布經過訓練的模型。隨著時間的推移追蹤模型部署並在需要時回滾。

5. pgml.predict(): 根據表中的資料進行批量預測。使用查詢中傳遞的參數進行線上預測。自動重複使用訓練中的預處理步驟。

6. pgml.train(): 使用 50 種不同的 ML 演算法中的任一種預處理和提取資料來訓練模型。

此外PostgresML還有提供儀表板的功能,可以透過瀏覽器來進行搜尋和操作

其中 Notebooks 功能,就類似Jupyter Notebook那樣互動式操作,支援SQL 以及 Markdown語法

而使用操作上,在notebooks中也有教學範例可以照著學習,例如像訓練模型等,有接觸過ML的可能會對某些範例有熟悉感: (這邊直接用翻譯的,原本是英文)

選感興趣的教程

除此之外,也可以直接應用,例如我範例使用有關於翻譯模型,進行英翻法、英翻中、中翻日 等功能,而這些翻譯品質則取決於各類模型的訓練程度

英翻中、中翻英
中翻日

###############################################################

### 客製編譯與底層技術研究篇 ###

## 用於PostgreSQL之extension篇

如果想要客製編譯建置的話,因為該專案主要用rust語言寫的,所以不同於過往的perl等常見的編譯打包方式,而且這不像以往大多數extension那樣隨便用make 、make install 就能解決,要按部就班來處理

除了rust 語言,也有用到大量python語言,如採用模型 等,所以相關PYPI套件也要準備好,可以參照說明文件,例如圖中要弄pgml-chat,有規定Python版本要3.8以上與可選用OpenAI API Key等,就不贅述了

說明文件pgml-chat部分

在測試編譯時有遇到rust 版本要1.74以上,不然有些套件編譯時會報錯:

在排除各種問題後,終於完成,可用於客製化PostgreSQL相關開發,以我之前分享過的客製化DB來作例子:

建立該擴充功能時,可以看到有訊息知道其模型與python相關,此外也可以在建立時的訊息知道我用的編譯是RHEL/CentOS體系的,而不同於 Ubuntu/Debian

所以也可以對相關PyPI套件更新或是檢查,並檢查套件是否有資安事件需應對

## 用於pgml之dashboard篇

需要在PostgreSQL的extension那邊額外安裝pgvector,因為dashboard會用到

dashboard的服務預設為本地的8000

也可以修改如對外9999,或是透過代理也可

而使用功能就如前面的說明的那樣,就不贅述了

Last updated