探索 Azure OpenAI 結構描述
藉由將 Azure OpenAI 併入 PostgreSQL 資料庫,您可以建立可高度調整的 AI 支援應用程式。 此整合可讓您使用熟悉的 SQL 語言和 PostgreSQL 的彈性,在資料庫層內建置智慧型解決方案。 無論自然語言處理、建議系統或內容產生,Azure OpenAI 都賦予您的應用程式能力。
由azure_openai擴充功能安裝的 azure_ai 架構可讓您連線到 Azure OpenAI 服務實例並與其互動。 此架構可讓您與 Azure OpenAI 服務緊密整合,讓您直接從 PostgreSQL 資料庫建立強大的產生 AI 應用程式。
建立內嵌
azure_openai透過架構,您可以呼叫 create_embeddings() 函式,從資料庫層內產生向量內嵌。 這些內嵌可讓您有效率地儲存、編製索引,以及查詢高維度向量。 函式可以採用兩種形式:
azure_openai.create_embeddings(text,text,integer,boolean,integer,integer)azure_openai.create_embeddings(text,text[],integer,integer,boolean,integer,integer)
下表描述 函式所預期的自變數:
| 論點 | 類型 | 預設 | 說明 |
|---|---|---|---|
| 部署名稱 | text |
Azure OpenAI Studio 中內嵌模型部署的名稱。 此名稱通常是指 text-embeddings-ada-002 模型的部署。 |
|
| 輸入 | text 或 text[] |
輸入文字(或輸入文字陣列),其中會建立向量內嵌。 | |
| 批次大小 | integer |
100 |
只有當 input 參數是 text 值的陣列時才適用。 batch_size 指定要同時處理之陣列中的記錄數目。 |
| timeout_ms | integer |
NULL::integer |
逾時 (以毫秒為單位),此時間後停止作業。 |
| throw_on_error | boolean |
true |
指出函式是否應該在錯誤時擲回例外狀況的旗標,導致包裝交易復原。 |
| 最大嘗試次數 | integer |
1 |
在發生失敗時重試對 Azure OpenAI 服務的呼叫次數。 |
| 重試延遲毫秒 (retry_delay_ms) | integer |
1000 |
嘗試重試呼叫 Azure OpenAI 服務端點之前所要等候的時間量 (以毫秒為單位)。 |
設定 Azure OpenAI 的連線
使用 azure_openai 功能之前,請使用您的 Azure OpenAI 服務端點和密鑰來配置擴充功能。 下列命令代表您將用來設定連線至 Azure OpenAI 執行個體所需的端點和金鑰的查詢:
SELECT azure_ai.set_setting('azure_openai.endpoint', '{endpoint}');
SELECT azure_ai.set_setting('azure_openai.subscription_key', '{api-key}');
然後,您可以使用 函 get_setting() 式來驗證在組態數據表中寫入的 azure_ai.settings 設定:
SELECT azure_ai.get_setting('azure_openai.endpoint');
SELECT azure_ai.get_setting('azure_openai.subscription_key');
使用向量延伸啟用向量支援
在 azure_openai.create_embeddings() 擴充功能中的 azure_ai 函數可讓您為輸入文字產生嵌入。 若要讓產生的向量與資料庫中其餘的數據一起儲存,您也必須遵循vector指引來安裝延伸模組。
CREATE EXTENSION IF NOT EXISTS vector;
產生和儲存向量
在您要為 Margie's Travel 開發的 AI 驅動租賃物業推薦應用程式中,您必須使用 vector 資料類型將新的欄新增至目標資料表,以在將向量支援新增至資料庫之後,將嵌入儲存在該資料表中。 數據表上 listings 會啟用向量,以便在執行查詢來搜尋可用屬性時允許語意搜尋功能。 模型 text-embedding-ada-002 會產生具有 1,536 個維度的向量,因此您必須指定 1536 為向量大小。
ALTER TABLE listings
ADD COLUMN description_vector vector(1536);
listings 資料表現在已準備好儲存內嵌。 您可以使用 azure_openai.create_embeddings() 函式來建立 description 欄位的向量,並將其插入 listings 資料表中新建立的 description_vector 資料行。
UPDATE listings
SET description_vector = azure_openai.create_embeddings('{your-deployment-name}', description);
每個內嵌都是浮點數的向量,因此兩個內嵌在向量空間中的距離會與原始格式兩個輸入之間的語意相似性相互關聯。