Tüm Ürünler
Search
Belge Merkezi

ApsaraDB RDS:Use pgvector

Son Güncelleme:Oct 03, 2026

pgvector, ApsaraDB RDS for PostgreSQL'e vektör depolama ve benzerlik arama özelliği ekler. Makine öğrenimi modelleri tarafından oluşturulan gömme (embedding) verilerini depolamak ve bunları kosinüs mesafesi, Öklid mesafesi veya iç çarpım yöntemleriyle sorgulamak için bu uzantıyı kullanabilirsiniz.

Çalışma mantığı

Gömme (Embedding) verileri; metin, görüntü, ses veya video gibi verilerin yüksek boyutlu bir uzayda vektörler olarak ifade edilen sayısal temsilleridir. Anlamsal olarak benzer nesneler, birbirine yakın konumlanan vektörlere karşılık gelir.

Örneğin, bir elmayı [1, 1], bir muzu [1.2, 0.8] ve bir kediyi [6, 0.4] olarak temsil ederseniz, vektör araması muzun elmaya en benzer olduğunu gösterir; çünkü her ikisi de meyve olarak ortak özelliklere sahiptir.

image..png

pgvector aşağıdaki özellikleri destekler:

  • Tam en yakın komşu ve yaklaşık en yakın komşu (ANN) aramaları

  • Hızlı ANN araması için Hiyerarşik Navigable Small World (HNSW) dizinleri ve IVFFLAT paralel dizinleri

  • 16.000 boyuta kadar vektör desteği; 2.000 boyuta kadar vektörler üzerinde dizin oluşturma imkanı

  • Mesafe ölçütleri: L2 Öklid mesafesi, kosinüs benzerliği ve iç çarpım

  • Ek işlemler: L1 mesafesi, eleman bazında çarpım ve toplam toplama işlemi

Ön koşullar

Başlamadan önce şunlardan emin olun:

  • RDS örneğiniz PostgreSQL 14 veya üzeri bir sürüm çalıştırıyor olmalı ve küçük motor sürümü 20230430 veya üzeri olmalıdır. PostgreSQL 17 için küçük motor sürümünün 20241030 veya üzeri olması gerekir.

  • RDS örneği için ayrıcalıklı bir hesap mevcut olmalıdır.

Büyük motor sürümünü yükseltmek için bkz. ApsaraDB RDS for PostgreSQL örneğinin büyük motor sürümünü yükseltme . Küçük motor sürümünü güncellemek için bkz. ApsaraDB RDS for PostgreSQL örneğinin küçük motor sürümünü güncelleme . Ayrıcalıklı bir hesap oluşturmak için bkz. Hesap oluşturma .

Uzantıyı yükleme

Konsoldan yükleme (önerilen)

  1. Örnekler sayfasına gidin. Üst gezinme çubuğundan RDS örneğinizin bulunduğu bölgeyi seçin. Örnek kimliğine tıklayın.

  2. Sol gezinme bölmesinde Plug-ins öğesine tıklayın.

  3. Extension Marketplace sekmesinde vektör uzantısını bulun ve Install seçeneğine tıklayın. Alternatif olarak, Extension Management sekmesine geçiş yapın, vektör uzantısını arayın ve Actions sütunundaki Install seçeneğine tıklayın.

    image

  4. Açılan iletişim kutusunda Database Name ve Database Account alanlarını belirtin, ardından Install seçeneğine tıklayın.

Örnek durumu Maintaining Instance durumundan Running durumuna geçtiğinde uzantı yüklenmiş olur.

Uzantıyı güncellemek veya kaldırmak için:

Extension Management sekmesinde Installed Extensions bölümüne gidin, ilgili uzantıyı bulun ve Actions sütunundaki Upgrade Version veya Uninstall seçeneğine tıklayın.

Upgrade Version seçeneği görünmüyorsa uzantı zaten en son sürümdedir.

SQL ile yükleme

Önemli

Bu işlemler ayrıcalıklı bir hesap gerektirir. Böyle bir hesap oluşturmak için bkz. Hesap oluşturma.

-- Create
CREATE EXTENSION IF NOT EXISTS vector;

-- Update
ALTER EXTENSION vector UPDATE [ TO new_version ];

-- Delete
DROP EXTENSION vector;
new_version , pgvector uzantısının hedef sürümüdür. Sürüm geçmişi ve özellikler için pgvector belgelerini inceleyin.

Vektörleri depolama ve sorgulama

Bu bölümde gömme verilerinin depolanması ve benzerlik aramalarının nasıl yapılacağı anlatılmaktadır. Tam API referansı için pgvector belgelerine bakın.

Tablo oluşturma

CREATE TABLE items (
  id        bigserial PRIMARY KEY,
  item      text,
  embedding vector(2)
);
Bu örnekte açıklama amacıyla 2 boyutlu vektörler kullanılmıştır. pgvector 16.000 boyuta kadar destekler.

Vektör ekleme

INSERT INTO items (item, embedding)
VALUES
  ('Apple',  '[1,1]'),
  ('Banana', '[1.2,0.8]'),
  ('Cat',    '[6,0.4]');

Benzerliğe göre sorgulama

Sonuçları benzerliğe göre sıralamak için bir mesafe operatörü kullanın. Mesafe ne kadar kısa olursa, öğeler o kadar benzer demektir.

Mesafe operatörleri:

Operatör Ölçüt
<-> L2 (Öklid) mesafesi
<=> Kosinüs mesafesi
<#> İç çarpım

Temel benzerlik sorgusu:

-- Find items most similar to Banana, ranked by cosine distance
SELECT item,
       embedding <=> '[1.2, 0.8]' AS cosine_distance
FROM items
ORDER BY cosine_distance;

Örnek çıktı:

  item  |    cosine_distance
--------+------------------------
 Banana |                      0
 Apple  | 0.019419362524530137
 Cat    | 0.13289443670962842
  • 0 mesafesi tam eşleşmeyi gösterir.

  • 0.019 mesafesi yüksek benzerliği gösterir.

  • 0.133 mesafesi düşük benzerliği gösterir.

İş gereksinimlerinize göre düşük benzerliğe sahip sonuçları hariç tutmak amacıyla bir benzerlik eşiği belirtebilirsiniz.

Dizin oluşturma

Dizin olmadan pgvector, tüm tablo üzerinde tam arama yapar. Büyük veri kümeleri için ANN aramalarını hızlandırmak üzere bir vektör dizini oluşturun.

HNSW dizini oluşturma

CREATE INDEX ON items USING hnsw (embedding vector_cosine_ops)
WITH (m = 16, ef_construction = 64);

Parametreler:

Parametre Açıklama
m Her katmandaki düğüm başına maksimum bağlantı sayısı. Daha yüksek değerler graf yoğunluğunu, geri çağırma oranını ve dizin oluşturma ile sorgulama için gereken süreyi artırır.
ef_construction Dizin oluşturma sırasında kullanılan aday kümesinin boyutu. Daha yüksek değerler, dizin oluşturma ve sorgulama süresi pahasına geri çağırmayı iyileştirir.

Erişim yöntemleri (vector_cosine_ops alanı):

Değer Mesafe ölçütü
vector_cosine_ops Kosinüs mesafesi
vector_l2_ops L2 (Öklid) mesafesi
vector_ip_ops İç çarpım

IVF dizini oluşturma

CREATE INDEX ON items USING ivfflat (embedding vector_cosine_ops)
WITH (lists = 100);

Parametreler:

Parametre Açıklama
lists Veri kümesinin parçalandığı liste sayısı. Daha fazla liste daha hızlı arama sağlar ancak geri çağırmayı azaltabilir. lists > 2000 olduğunda ERROR: memory required is xxx MB, maintenance_work_mem is xxx MB hatası alabilirsiniz; bunu çözmek için maintenance_work_mem değerini artırın. Bkz. Örnek parametrelerini ayarlama.
ivfflat.probes Bir sorgu sırasında taranacak liste sayısı. Daha fazla prob geri çağırmayı iyileştirir ancak aramayı yavaşlatır.

ivfflat.probes değerini oturum veya işlem düzeyinde ayarlayın:

-- Session level
SET ivfflat.probes = 10;

-- Transaction level
BEGIN;
SET LOCAL ivfflat.probes = 10;
SELECT ...;
COMMIT;
Önemli

ivfflat.probes değeri, dizin oluşturma sırasında kullanılan lists değerine eşitse dizin yok sayılır ve bunun yerine tam tablo taraması çalıştırılır. Bu durum arama performansını önemli ölçüde düşürebilir.

Veri kümenize ve geri çağırma gereksinimlerinize bağlı olarak ivfflat.probes değerini lists değeriyle birlikte optimize edin.

Performans verileri

HNSW ve IVF dizinlerine ilişkin kıyaslama verileri için bkz.:

Sonraki adımlar

pgvector üzerine üretim amaçlı yapay zeka uygulamaları geliştirin: