تمرين - إعداد ملحق pgvector في Azure PostgresQL للاستخدام مع Spring الذكاء الاصطناعي
في هذا التمرين، يمكنك إنشاء قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن، وتمكين pgvector الملحق، وإنشاء بنية قاعدة البيانات المطلوبة للاستخدام مع تجريد Spring الذكاء الاصطناعي VectorStore .
تسجيل الدخول إلى Azure عبر Azure CLI
استخدم الأمر التالي لتسجيل الدخول إلى Azure:
az login
تعيين قيم المعلمات
استخدم الأوامر التالية لتعيين بعض متغيرات البيئة. يتم تمرير هذه القيم إلى الأوامر اللاحقة لإنشاء قاعدة البيانات والموارد المطلوبة. تأكد من استبدال العناصر <...> النائبة بقيمك الخاصة.
<server-name> يجب أن تكون القيمة فريدة عالميا عبر جميع Azure. طريقة سهلة لضمان التفرد هي استخدام مجموعة من الأحرف الأولى من اسمك وتاريخ اليوم وبعض المعرف - على سبيل المثال، abc-031325-spring-ai-postgresql-server.
export RESOURCE_GROUP=<resource-group>
export LOCATION=<location>
export DB_SERVER_NAME=<server-name>
بعد ذلك، استخدم الأمر التالي لتخزين عنوان IP العام في متغير بيئة وعرضه في وحدة التحكم. يمكنك استخدام هذه القيمة لاحقا في هذه الوحدة للحد من الوصول إلى عنوان IP الخارجي لخادم PostgreSQL. باستخدام عنوان IP العام للكمبيوتر الذي تستخدمه، يمكن فقط لعنوان IP الخاص بك الوصول إلى الخادم.
export PUBLIC_IP=$(curl -s ipinfo.io/ip)
echo "Start IP: $PUBLIC_IP"
يجب أن يعمل هذا الأمر في معظم توزيعات Linux وفي Git Bash. إذا لم يعمل، يمكنك بدلا من ذلك الحصول على عنوان IP العام الخاص بك باستخدام https://whatismyipaddress.com/
إشعار
يمكن تغيير عنوان IP الخاص بك. إذا تغير، يجب تحديث قاعدة جدار الحماية المقابلة وفقا لذلك.
إنشاء مجموعة موارد
إنشاء مجموعة موارد باستخدام الأمر التالي. مجموعة موارد Azure هي حاوية منطقية يتم بها نشر موارد Azure وإدارتها.
az group create --name $RESOURCE_GROUP --location $LOCATION
إنشاء مثيل خادم مرن لقاعدة بيانات Azure ل PostgreSQL
استخدم الأمر التالي لإنشاء مثيل قاعدة بيانات لأغراض التطوير. الطبقة القابلة للاندفاع هي طبقة فعالة من حيث التكلفة لأحمال العمل التي لا تتطلب أداء متسقا.
az postgres flexible-server create \
--resource-group $RESOURCE_GROUP \
--name $DB_SERVER_NAME \
--location $LOCATION \
--tier Burstable \
--sku-name standard_b1ms \
--active-directory-auth enabled \
--public-access $PUBLIC_IP \
--version 16
يستغرق هذا الأمر بضع دقائق لإكماله. بعد اكتماله، يعرض إخراجا مشابها للمثال التالي:
{
"connectionString": "postgresql://<admin-user>:<admin-password>@<name>.postgres.database.azure.com/None?sslmode=require",
"databaseName": null,
"firewallName": "FirewallIPAddress_<timestamp>",
"host": "<name>.postgres.database.azure.com",
"id": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.DBforPostgreSQL/flexibleServers/<name>",
"location": "<region>",
"password": "<admin-password>",
"resourceGroup": "<resource-group>",
"skuname": "<sku-name>",
"username": "<admin-user>",
"version": "<version>"
}
لأغراض الاختبار فقط، استخدم الأمر التالي لإنشاء قاعدة جدار حماية للسماح بالوصول إلى نطاق IP أوسع:
az postgres flexible-server firewall-rule create \
--resource-group $RESOURCE_GROUP \
--name $DB_SERVER_NAME \
--rule-name allowiprange \
--start-ip-address 0.0.0.0 \
--end-ip-address 255.255.255.255
منح حق وصول المسؤول إلى معرف Entra
استخدم الأمر التالي للحصول على object id معرف Entra الخاص بك:
export USER_OBJECT_ID=$(az ad signed-in-user show \
--query id \
--output tsv \
| tr -d '\r')
استخدم الأمر التالي لمنح المسؤول حق الوصول إلى معرف Entra الخاص بك:
az postgres flexible-server ad-admin create \
--resource-group $RESOURCE_GROUP \
--server-name $DB_SERVER_NAME \
--object-id $USER_OBJECT_ID \
--display-name azureuser
السماح بالملحقات المطلوبة ل pgvector
قبل أن تتمكن من تمكين الملحقات المطلوبة من قبل pgvector، تحتاج إلى السماح بها باستخدام الأمر التالي:
az postgres flexible-server parameter set \
--resource-group $RESOURCE_GROUP \
--server-name $DB_SERVER_NAME \
--name azure.extensions \
--value vector,hstore,uuid-ossp
التحقق من صحة الاتصال بقاعدة البيانات
استخدم الأمر التالي للحصول على اسم المضيف المؤهل بالكامل لخادم قاعدة البيانات:
export PGHOST=$(az postgres flexible-server show \
--resource-group $RESOURCE_GROUP \
--name $DB_SERVER_NAME \
--query fullyQualifiedDomainName \
--output tsv \
| tr -d '\r')
استخدم الأمر التالي للحصول على رمز مميز للوصول لمعرف المستخدم الخاص بك:
export PGPASSWORD="$(az account get-access-token \
--resource https://ossrdbms-aad.database.windows.net \
--query accessToken \
--output tsv)"
استخدم الأمر التالي للاتصال بقاعدة البيانات:
psql "host=$PGHOST dbname=postgres user=azureuser sslmode=require"
الإخراج التالي نموذجي:
psql (14.13, server 16.4)
WARNING: psql major version 14, server major version 16.
Some psql features might not work.
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.
postgres=>
بعد إنشاء هذه القاعدة، يمكنك تحديثها باستخدام az postgres flexible-server firewall-rule update.
ملخص الوحدة
لديك الآن قاعدة بيانات PostgreSQL ممكنة للمتجه جاهزة توفر قدرات البحث عن تشابه المتجهات.