探索 Azure OpenAI 結構描述

已完成

您可以將 Azure OpenAI 併入 PostgreSQL 資料庫,以建立高度可調整的 AI 支援應用程式。 此整合可讓您使用熟悉的 SQL 語言和 PostgreSQL 的彈性,在資料庫層內建置智慧型解決方案。 無論自然語言處理、建議系統或內容產生,Azure OpenAI 都能為您的應用程式賦能。

azure_ai 延伸模組所安裝的 azure_openai 結構描述可讓您連線到 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)

下表描述函式所預期的引數:

Argument 類型 預設 描述
deployment_name text Azure OpenAI Studio 中內嵌模型部署的名稱。 此名稱通常是指 text-embeddings-ada-002 模型的部署。
input texttext[] 輸入文字 (或輸入文字的陣列),其中會建立向量內嵌。
batch_size integer 100 只有在 input 引數是 text 值的陣列時才適用。 batch_size 指定要同時處理陣列中的記錄數目。
timeout_ms integer NULL::integer 逾時 (以毫秒為單位),此時間後停止作業。
throw_on_error boolean true 指出函式是否應該在錯誤時擲回例外狀況的旗標,導致包裝交易復原。
max_attempts 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_ai 延伸模組中的 azure_openai.create_embeddings() 函式可讓您產生輸入文字的內嵌。 若要讓產生的向量與資料庫中其餘的資料一起儲存,您也必須遵循在資料庫中啟用向量支援文件的指引來安裝 vector 延伸模組。

您可以使用 CREATE EXTENSION 命令來安裝 vector 延伸模組。

CREATE EXTENSION IF NOT EXISTS vector;

產生和儲存向量

在您要為 Margie 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);

每個內嵌都是浮點數的向量,因此向量空間中兩個內嵌之間的距離會與原始格式中兩個輸入之間的語意相似性相互關聯。