Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Build an AI application with RDS for PostgreSQL and Dify

Última atualização: Jun 26, 2026

Use o RDS for PostgreSQL como banco de dados relacional e armazenamento vetorial do Dify, plataforma LLM de código aberto, para desenvolver uma aplicação inteligente de perguntas e respostas.

Etapa 1: Criar uma instância RDS for PostgreSQL

  1. Criar rapidamente uma instância RDS for PostgreSQL.

  2. Criar uma conta e um banco de dados para a instância RDS for PostgreSQL.

    Observe o seguinte:

    • Ao criar a conta, defina Account Type como Privileged Account.

    • Ao criar o banco de dados, configure Authorized Account com a conta privilegiada criada.

  3. Ative um endpoint público para a instância RDS for PostgreSQL. Ativar ou desativar um endpoint público.

    Adicione o endereço IP público da sua instância ECS à lista de permissões da instância RDS for PostgreSQL. Configurar uma lista de permissões de endereços IP.

  4. Ative a extensão vetorial no banco de dados de destino. Gerenciar extensões.

Etapa 2: Implantar o Dify

  1. Crie uma instância ECS. Criar uma instância usando o assistente.

    • Instâncias ECS baseadas em CPU suportam LLMs online.

    • Instâncias ECS aceleradas por GPU suportam LLMs online e implantados localmente.

    Importante
    • Este artigo usa o Alibaba Cloud Linux 3 como exemplo.

    • Se usar uma instância ECS acelerada por GPU, instale o driver da GPU durante a configuração da imagem para permitir a implantação de LLMs com o Ollama.

  2. Instalar o Docker na instância ECS.

  3. (Opcional) Se estiver usando uma instância ECS acelerada por GPU, execute o comando abaixo para instalar o componente container-toolkit.

    Instalar o componente 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. Clone o código-fonte do Dify.

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

    Para instalar uma versão específica, use o parâmetro branch. Versões disponíveis: dify. Exemplo para a v1.0.0:

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

    Se o Git não estiver instalado, execute sudo yum install git -y para instalá-lo.

  5. Configure as variáveis de ambiente para definir o RDS for PostgreSQL como banco de dados e armazenamento vetorial padrão.

    1. Defina o RDS for PostgreSQL como banco de dados padrão.

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

      Substitua esses valores pelas suas configurações reais.

      Parâmetro

      Descrição

      DB_USERNAME

      Conta privilegiada da instância RDS for PostgreSQL.

      DB_PASSWORD

      Senha da conta privilegiada da instância RDS for PostgreSQL.

      DB_HOST

      Endpoint público da instância RDS for PostgreSQL.

      DB_PORT

      Porta pública da instância RDS for PostgreSQL. O valor padrão é 5432.

      DB_DATABASE

      Nome do banco de dados na instância RDS for PostgreSQL.

    2. Configure o RDS for PostgreSQL como banco de dados vetorial padrão.

      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

      Substitua esses valores pelas suas configurações reais.

      Parâmetro

      Descrição

      VECTOR_STORE

      Especifica o armazenamento vetorial. Use pgvector para a extensão do PostgreSQL.

      PGVECTOR_USERNAME

      Conta privilegiada da instância RDS for PostgreSQL.

      PGVECTOR_PASSWORD

      Senha da conta privilegiada da instância RDS for PostgreSQL.

      PGVECTOR_HOST

      Endpoint público da instância RDS for PostgreSQL.

      PGVECTOR_PORT

      Porta pública da instância RDS for PostgreSQL. O valor padrão é 5432.

      PGVECTOR_DATABASE

      Nome do banco de dados na instância RDS for PostgreSQL.

    Alternativamente, configure esses parâmetros no arquivo .env.

    Configurar o RDS for PostgreSQL usando .env

    1. Copie .env.example para .env. Essa ação substitui o arquivo existente.

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

      Após obter o código-fonte do Dify, os arquivos .env.example e .env ficam automaticamente disponíveis no diretório /root/dify/docker.

    2. Edite o arquivo .env com os detalhes da sua instância RDS for PostgreSQL.

      # Default database configuration
      DB_USERNAME=testdbuser
      DB_PASSWORD=dbPassword
      DB_HOST=pgm-****.pg.rds.aliyuncs.com
      DB_PORT=5432
      DB_DATABASE=testdb01
      # Default vector database configuration
      VECTOR_STORE=pgvector
      PGVECTOR_HOST=pgm-****.pg.rds.aliyuncs.com
      PGVECTOR_PORT=5432
      PGVECTOR_USER=testdbuser
      PGVECTOR_PASSWORD=dbPassword
      PGVECTOR_DATABASE=testdb01
  6. (Opcional) Para economizar recursos, desative o banco de dados padrão e os contêineres do Weaviate editando os arquivos .env e docker-compose.yaml.

    • Editar o arquivo .env

      1. (Opcional) Copie .env.example para .env.

        Importante

        Ignore esta etapa se já tiver copiado o arquivo ao configurar o banco de dados.

        cd /root/dify/docker
        cp .env.example .env
      2. Comente a seguinte linha no arquivo .env.

        #COMPOSE_PROFILES=${VECTOR_STORE:-weaviate}
    • Editar o arquivo docker-compose.yaml

      1. Faça backup do arquivo docker-compose.yaml.

        cd /root/dify/docker
        cp docker-compose.yaml docker-compose.yaml.bak
      2. Edite o arquivo docker-compose.yaml para desativar o contêiner do banco de dados padrão.

        • Na seção do serviço API, comente - db abaixo de depends_on:.

          # API service
          api:
            ......
            depends_on:
              #- db          
              - redis  
        • Na seção do serviço worker, comente - db abaixo de depends_on:.

          # worker service
          # The Celery worker for processing the queue.
          worker:
            ......
            depends_on:
              #- db
              - redis
        • Na seção The postgres database, adicione a configuração profiles: -pg.

          # The postgres database.
          db:
            image: postgres:15-alpine
            profiles:
              - pg 
        • Na seção The Weaviate vector store, comente - '' abaixo de profiles:.

          # The Weaviate vector store.    
          weaviate:
             image: semitechnologies/weaviate:1.19.0
             profiles:
               #- ''
               - weaviate
  7. Inicie o Dify.

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

Etapa 3: Acessar o serviço Dify

  1. Abra http://<public_IP_address_of_your_ECS_instance>/install em um navegador para iniciar a instalação do Dify.

    Nota

    Se a página não carregar, atualize-a. O Dify pode ainda estar inicializando.

  2. Siga as instruções para set up an administrator account (e-mail, nome de usuário e senha).

Etapa 4: Adicionar e configurar um modelo de IA

Este exemplo usa o Qwen.

  1. Faça login no Dify.

  2. Clique em seu username > Settings.

  3. Na página Settings, escolha Model Providers > Qwen > (Set).

  4. Na página Settings do Qwen, clique em link para obter uma chave API no Alibaba Cloud Model Studio.

  5. Cole sua chave API e clique em Save.

Em uma instância ECS acelerada por GPU, você pode implantar o LLM Qwen localmente.

Implantar o serviço LLM Qwen no ECS

  1. Crie um contêiner ollama e mapeie a porta 11434 para o host.

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

    O ID do contêiner será retornado:

    a2201932a0c10da50845a85fc8e00c2178d8b4d0936a92f383b284a7ce51****
  2. Abra um shell dentro do contêiner e implante os modelos. Este exemplo usa qwen2.5-coder:7b e 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. Adicione uma regra de grupo de segurança de entrada (inbound) para permitir a porta TCP 11434/11434. Restrinja a origem ao seu endereço IP ou use 0.0.0.0/0 para testes.

  4. Faça login no Dify.

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

  6. Configure dois modelos: defina o LLM como qwen2.5-coder:7b e o modelo de Text Embedding como rjmalagon/gte-qwen2-7b-instruct:f16.

    Defina o Model Name como qwen2.5-coder:7b e rjmalagon/gte-qwen2-7b-instruct:f16, respectivamente. Configure a Base URL para http://<public_IP_address_of_your_ECS_instance>:11434. Mantenha as configurações padrão para os demais parâmetros.

Etapa 5: Criar uma base de conhecimento

Uma base de conhecimento permite que a aplicação de perguntas e respostas responda com precisão a questões específicas de um domínio.

Pré-requisitos

Prepare os arquivos de corpus para a base de conhecimento. Formatos suportados: TXT, MARKDOWN, MDX, PDF, HTML, XLSX, XLS, DOCX, CSV, MD e HTM. Tamanho máximo do arquivo: 15 MB.

Procedimento

  1. Clique em Knowledge > Create Knowledge > Import from Text > Select File > Next para enviar seus arquivos.

    Formatos suportados: TXT, MARKDOWN, MDX, PDF, HTML, XLSX, XLS, DOCX, CSV, MD e HTM. Tamanho máximo do arquivo: 15 MB.

  2. Após clicar em Next, siga as instruções na tela para executar o text chunking and cleaning.

    Mantenha as configurações padrão. A base de conhecimento segmentará, limpará e indexará os documentos automaticamente.

Verificar a base de conhecimento e o índice

Valide o conteúdo da base de conhecimento e o índice no RDS for PostgreSQL.

  1. Conectar a uma instância RDS for PostgreSQL usada pelo Dify.

  2. Consulte o ID da base de conhecimento.

    SELECT * FROM datasets;
  3. Derive o nome da tabela a partir do ID do dataset: substitua hifens (-) por underscores (_), adicione o prefixo embedding_vector_index_ e o sufixo _nod. Exemplo de consulta:

    SELECT * FROM embedding_vector_index_6b169753_****_****_be66_9bddc44a4848_nod;
  4. Confirme o índice da base de conhecimento.

    Por padrão, o Dify cria um índice HNSW para acelerar buscas de similaridade do pgvector. A consulta de busca tem a seguinte estrutura:

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

    Verifique se os parâmetros do índice atendem aos seus requisitos de recall. A relação entre m, ef_construction e recall está documentada em Teste de desempenho do pgvector (baseado em índice HNSW).

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

    Se não existir nenhum índice ou se os parâmetros padrão não atenderem aos seus requisitos de recall, crie um manualmente.

    1. (Opcional) Remova o índice existente.

      DROP INDEX IF EXISTS embedding_vector_index_6b169753_****_****_be66_9bddc44a4848_nod;
    2. Crie o índice.

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

    embedding_vector_index_6b169753_****_****_be66_9bddc44a4848_nod é apenas um exemplo. Substitua-o pelo nome real da sua tabela.

Etapa 6: Criar uma aplicação inteligente de perguntas e respostas

Este exemplo usa o modelo Question Classifier + Knowledge + Chatbot.

  1. Clique em Studio > Create from Template.

  2. Localize o modelo Question Classifier + Knowledge + Chatbot e clique em Use this template.

  3. Configure o nome e o ícone da aplicação e clique em Create.

  4. Na página Studio, clique em cartão da nova aplicação para abrir a página de orquestração.

  5. Configure o fluxo de trabalho da aplicação: exclua o módulo Answer, mantenha um módulo Knowledge Retrieval e altere o modelo de IA dos módulos Question Classifier e LLM para Qwen.

    Ao configurar o modelo Qwen, defina o valor Top P como menor que 1.

    Após selecionar o modelo qwen-vl-max-0809, clique em ícone de configurações ao lado do nome do modelo para abrir o painel de configuração de parâmetros e defina Top P como 0.8.

  6. Edite o módulo Question Classifier para definir as categorias de perguntas. Para uma base de conhecimento PostgreSQL:

    • Perguntas relacionadas ao PostgreSQL: direcione para a base de conhecimento e para o Qwen para obter uma resposta resumida.

    • Outras perguntas: direcione diretamente para o Qwen.

  7. Adicione a base de conhecimento PostgreSQL ao módulo Knowledge Retrieval.

    No nó Knowledge Retrieval, defina Query Variable como sys.query, selecione pg para a knowledge base e configure o modo de recuperação para High-quality · Vector Retrieval.

  8. Clique em Preview para testar a aplicação e, em seguida, clique em Publish para implantá-la.