Tüm Ürünler
Search
Belge Merkezi

ApsaraDB RDS:Vector generation (rds_embedding)

Son Güncelleme:Oct 03, 2026

Anlamsal arama veya Retrieval-Augmented Generation (RAG) işlem hatları oluştururken metin gömme (embedding) verisi üretmek genellikle veritabanınızın dışında ayrı bir hizmet gerektirir. rds_embedding uzantısı, harici bir gömme modelini doğrudan ApsaraDB RDS for PostgreSQL içinden çağırmanıza, elde edilen vektörleri verilerinizle birlikte saklamanıza ve kosinüs benzerliği sorguları çalıştırmanıza olanak tanır; tüm bu işlemler veritabanı içinde gerçekleşir. Güvenlik riskleri nedeniyle bu uzantının tüm sürümlerde oluşturulması kısıtlanmıştır. Bu konudaki içerik yalnızca uzantının zaten oluşturulmuş olduğu örnekler için geçerlidir.

Uyarı

Güvenlik riskleri nedeniyle rds_embedding uzantısının RDS PostgreSQL'in tüm ana ve alt motor sürümlerinde oluşturulması kısıtlanmıştır. Alt motor sürümünü yükseltmek bu kısıtlamayı kaldırmaz. Uzantının zaten oluşturulduğu örnekler etkilenmez ve uzantıyı kullanmaya devam edebilir. Bu konudaki içerik yalnızca bu tür örnekler için geçerlidir.

Ön koşullar

Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:

  • PostgreSQL 14 veya sonraki bir sürümü çalışan bir RDS örneği

  • rds_embedding uzantısının zaten oluşturulduğu bir örnek. Uzantının tüm sürümlerde oluşturulması kısıtlanmıştır ve alt motor sürümünün yükseltilmesi bu kısıtlamayı kaldırmaz

  • Bir Alibaba Cloud Model Studio API anahtarı. Anahtar almak için bkz. API anahtarınızı alın

  • RDS örneğinizin çalıştığı sanal özel cloud (VPC) için yapılandırılmış bir NAT Gateway. RDS PostgreSQL örnekleri varsayılan olarak internete erişemez, bu nedenle harici gömme modellerini çağırmak için bir NAT Gateway gereklidir

    NAT ağ geçidi yapılandırma adımları

    1. Adım: İnternet NAT ağ geçidi oluşturun

    1. NAT Gateway konsolunda oturum açın.

    2. Internet NAT Gateway sayfasında Create Internet NAT Gateway seçeneğini tıklayın.

    3. İnternet NAT ağ geçidini ilk kez oluşturuyorsanız Create Service-Linked Role bölümünde Create Service-Linked Role seçeneğini tıklayın.

    4. Satın alma sayfasında aşağıdaki parametreleri yapılandırın ve Buy Now seçeneğini tıklayın.


      Parameter


      Description


      Region


      RDS örneğinizle aynı bölgeyi seçin.


      VPC


      RDS örneğinizle aynı VPC'yi seçin. VPC'yi ApsaraDB RDS konsolunun Database Connection sayfasında bulabilirsiniz.


      Associate vSwitch


      RDS örneğinizle aynı vSwitch'i seçin. vSwitch'i ApsaraDB RDS konsolunun Database Connection sayfasında bulabilirsiniz.


      Access Mode


      Configure Later seçeneğini belirleyin.

    5. Confirm sayfasında ayrıntıları gözden geçirin, Hizmet Şartları onay kutusunu işaretleyin ve Confirm seçeneğini tıklayın. Ağ geçidi Internet NAT Gateway sayfasında görünür.

      Create NAT gateway

    2. Adım: Ağ geçidine esnek IP adresi (EIP) ilişkilendirin

    1. Internet NAT Gateway sayfasında Temel Bilgiler sekmesini açmak için ağ geçidi kimliğini tıklayın.

    2. Associated Elastic IP Address sekmesinde Bind Elastic IP Address seçeneğini tıklayın.

    3. Associate EIP iletişim kutusunda Purchase and Associate EIP seçeneğini belirleyin.

      Bind EIP

    4. OK seçeneğini tıklayın. EIP Associated Elastic IP Address sekmesinde görünür.

      Bound EIP

    3. Adım: SNAT girişi oluşturun

    1. Internet NAT Gateway sayfasında Temel Bilgiler sekmesini açmak için ağ geçidi kimliğini tıklayın.

    2. SNAT Management sekmesinde Create SNAT Entry seçeneğini tıklayın.

    3. Create SNAT Entry sayfasında aşağıdaki parametreleri yapılandırın ve OK seçeneğini tıklayın. SNAT girişi SNAT Entry List bölümünde görünür.


      Parameter


      Description


      SNAT Entry


      Yalnızca seçilen vSwitch'e bağlı örneklerin internete erişebilmesi için Specify vSwitch seçeneğini belirleyin.


      Select vSwitch


      RDS örneğinizin vSwitch'ini seçin.


      Select EIP


      İnternete erişmek için bir veya daha fazla EIP seçin. Bu örnekte açılan listeden tek bir EIP seçilmiştir.

      SNAT entry

Uzantıyı etkinleştirin

Aşağıdaki komutları yetkili bir hesap kullanarak çalıştırın. Önce vector uzantısını etkinleştirin; bu uzantı rds_embedding uzantısının bağımlı olduğu vektör veri türünü ve işlemlerini sağlar. rds_embedding uzantısının tüm sürümlerde oluşturulması kısıtlanmıştır. Aşağıdaki ifade yalnızca uzantının zaten oluşturulduğu örnekler için geçerlidir.

CREATE EXTENSION vector;
CREATE EXTENSION rds_embedding;

Uzantıları devre dışı bırakmak için:

DROP EXTENSION rds_embedding;
DROP EXTENSION vector;

Gömmeleri oluşturun ve sorgulayın

Aşağıdaki örnekte 1024 boyutlu vektörler oluşturmak ve kosinüs benzerliği sorgusu çalıştırmak için Alibaba Cloud Model Studio'daki text-embedding-v3 modeli kullanılmaktadır. Model hakkında daha fazla bilgi için bkz. Model tanıtımı.

1. Adım: Tablo oluşturun

İçerik için bir text sütunu ve gömmeler için bir vector(1024) sütunu içeren bir tablo oluşturun.

CREATE TABLE test(info text, vec vector(1024) NOT NULL);

2. Adım: Gömme modelini kaydedin

Uç nokta URL'sini, yetkilendirme üst bilgisi şablonunu, istek gövdesi şablonunu ve yanıttan gömmeyi ayıklamak için JSON yolunu sağlayarak text-embedding-v3 modelini kaydedin.

SELECT rds_embedding.add_model(
    'text-embedding-v3',
    'https://dashscope-intl.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding',
    'Authorization: Bearer sk-****',
    '{"input":{"texts":["%s"]},"model":"text-embedding-v3","parameters":{"text_type":"query"}}',
    '->''output''->''embeddings''->0->>''embedding'''
);

sk-**** ifadesini API anahtarınızla değiştirin.

3. Adım: Metin ve gömmeleri ekleyin

rds_embedding.get_embedding_by_model() işlevini satır içi çağırarak her satırı ekleyin. İşlev model API'sini çağırır ve verilen metin için gömme vektörünü döndürür.

INSERT INTO test SELECT 'Windy high sky, apes cry sadly',
    rds_embedding.get_embedding_by_model('text-embedding-v3', 'sk-****', 'Windy high sky, apes cry sadly')::real[];

INSERT INTO test SELECT 'Clear islet, white sand, birds fly back',
    rds_embedding.get_embedding_by_model('text-embedding-v3', 'sk-****', 'Clear islet, white sand, birds fly back')::real[];

INSERT INTO test SELECT 'Boundless falling leaves rustle down',
    rds_embedding.get_embedding_by_model('text-embedding-v3', 'sk-****', 'Boundless falling leaves rustle down')::real[];

INSERT INTO test SELECT 'Endless Yangtze River rolls on',
    rds_embedding.get_embedding_by_model('text-embedding-v3', 'sk-****', 'Endless Yangtze River rolls on')::real[];

sk-**** ifadesini API anahtarınızla değiştirin.

4. Adım: Vektör benzerliğine göre sorgulama yapın

Satırları bir sorgu dizesine anlamsal benzerliğe göre sıralamak için <=> işlecini (kosinüs mesafesi) kullanın. 0 mesafe özdeş vektörler anlamına gelir; daha düşük değerler daha yüksek benzerliği gösterir.

SELECT
    info,
    vec <=> rds_embedding.get_embedding_by_model(
        'text-embedding-v3',
        'sk-****',
        'Endless Yangtze River rolls on'
    )::real[]::vector AS distance
FROM
    test
ORDER BY
    vec <=> rds_embedding.get_embedding_by_model(
        'text-embedding-v3',
        'sk-****',
        'Endless Yangtze River rolls on'
    )::real[]::vector;

sk-**** ifadesini API anahtarınızla değiştirin.

Beklenen çıktı:

info                                     |      distance
-----------------------------------------+--------------------
 Endless Yangtze River rolls on          |                  0
 Boundless falling leaves rustle down    | 0.42740682200152647
 Clear islet, white sand, birds fly back | 0.5161883811726116
 Windy high sky, apes cry sadly          | 0.5247695147991147
(4 rows)

Sorgu "Endless Yangtze River rolls on" ifadesini ilk sırada (mesafe 0, tam eşleşme) döndürür; bunu en yakın anlamsal komşu olarak "Boundless falling leaves rustle down" izler.

Referanslar

Gömmeleri doğrudan model API'sini kullanarak alma

Model uç noktasını doğrulamak veya gömme oluşturma sorunlarını gidermek için curl kullanarak doğrudan bir POST isteği gönderin.

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding' \
--header 'Authorization: Bearer <API-KEY>' \
--header 'Content-Type: application/json' \
--data '{
    "model": "text-embedding-v3",
    "input": {
        "texts": [
            "Windy high sky, apes cry sadly",
            "Clear islet, white sand, birds fly back",
            "Boundless falling leaves rustle down",
            "Endless Yangtze River rolls on"
        ]
    },
    "parameters": {
        "text_type": "query"
    }
}'

Parameter

Example value

Description

location

https://dashscope-intl.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding

https://dashscope-intl.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding

https://dashscope-intl.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding

Metin gömme modelinin uç nokta URL'si.

Authorization üst bilgisi

Authorization: Bearer sk-****

Biçim: Authorization: Bearer <API-KEY>. API anahtarı almak için bkz. API anahtarınızı alın.

Content-Type üst bilgisi

application/json

Sabit değer.

model

text-embedding-v3

Çağrılacak modelin adı.

input.texts

Dize dizisi

Gömülecek metin içeriği.

parameters.text_type

query

Ek istek parametreleri. Bunlar modele göre değişir. Tam liste için metin gömme modeli belgelerine bakın.

rds_embedding uzantısı tarafından sağlanan işlevler

Uzantıdaki tüm nesneleri listelemek için aşağıdaki psql komutunu çalıştırın:

\dx+ rds_embedding
             Objects in extension "rds_embedding"
                      Object description
---------------------------------------------------------------
 function rds_embedding.add_model(text,text,text,text,text)
 function rds_embedding.del_model(text)
 function rds_embedding.get_embedding_by_model(text,text,text)
 function rds_embedding.get_response_by_model(text,text,text)
 function rds_embedding.show_models()
 function rds_embedding.update_model(text,text,text,text,text)
 schema rds_embedding
 table rds_embedding.models
(8 rows)

rds_embedding.add_model()

rds_embedding.models tablosuna bir gömme modeli ekler.

rds_embedding.add_model(mname text, murl text, mauth_header_template text, mbody_template text, membedding_path text)


Parameter


Type


Example


Description


mname


text


text-embedding-v3


Model adı. Diğer işlevleri çağırırken modeli tanımlamak için kullanılır.


murl


text


https://dashscope-intl.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding


Modelin HTTP uç noktası. URL için metin gömme modeli belgelerine bakın.


mauth_header_template


text


Authorization: Bearer sk-****


POST isteği için yetkilendirme üst bilgisi. Biçim: Authorization: Bearer <API-KEY>.


mbody_template


text


{"input":{"texts":["%s"]},"model":"text-embedding-v3","parameters":{"text_type":"query"}}


POST isteği gövdesi. Giriş metni için yer tutucu olarak %s kullanın; bu çağrı sırasında gerçek metinle değiştirilir. Farklı modellerin gövde yapısı için metin gömme modeli belgelerine bakın.


membedding_path


text


->''output''->''embeddings''->0->>''embedding''


Yanıttan gömmeyi ayıklamak için JSON yolu. Örnek yol şu şekilde ilerler: output nesnesi → embeddings dizisi → ilk öğe (0) → embedding dize değeri. Bu yolun modelinizin gerçek yanıt yapısıyla eşleştiğinden emin olun.

Önemli

Kullanmadan önce membedding_path değerinin modeliniz tarafından döndürülen JSON yapısıyla eşleştiğini doğrulayın. Yanlış bir yol ayıklama hatalarına veya başarısızlıklarına neden olur. Beklenen yanıt yapısı için metin gömme modeli belgelerindeki yanıt örneklerine bakın.

rds_embedding.get_embedding_by_model()

Kayıtlı modeli çağırarak belirtilen metin için gömme vektörünü döndürür.

rds_embedding.get_embedding_by_model(mname text, api-key text, texts text)


Parameter


Type


Example


Description


mname


text


text-embedding-v3


add_model() ile kaydedildiği şekliyle model adı.


api-key


text


sk-****


Model için API anahtarı. Anahtar almak için bkz. API anahtarınızı alın.


texts


text


Windy high sky, apes cry sadly


Gömülecek giriş metni.

rds_embedding.del_model()

rds_embedding.models tablosundan bir modeli kaldırır.

rds_embedding.del_model(mname text)


Parameter


Type


Example


Description


mname


text


text-embedding-v3


Kaldırılacak modelin adı.

rds_embedding.update_model()

rds_embedding.models tablosundaki mevcut bir modeli günceller. rds_embedding.add_model() ile aynı parametreleri kabul eder.

rds_embedding.show_models()

rds_embedding.models tablosunda şu anda kayıtlı olan tüm modelleri listeler.

Not

rds_embedding.get_response_by_model() henüz kullanılamıyor.