全部產品
Search
文件中心

:使用入門

更新時間:Jun 04, 2025

Polar_AI是雲原生資料庫PolarDB的一個AI擴充,整合先進的AI模型和演算法,構建資料庫與現代人工智慧技術之間的橋樑,使得資料庫能夠執行機器學習和自然語言處理等任務。本文檔為您介紹Polar_AI引擎的準系統,包括如何在資料庫中調用AI大模型執行文本轉向量、情感分類等功能,以及如何通過SQL擴充自訂AI模型,以實現與更多AI模型服務的互動。

前提條件

支援的PolarDB PostgreSQL版的版本如下:

  • PostgreSQL 16(核心小版本2.0.16.6.2.0及以上)

  • PostgreSQL 15(核心小版本2.0.15.12.4.0及以上)

  • PostgreSQL 14(核心小版本2.0.14.13.28.0及以上)。

說明

您可在控制台查看核心小版本號碼,也可以通過SHOW polardb_version;語句查看。如未滿足核心小版本要求,請升級核心小版本

基本概念

  • NLP:自然語言處理(Natural Language Processing)是AI的一個領域,專註於使電腦能夠理解和產生人類語言。該領域包括文本分類、情感分析、機器翻譯、對話系統等技術。

  • Embedding:中文可譯為嵌入或嵌入式表示,是機器學習和自然語言處理領域中的一個重要概念。該概念指的是將高維、稀疏的特徵向量(例如詞典中的詞語、映像像素點等)轉換為低維、密集的連續向量空間中的向量表示的過程。

優勢說明

通過標準SQL語言即可輕鬆實現資料庫內部AI模型的調用及管理,這種方式具備以下幾個顯著優勢:

  • 簡單易用性:無需深厚的AI專業知識或複雜的編程技能,僅需掌握基礎的SQL文法就能完成從模型訓練到預測推理結果輸出的全流程操作。極大降低使用門檻,使得更多非專業人員也能參與到AI應用實踐中來。

  • 靈活可定製化:除了提供一系列預設的常用AI演算法外,還支援根據業務需求快速添加新的模型。只需編寫幾行簡單的SQL語句即可實現功能擴充。因此,無論是文本分類、Image Recognition還是時序預測等不同類型的任務,都能夠在統一架構下高效處理。

  • 無縫資料融合:傳統上,AI模型產生的輸出通常需要經過額外步驟才能被有效整合進現有的資訊系統。然而,在本方案中,所有AI計算的結果均可直接儲存至資料庫,並能夠方便地與其他結構化或非結構化資料進行聯集查詢與分析,從而為決策制定提供更加全面和準確的資訊支援。

  • 資料安全保障:在整個計算過程中,未經處理資料始終存放於安全可靠的資料庫環境中,從而避免因頻繁傳輸而引發的資訊泄露風險。同時,藉助成熟的企業級特性,例如細粒度許可權控制、訪問審計跟蹤及加密技術等手段,進一步提升系統的防護水平。

  • 卓越效能表現:由於所有計算任務均在資料庫內部執行,減少因資料移轉而產生的額外開銷,因此在響應速度和輸送量方面均能達到非常出色的水平。對於即時性要求較高的應用情境尤為重要。

  • 企業級服務支撐:全面繼承雲原生資料庫PolarDB所擁有的各種進階特性,比如自動故障切換、線上擴容縮容、冷熱階層式存放區等等。這些都為企業構建穩定可靠的大規模資料處理平台奠定堅實的基礎。

快速入門

  1. 建立擴充

    請使用高許可權帳號執行如下語句:

    CREATE EXTENSION IF NOT EXISTS polar_ai;
  2. 瞭解AI_CreateModel建立自訂模型函數

    根據參數,您需要準備以下資訊:

    • 需部署且處於運行狀態的模型服務,此處以人工智慧平台PAI上部署的DeepSeek-R1-Distill-Qwen-7B模型為例。

      說明

      部署的模型服務需與您的PolarDB叢集處於同一Virtual Private Cloud下。

      部署後,您需在服務詳情 > 調用資訊中查看並記錄VPC地址調用資訊,其中包含訪問地址以及Token,以供後續建立模型使用。

    • 定義模型輸入與輸出函數

      調用方式分為ChatCompletions兩種方式,此處以Completions為例。

      • 模型輸入函數:

        在使用HTTP調用DeepSeek-R1-Distill-Qwen-7B模型時,請求體的內容樣本如下所示:

        {
          "model": "DeepSeek-R1-Distill-Qwen-7B",
          "prompt": "Hello!"
        }

        請求體中,參數modelprompt作為模型入參,且必填。則模型輸入函數可定義為:

        CREATE OR REPLACE FUNCTION ai_text_in_fn(model_name text, content text)
            RETURNS jsonb
            LANGUAGE plpgsql
            AS $function$
            BEGIN
                RETURN ('{"model": "'|| model_name ||'","prompt":"'|| content ||'"}')::jsonb;
            END;
            $function$;
      • 模型輸出函數:

        在使用HTTP調用DeepSeek-R1-Distill-Qwen-7B模型時,請求輸出內容樣本如下所示:

        {
            "id": "8e44xxxx",
            "object": "text_completion",
            "created": 1744355891,
            "model": "DeepSeek-R1-Distill-Qwen-7B",
            "choices": [
                {
                    "index": 0,
                    "text": " I have a\n\n\n</think>\n\nHello! How can I assist you today? ",
                    "logprobs": null,
                    "finish_reason": "stop",
                    "matched_stop": 151643
                }
            ],
            "usage": {
                "prompt_tokens": 3,
                "total_tokens": 21,
                "completion_tokens": 18,
                "prompt_tokens_details": null
            }
        }

        由於僅需擷取choices[0].text項的內容,且輸出為一段文本,無需進行任何進一步處理,因此模型輸出函數無需定義。

  3. 建立AI模型

    調用AI_CreateModel建立模型。在建立模型的過程中,需對以下參數進行調整:

    • 模型調用地址model_url為上述人工智慧平台PAI上部署的模型訪問地址,且需拼上調用方式/v1/completions

    • 模型配置資訊model_config中的token為上述人工智慧平台PAI上部署的模型Token。

    • 模型輸入轉換函式model_in_transform_fn為上述步驟建立的ai_text_in_fn函數。

    SELECT polar_ai.ai_createmodel('my_test_pai_model', '<EAS Endpoint>/v1/completions','Alibaba','EAS大語言模型','DeepSeek-R1-Distill-Qwen-7B','{"author_type": "token", "token": "<EAS Token>"}', NULL,'ai_text_in_fn'::regproc,NULL);
    說明

    您可以通過查詢語句SELECT * FROM polar_ai._ai_models;來查看建立的模型資訊。

  4. 建立AI模型的調用函數

    根據AI_CallModel建立自訂模型調用函數:

    CREATE OR REPLACE FUNCTION my_text_pai_model_func(model_id text, content text)
        RETURNS text
        AS $$ select (polar_ai.AI_CALLMODEL($1,$2)::jsonb -> 'choices' -> 0 ->> 'text')::text AS result $$
        LANGUAGE 'sql' IMMUTABLE;
  5. 通過SQL語句執行對應模型的調用

    SELECT my_text_pai_model_func('my_test_pai_model', 'Hello');

    返回結果如下:

            my_text_pai_model_func        
    --------------------------------------
     Hello! How can I assist you today? 
    (1 row)