全部產品
Search
文件中心

AnalyticDB:向量引擎快速入門

更新時間:Jan 28, 2026

雲原生資料倉儲AnalyticDB PostgreSQL版針對AIGC、向量檢索等向量分析情境,新增了向量引擎最佳化功能。本教程將為您介紹AnalyticDB PostgreSQL版執行個體從建立到向量分析的完整操作。

準備工作

  • 登入阿里雲帳號。若尚未註冊,請前往阿里雲官網進行註冊。

  • 授權服務關聯角色。如果您是首次使用AnalyticDB PostgreSQL版,需要在控制台授權建立服務關聯角色,操作方式如下:

    1. 登入雲原生資料倉儲AnalyticDB PostgreSQL版控制台

    2. 單擊頁面右上方的新建實例

    3. 在彈出的創建服務關聯角色對話方塊中單擊確定

費用資訊

建立執行個體會產生計算與儲存等相關費用,詳情請參見產品定價

免費試用

阿里雲提供儲存彈性模式執行個體的免費試用活動,如果您是AnalyticDB PostgreSQL版的新使用者,您可以訪問阿里雲免費試用申請試用資格。如果沒有免費試用資格,按照本文操作步驟在控制台建立執行個體。

使用流程

建立執行個體

  1. 登入雲原生資料倉儲AnalyticDB PostgreSQL版控制台

  2. 單擊頁面右上方的新建實例,進入執行個體購買頁面。

  3. 在執行個體購買頁面,配置核心參數快速完成執行個體選型,其他參數保持預設即可。如需瞭解更多參數資訊,請參見建立執行個體

    配置項

    說明

    本教程樣本

    商品類型

    • 訂用帳戶:屬於預付費,即在建立執行個體時需要支付費用。適合長期需求,價格比隨用隨付更實惠,且購買時間長度越長,折扣越多。

    • 隨用隨付:屬於後付費,即按小時計費。適合短期需求,用完可立即釋放執行個體,節省費用。

    隨用隨付

    地區和可用性區域

    執行個體所在的地理位置。

    購買後無法更換,建議與需要串連的ECS執行個體建立於同一個地區,以實現內網互連。

    華東1(杭州):華東1可用性區域J

    執行個體資源類型

    • 儲存彈性模式:支援獨立磁碟擴容,支援線上平滑擴容。

    • Serverless Pro:只需指定需要的計算資源,無需預留儲存資源。

    儲存彈性模式

    引擎版本

    推薦選擇7.0標準版,以獲得更豐富的功能體驗。同時支援6.0標準版

    7.0標準版

    執行個體系列

    • 高效能(基礎版):適用於大部分業務分析情境。

    • 高可用版:建議企業核心業務採用高可用版本。

    高效能(基礎版)

    向量引擎最佳化

    選擇開啟

    開啟

    專用網路

    選擇Virtual Private Cloud的ID。

    如需與同地區下的ECS執行個體內網互連,則需選擇與ECS相同的VPC。可選擇已有VPC或根據頁面提示建立VPC和交換器

    vpc-xxxx

    虛擬交換器

    選擇專用網路下的交換器。如果沒有可選的交換器,說明該可用性區域暫無可用交換器資源。您可以考慮更換至其他可用性區域,或根據頁面提示在當前可用性區域內建立交換器

    vsw-xxxx

  4. 單擊立即購買,確認訂單資訊並單擊立即開通

  5. 支付完成後,可單擊管理主控台返回執行個體列表查看建立執行個體。

    說明

    AnalyticDB PostgreSQL版執行個體初始化需要一定時間,待執行個體列表中的執行個體運行狀態顯示為運行中,才可進行後續操作。

建立初始帳號

重要

AnalyticDB PostgreSQL版提供了兩類使用者:

  • 高許可權使用者:初始帳號屬於高許可權使用者,具備RDS_SUPERUSER身份,具備資料庫的所有操作許可權。

  • 普通使用者:預設不具備任何許可權,需要高許可權使用者或具有GRANT許可權的使用者授予單個或多個資料庫物件的操作許可權。建立方法請參見建立和系統管理使用者

  1. 在左側導覽列中,單擊帳號管理

  2. 單擊建立初始帳號。在建立帳號視窗中,填寫帳號名稱並設定密碼。然後單擊確定

    配置

    說明

    資料庫帳號

    初始帳號的名稱,限制如下:

    • 由小寫字母,數字和底線組成。

    • 以小寫字母開頭,小寫字母或數字結尾。

    • 不能以gp開頭。

    • 長度為2~16個字元。

    新密碼確認密碼

    初始帳號的密碼,限制如下:

    • 由大寫字母、小寫字母、數字、特殊字元其中三種及以上組成。

    • 支援的特殊字元包括!@#$%^&*()_+-=

    • 長度為8~32個字元。

    重要

    為保障資料安全,建議您定期更換密碼。不要使用曾經用過的密碼。

設定白名單

說明

如果僅使用阿里雲資料管理(DMS)訪問,可跳過此步。通過本地IDE環境或ECS執行個體訪問資料庫時,需要設定IP白名單,擷取用戶端IP地址,請參見準備工作

  1. 在執行個體詳情頁的左側導覽列中,單擊數據安全性

  2. 單擊添加白名單分組,配置以下資訊:

    配置

    說明

    分組名稱

    建立白名單分組的名稱,限制如下:

    • 由小寫字母、數字或底線(_)組成。

    • 以小寫字母開頭,以小寫字母或數字結尾。

    • 長度為2~32個字元。

    組內白名單

    設定需要添加的白名單IP地址,說明如下:

    • IP地址以英文逗號(,)分隔,不可重複,最多999個。

    • 支援格式為10.23.12.24(具體IP地址)、10.23.12.24/24(CIDR模式,即無類域間路由,/24表示地址中首碼的長度,範圍為1~32)。

    • 地址中的前置長度設定為0(例如0.0.0.0/0、127.0.0.1/0)表示允許所有IP地址訪問該執行個體,存在高安全風險,請謹慎設定。

    • 127.0.0.1表示禁止任何外部IP訪問本執行個體。

  3. 單擊確定

串連資料庫

本節以psql工具為例介紹如何登入資料庫,其他工具串連方法,請參見用戶端串連

  1. 安裝psql。

    1. 下載psql工具。

      wget https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/181125/cn_zh/1598426198114/adbpg_client_package.el7.x86_64.tar.gz

      以上下載命令僅適用於用戶端的作業系統為RHEL 7或CentOS 7版本。如需使用其他版本的psql工具,請參見用戶端串連

    2. 解壓psql工具。

      tar -xzvf adbpg_client_package.el7.x86_64.tar.gz
    3. 切換到psql工具所在的目錄。

      cd adbpg_client_package/bin
  2. 登入資料庫。

    ./psql -h <AnalyticDB PostgreSQL版執行個體的串連地址> -p 5432 -d <需要串連的資料庫> -U <AnalyticDB PostgreSQL版執行個體的帳號>

    串連地址擷取方法:

    • 用戶端與AnalyticDB PostgreSQL版執行個體部署在同一地區且網路類型相同的ECS上,則可以使用內網地址進行串連。登入雲原生資料倉儲AnalyticDB PostgreSQL版控制台,單擊目標執行個體ID,進入執行個體詳情頁,在左側導覽列單擊基本資料,找到數據庫連接信息地區,即可查看內網地址

    • 用戶端與AnalyticDB PostgreSQL版執行個體部署在不同地區、網路類型不同的ECS或者阿里雲以外的系統上,則需要申請外網地址後使用外網地址進行串連。具體方法,請參見管理外網地址

    串連樣本如下:

    psql -h gp-bp13zq652yy4p****-master.gpdb.rds.aliyuncs.com -p 5432 -d postgres -U testuser

    按斷行符號後輸入密碼,系統顯示為postgres=> 表示串連成功。

通過SQL匯入向量資料

  1. 確認已安裝向量檢索外掛程式FastANN。

    您可以通過\dx fastann命令查看是否安裝,如果返回FastANN外掛程式的相關資訊,表示已安裝;如果沒有返回任何資訊,提交工單聯絡支援人員安裝。

  2. 下載測試資料。

    為方便測試,AnalyticDB PostgreSQL版提供了測試資料,下載連結,請參見vector_sample_data.csv

    測試資料的表結構如下。

    欄位

    類型

    說明

    id

    bigint

    編號。

    market_time

    timestamp

    汽車上市時間。

    color

    varchar(10)

    汽車的顏色。

    price

    int

    汽車的價格。

    feature

    float4[]

    汽車照片的特徵向量。

    Linux系統的伺服器下載測試資料的命令如下。

    wget https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20230606/uzkx/vector_sample_data.csv
  3. 匯入資料。

    1. 建立並切換資料庫。

      -- 建立一個名為testdb的資料庫
      CREATE DATABASE testdb;
      
      -- 切換到該庫
      \c testdb
    2. 根據測試資料建立一張包含向量列的表。

      CREATE SCHEMA IF NOT EXISTS vector_test;
      CREATE TABLE IF NOT EXISTS vector_test.car_info
      (
        id bigint NOT NULL,
        market_time timestamp,
        color varchar(10),
        price int,
        feature float4[],
        PRIMARY KEY(id)
      ) 
      USING heap -- 若建立執行個體時已開啟向量檢索引擎最佳化,則預設為heap引擎
      DISTRIBUTED BY(id);
    3. 建立索引。

      本次教程將為汽車的上市時間、顏色、價格等欄位建立結構化索引,為汽車照片特徵向量建立向量索引。

      -- 修改向量列的儲存格式為PLAIN
      ALTER TABLE vector_test.car_info ALTER COLUMN feature SET STORAGE PLAIN;
      
      -- 建立結構化索引
      CREATE INDEX ON vector_test.car_info(market_time);
      CREATE INDEX ON vector_test.car_info(color);
      CREATE INDEX ON vector_test.car_info(price);
      
      -- 建立向量索引
      CREATE INDEX ON vector_test.car_info USING ann(feature) WITH (dim='10', pq_enable='0');
    4. 將測試資料載入至資料表中。

      \COPY vector_test.car_info FROM '/DATA_PATH/vector_sample_data.csv';

      請將樣本中的/DATA_PATH/vector_sample_data.csv替換為測試資料所在的路徑,例如,測試資料下載到了/home目錄下,那麼此處應該為/home/vector_sample_data.csv

      匯入成功後,系統會返回COPY 10000

向量分析

本教程以擷取歐氏距離(平方)、點積距離或者餘弦相似性為例介紹向量分析方法。

擷取歐式距離

使用向量分析,並擷取歐氏距離(平方值)。

SELECT id, l2_squared_distance(feature, array[0.495181661387,0.108697291209,0.181728549067,0.109680543346,0.19713082404,0.0197809514512,0.534227452778,0.442411970815,0.409909873031,0.0975687394505]::float4[]) AS distance 
  FROM vector_test.car_info 
  ORDER BY feature <-> array[0.495181661387,0.108697291209,0.181728549067,0.109680543346,0.19713082404,0.0197809514512,0.534227452778,0.442411970815,0.409909873031,0.0975687394505]::float4[] 
  LIMIT 10;

返回樣本如下。

  id  |      distance
------+--------------------
    2 |                  0
 1331 | 0.0677967891097069
 1543 |  0.079616591334343
 5606 | 0.0892329216003418
 6423 | 0.0894578248262405
 1667 | 0.0903968289494514
 8215 | 0.0936210229992867
 7801 | 0.0952572822570801
 2581 | 0.0965127795934677
 2645 | 0.0987173467874527
(10 rows)

擷取點積距離(餘弦相似性)

使用向量分析,並擷取點積距離(在歸一化時,點積距離等於餘弦相似性)。

SELECT id, dp_distance(feature, array[0.495181661387,0.108697291209,0.181728549067,0.109680543346,0.19713082404,0.0197809514512,0.534227452778,0.442411970815,0.409909873031,0.0975687394505]::float4[]) AS similarity 
  FROM vector_test.car_info 
  ORDER BY feature <-> array[0.495181661387,0.108697291209,0.181728549067,0.109680543346,0.19713082404,0.0197809514512,0.534227452778,0.442411970815,0.409909873031,0.0975687394505]::float4[] 
  LIMIT 10;

返回樣本如下。

  id  |    similarity
------+-------------------
    2 |                 1
 1331 | 0.966101586818695
 1543 | 0.960191607475281
 5606 | 0.955383539199829
 6423 | 0.955271065235138
 1667 | 0.954801559448242
 8215 | 0.953189492225647
 7801 |  0.95237135887146
 2581 | 0.951743602752686
 2645 | 0.950641334056854
(10 rows)

融合檢索查詢

如需進行結構化與非結構化的融合,可以採用如下SQL進行查詢。

SELECT id, dp_distance(feature, array[0.495181661387,0.108697291209,0.181728549067,0.109680543346,0.19713082404,0.0197809514512,0.534227452778,0.442411970815,0.409909873031,0.0975687394505]::float4[]) AS similarity 
  FROM vector_test.car_info 
  WHERE market_time >= '2020-10-30 00:00:00' 
  AND market_time < '2021-01-01 00:00:00' 
  AND color in ('red', 'white', 'blue') 
  AND price < 100 
  ORDER BY feature <-> array[0.495181661387,0.108697291209,0.181728549067,0.109680543346,0.19713082404,0.0197809514512,0.534227452778,0.442411970815,0.409909873031,0.0975687394505]::float4[] 
  LIMIT 10;

返回樣本如下。

  id  |    similarity
------+-------------------
 7645 | 0.922723233699799
 8956 | 0.920517802238464
 8219 |  0.91210675239563
 8503 | 0.895939946174622
 5113 | 0.895431876182556
 7680 | 0.893448948860168
 8433 | 0.893425941467285
 3604 |  0.89293098449707
 3945 | 0.891274154186249
 7153 | 0.891128540039062
(10 rows)

相關文檔

關於向量分析的更多說明,請參見向量分析