All Products
Search
Document Center

ApsaraDB RDS:Bangun aplikasi AI dengan RDS for PostgreSQL dan Dify

Last Updated:Jun 05, 2026

Gunakan RDS for PostgreSQL sebagai database relasional sekaligus penyimpan vektor untuk Dify, platform LLM open-source, guna membangun aplikasi tanya jawab cerdas.

Langkah 1: Buat instans RDS for PostgreSQL

  1. Buat instans RDS for PostgreSQL dengan cepat.

  2. Buat akun dan database untuk instans RDS for PostgreSQL.

    Perhatikan hal berikut:

    • Saat membuat akun, atur Account Type ke Privileged Account.

    • Saat membuat database, atur Authorized Account ke akun istimewa yang telah Anda buat.

  3. Aktifkan titik akhir publik untuk instans RDS for PostgreSQL. Aktifkan atau nonaktifkan titik akhir publik.

    Tambahkan Alamat IP publik instans ECS Anda ke daftar putih instans RDS for PostgreSQL. Konfigurasikan daftar putih alamat IP.

  4. Aktifkan ekstensi vektor untuk database target. Kelola ekstensi.

Langkah 2: Deploy Dify

  1. Buat instans ECS. Buat instans menggunakan wizard.

    • Instans ECS berbasis CPU mendukung LLM online.

    • Instans ECS berakselerasi GPU mendukung LLM online maupun LLM yang di-deploy secara lokal.

    Penting
    • Artikel ini menggunakan Alibaba Cloud Linux 3 sebagai contoh.

    • Jika Anda menggunakan instans ECS berakselerasi GPU, instal Driver GPU saat mengonfigurasi image. Hal ini memungkinkan Anda untuk mendeplai LLM dengan Ollama.

  2. Instal Docker pada instans ECS.

  3. (Opsional) Jika Anda menggunakan instans ECS berakselerasi GPU, jalankan perintah berikut untuk menginstal komponen container-toolkit.

    Instal komponen container-toolkit

    curl -s -L https://nvidia.github.io/nvidia-container-runtime/centos8/nvidia-container-runtime.repo | \
    sudo tee /etc/yum.repos.d/nvidia-container-runtime.repo
    sudo yum install -y nvidia-container-toolkit
    # Restart Docker.
    sudo systemctl restart docker
  4. Klon kode sumber Dify.

    git clone https://github.com/langgenius/dify.git

    Untuk menginstal versi tertentu, gunakan parameter branch. Versi yang tersedia: dify. Contoh untuk v1.0.0:

    git clone https://github.com/langgenius/dify.git --branch 1.0.0
    Catatan

    Jika Git belum terinstal, jalankan sudo yum install git -y untuk menginstalnya.

  5. Konfigurasikan Variabel lingkungan untuk menetapkan RDS for PostgreSQL sebagai database dan penyimpan vektor default.

    1. Tetapkan RDS for PostgreSQL sebagai database default.

      export DB_USERNAME=testdbuser
      export DB_PASSWORD=dbPassword
      export DB_HOST=pgm-****.pg.rds.aliyuncs.com
      export DB_PORT=5432
      export DB_DATABASE=testdb01

      Ganti nilai-nilai tersebut dengan pengaturan aktual Anda.

      Parameter

      Deskripsi

      DB_USERNAME

      Akun istimewa dari instans RDS for PostgreSQL.

      DB_PASSWORD

      Kata sandi akun istimewa untuk instans RDS for PostgreSQL.

      DB_HOST

      Titik akhir publik dari instans RDS for PostgreSQL.

      DB_PORT

      Port publik dari instans RDS for PostgreSQL. Nilai default adalah 5432.

      DB_DATABASE

      Nama database dalam instans RDS for PostgreSQL.

    2. Tetapkan RDS for PostgreSQL sebagai database vektor default.

      export VECTOR_STORE=pgvector
      export PGVECTOR_HOST=pgm-****.pg.rds.aliyuncs.com
      export PGVECTOR_PORT=5432
      export PGVECTOR_USERNAME=testdbuser
      export PGVECTOR_PASSWORD=dbPassword
      export PGVECTOR_DATABASE=testdb01

      Ganti nilai-nilai tersebut dengan pengaturan aktual Anda.

      Parameter

      Deskripsi

      VECTOR_STORE

      Menentukan penyimpan vektor. Gunakan pgvector untuk ekstensi PostgreSQL.

      PGVECTOR_USERNAME

      Akun istimewa dari instans RDS for PostgreSQL.

      PGVECTOR_PASSWORD

      Kata sandi akun istimewa untuk instans RDS for PostgreSQL.

      PGVECTOR_HOST

      Titik akhir publik dari instans RDS for PostgreSQL.

      PGVECTOR_PORT

      Port publik dari instans RDS for PostgreSQL. Nilai default adalah 5432.

      PGVECTOR_DATABASE

      Nama database dalam instans RDS for PostgreSQL.

    Sebagai alternatif, konfigurasikan pengaturan ini dalam file .env.

    Konfigurasikan RDS for PostgreSQL menggunakan .env

    1. Salin .env.example ke .env. Ini akan menimpa file yang sudah ada.

      cd /root/dify/docker
      cp .env.example .env
      Catatan

      Setelah Anda mendapatkan kode sumber Dify, file .env.example dan .env secara otomatis disertakan dalam direktori /root/dify/docker.

    2. Edit .env dengan detail instans RDS for PostgreSQL Anda.

      # Konfigurasi database default
      DB_USERNAME=testdbuser
      DB_PASSWORD=dbPassword
      DB_HOST=pgm-****.pg.rds.aliyuncs.com
      DB_PORT=5432
      DB_DATABASE=testdb01
      # Konfigurasi database vektor default
      VECTOR_STORE=pgvector
      PGVECTOR_HOST=pgm-****.pg.rds.aliyuncs.com
      PGVECTOR_PORT=5432
      PGVECTOR_USER=testdbuser
      PGVECTOR_PASSWORD=dbPassword
      PGVECTOR_DATABASE=testdb01
  6. (Opsional) Untuk menghemat sumber daya, nonaktifkan kontainer database default dan Weaviate dengan mengedit file .env dan docker-compose.yaml.

    • Edit file .env

      1. (Opsional) Salin .env.example ke .env.

        Penting

        Lewati langkah ini jika Anda sudah menyalin file tersebut saat mengonfigurasi database.

        cd /root/dify/docker
        cp .env.example .env
      2. Beri komentar pada baris berikut dalam .env.

        #COMPOSE_PROFILES=${VECTOR_STORE:-weaviate}
    • Edit file docker-compose.yaml

      1. Buat cadangan docker-compose.yaml.

        cd /root/dify/docker
        cp docker-compose.yaml docker-compose.yaml.bak
      2. Edit docker-compose.yaml untuk menonaktifkan kontainer database default.

        • Pada bagian layanan API, beri komentar pada - db di bawah depends_on:.

          # Layanan API
          api:
            ......
            depends_on:
              #- db          
              - redis  
        • Pada bagian layanan worker, beri komentar pada - db di bawah depends_on:.

          # Layanan worker
          # Worker Celery untuk memproses antrian.
          worker:
            ......
            depends_on:
              #- db
              - redis
        • Pada bagian The postgres database, tambahkan konfigurasi profiles: -pg.

          # Database postgres.
          db:
            image: postgres:15-alpine
            profiles:
              - pg 
        • Pada bagian The Weaviate vector store, beri komentar pada - '' di bawah profiles:.

          # Penyimpan vektor Weaviate.    
          weaviate:
             image: semitechnologies/weaviate:1.19.0
             profiles:
               #- ''
               - weaviate
  7. Jalankan Dify.

    cd /root/dify/docker
    docker compose -f docker-compose.yaml up -d

Langkah 3: Akses layanan Dify

  1. Buka http://<public_IP_address_of_your_ECS_instance>/install di browser untuk memulai instalasi Dify.

    Catatan

    Jika halaman gagal dimuat, refresh halaman tersebut. Dify mungkin masih dalam proses inisialisasi.

  2. Ikuti petunjuk untuk set up an administrator account (email, username, dan password).

Langkah 4: Tambahkan dan konfigurasikan model AI

Contoh ini menggunakan Qwen.

  1. Login ke Dify.

  2. Klik username > Settings.

  3. Pada halaman Settings, pilih Model Providers > Qwen > (Set).

  4. Pada halaman Settings untuk Qwen, klik tautan untuk mendapatkan Kunci API dari Alibaba Cloud Model Studio.

  5. Tempel Kunci API Anda dan klik Save.

Pada instans ECS berakselerasi GPU, Anda dapat mendeplai LLM Qwen secara lokal.

Deploy layanan LLM Qwen pada ECS

  1. Buat kontainer ollama dan petakan port 11434 ke host.

    docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

    ID kontainer dikembalikan:

    a2201932a0c10da50845a85fc8e00c2178d8b4d0936a92f383b284a7ce51****
  2. Buka shell di dalam kontainer dan deploy model-model tersebut. Contoh ini menggunakan qwen2.5-coder:7b dan rjmalagon/gte-qwen2-7b-instruct:f16.

    docker exec -it a2201932a0c10da50845a85fc8e00c2178d8b4d0936a92f383b284a7ce51**** /bin/bash
    ollama pull qwen2.5-coder:7b
    ollama pull rjmalagon/gte-qwen2-7b-instruct:f16
  3. Tambahkan aturan security group inbound untuk mengizinkan port TCP 11434/11434. Batasi sumber ke alamat IP Anda, atau gunakan 0.0.0.0/0 untuk pengujian.

  4. Login ke Dify.

  5. Pilih Username > Settings > Model Providers > Ollama > Add Model.

  6. Konfigurasikan dua model: atur LLM ke qwen2.5-coder:7b dan model Text Embedding ke rjmalagon/gte-qwen2-7b-instruct:f16.

    Atur Model Name ke qwen2.5-coder:7b dan rjmalagon/gte-qwen2-7b-instruct:f16, masing-masing. Atur Base URL ke http://<public_IP_address_of_your_ECS_instance>:11434. Gunakan pengaturan default untuk parameter lainnya.

Langkah 5: Buat basis pengetahuan

Basis pengetahuan memungkinkan aplikasi tanya jawab menjawab pertanyaan spesifik domain secara akurat.

Prasyarat

Siapkan file korpus untuk basis pengetahuan. Format yang didukung: TXT, MARKDOWN, MDX, PDF, HTML, XLSX, XLS, DOCX, CSV, MD, dan HTM. Ukuran maksimum file: 15 MB.

Prosedur

  1. Klik Knowledge > Create Knowledge > Import from Text > Select File > Next untuk mengunggah file Anda.

    Format yang didukung: TXT, MARKDOWN, MDX, PDF, HTML, XLSX, XLS, DOCX, CSV, MD, dan HTM. Ukuran maksimum file: 15 MB.

  2. Setelah Anda mengklik Next, ikuti petunjuk di layar untuk text chunking and cleaning.

    Pertahankan pengaturan default. Basis pengetahuan secara otomatis melakukan chunking, pembersihan, dan pengindeksan dokumen.

Verifikasi basis pengetahuan dan indeks

Verifikasi konten basis pengetahuan dan indeks di RDS for PostgreSQL.

  1. Sambungkan ke instans RDS for PostgreSQL yang digunakan oleh Dify.

  2. Kueri ID basis pengetahuan.

    SELECT * FROM datasets;
  3. Turunkan nama tabel dari ID dataset: ganti tanda hubung (-) dengan garis bawah (_), tambahkan awalan embedding_vector_index_ dan akhiran _nod. Contoh kueri:

    SELECT * FROM embedding_vector_index_6b169753_****_****_be66_9bddc44a4848_nod;
  4. Konfirmasi indeks basis pengetahuan.

    Dify secara default membuat indeks HNSW untuk mempercepat pencarian kemiripan pgvector. Kueri pencarian tampak seperti:

    SELECT 
        meta, 
        text, 
        embedding <=> $1 AS distance 
    FROM 
        embedding_vector_index_6b169753_****_****_be66_9bddc44a4848_nod 
    ORDER BY 
        distance 
    LIMIT 
        $2;

    Verifikasi bahwa parameter indeks memenuhi kebutuhan Recall Anda. Hubungan antara m, ef_construction, dan recall didokumentasikan dalam pengujian kinerja pgvector (berdasarkan indeks HNSW).

    SELECT *
    FROM pg_indexes
    WHERE tablename = 'embedding_vector_index_6b169753_****_****_be66_9bddc44a4848_nod';

    Jika tidak ada indeks atau parameter default tidak memenuhi kebutuhan Recall Anda, buat indeks secara manual.

    1. (Opsional) Hapus indeks yang ada.

      DROP INDEX IF EXISTS embedding_vector_index_6b169753_****_****_be66_9bddc44a4848_nod;
    2. Buat indeks.

      CREATE INDEX ON embedding_vector_index_6b169753_****_****_be66_9bddc44a4848_nod 
      USING hnsw (embedding vector_cosine_ops)
      WITH (m = '16', ef_construction = '100');
    Catatan

    embedding_vector_index_6b169753_****_****_be66_9bddc44a4848_nod hanyalah contoh. Ganti dengan nama tabel aktual Anda.

Langkah 6: Buat aplikasi tanya jawab cerdas

Contoh ini menggunakan templat Question Classifier + Knowledge + Chatbot.

  1. Klik Studio > Create from Template.

  2. Temukan templat Question Classifier + Knowledge + Chatbot dan klik Use this template.

  3. Konfigurasikan nama dan ikon aplikasi, lalu klik Create.

  4. Pada halaman Studio, klik kartu aplikasi baru untuk membuka halaman orkestrasi aplikasi.

  5. Konfigurasikan alur kerja aplikasi: hapus modul Answer, pertahankan satu modul Knowledge Retrieval, dan ubah model AI untuk modul Question Classifier dan LLM menjadi Qwen.

    Saat mengonfigurasi model Qwen, atur nilai Top P kurang dari 1.

    Setelah Anda memilih model qwen-vl-max-0809, klik ikon pengaturan di samping nama model untuk membuka panel konfigurasi parameter, lalu atur Top P ke 0.8.

  6. Edit modul Question Classifier untuk menentukan kategori pertanyaan. Untuk basis pengetahuan PostgreSQL:

    • Pertanyaan terkait PostgreSQL: arahkan ke basis pengetahuan dan Qwen untuk jawaban ringkas.

    • Pertanyaan lainnya: arahkan langsung ke Qwen.

  7. Tambahkan basis pengetahuan PostgreSQL ke modul Knowledge Retrieval.

    Pada node Knowledge Retrieval, atur Query Variable ke sys.query, pilih pg untuk basis pengetahuan, dan atur mode pengambilan ke High-quality · Vector Retrieval.

  8. Klik Preview untuk menguji aplikasi, lalu klik Publish untuk menerapkan.