文档中心>云数据库 PostgreSQL>AI 能力>实践教程>基于 PostgreSQL + Dify 构建 AI 应用

基于 PostgreSQL + Dify 构建 AI 应用

最近更新时间:2026-06-01 16:58:31

我的收藏

概述

Dify 是一个开源的 LLM 应用开发平台,支持通过可视化方式构建 RAG、Agent、工作流等 AI 应用。结合腾讯云数据库 PostgreSQL 作为向量存储和知识库后端,可以快速构建企业级 AI 应用。

架构

┌──────────────────────────────────────────────────┐
│ Dify 平台 │
│ ┌──────────┐ ┌───────────┐ ┌──────────────┐ │
│ │ RAG 引擎 │ │ Agent │ │ 工作流引擎 │ │
│ └─────┬────┘ └─────┬─────┘ └──────┬───────┘ │
│ └─────────────┼───────────────┘ │
└──────────────────────┼─────────────────────────────┘
┌─────────────┼─────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────┐ ┌──────────────┐
│ PostgreSQL │ │ 大模型 │ │ 外部工具 │
+ pgvector │ │ (推理) │ │ (API)
(向量存储) │ │ │ │ │
└──────────────┘ └──────────┘ └──────────────┘

部署 Dify

Docker Compose 部署

# 克隆 Dify
git clone https://github.com/langgenius/dify.git
cd dify/docker

# 配置环境变量
cp .env.example .env

配置 PostgreSQL 作为向量数据库

.env 中配置:
# 向量数据库类型选择 pgvector
VECTOR_STORE=pgvector

# PostgreSQL 连接信息
PGVECTOR_HOST=your-pg-instance.tencentcdb.com
PGVECTOR_PORT=5432
PGVECTOR_USER=dify_user
PGVECTOR_PASSWORD=your-password
PGVECTOR_DATABASE=dify_vectors

数据库初始化

-- 创建 Dify 专用数据库
CREATE DATABASE dify_vectors;

-- 连接到 dify_vectors 数据库后执行:
CREATE EXTENSION IF NOT EXISTS vector;

-- 创建 Dify 用户
CREATE USER dify_user WITH PASSWORD 'secure-password';
GRANT ALL PRIVILEGES ON DATABASE dify_vectors TO dify_user;
GRANT ALL ON SCHEMA public TO dify_user;

创建知识库

在 Dify 中配置

1. 登录 Dify 控制台。
2. 进入知识库创建知识库
3. 上传文档(支持 PDF、TXT、Markdown、HTML)。
4. 选择嵌入模型(推荐 BGE-M3)。
5. 向量数据自动存储到 PostgreSQL。

底层存储结构

Dify 在 PostgreSQL 中自动创建的表(具体表结构以 Dify 当前版本为准):
-- Dify 自动创建的向量表(示意)
CREATE TABLE embedding_documents (
id UUID PRIMARY KEY,
dataset_id UUID,
document_id UUID,
content TEXT,
embedding vector(1024),
metadata JSONB,
created_at TIMESTAMPTZ
);

-- HNSW 索引
CREATE INDEX ON embedding_documents
USING hnsw (embedding vector_cosine_ops);

构建 RAG 应用

创建 RAG 聊天应用

1. 新建应用 → 选择聊天助手
2. 添加知识库上下文。
3. 配置检索策略:
向量检索(语义搜索)。
全文检索(关键词匹配)。
混合检索(推荐)。
4. 设置系统提示词。
5. 选择大模型(如腾讯混元、通义、Qwen 等已开通的模型)。

高级检索配置

参数
说明
建议值
Top K
返回最相关的文档数
3 – 5
Score 阈值
最低相似度分数
0.5 – 0.7
重排序
是否使用 Rerank 模型
推荐开启
Chunk 大小
文档切片大小
500 – 1000 字

构建 Agent 应用

配置 Agent 工具

可以为 Agent 添加数据库查询工具:
# 自定义工具配置
name: pg_query
description: 查询 PostgreSQL 数据库
parameters:
- name: sql
type: string
description: 要执行的 SQL 查询
说明:
将 SQL 直接交给 Agent 执行存在注入风险。建议改为白名单函数 / 视图调用模式:仅暴露固定签名的 RPC 函数(如 rag_searchai_answer),由后端做参数校验后再访问数据库。

结合 tencentdb_ai

通过 Dify 的 HTTP 工具调用 PostgreSQL REST API:
POST https://your-pg-api/rpc/ai_answer
{"question": "{{user_input}}"}

工作流应用

适合复杂的多步骤 AI 处理流程:
用户输入 → 意图识别 → 条件分支
├── 知识问答 → RAG 检索 → 大模型生成
├── 数据查询 → SQL 生成 → 执行 → 格式化
└── 操作指令 → 工具调用 → 结果返回

性能优化

1. 索引类型:大规模数据(>100 万向量)使用 pgvectorscale DiskANN。
2. 连接池:配置 PgBouncer 管理连接。
3. 分批索引:大量文档分批导入,避免内存溢出。
4. 定期维护VACUUM ANALYZE 保持统计信息新鲜。

注意事项

Dify 社区版免费,企业版需付费。
PostgreSQL 版本需 ≥ 14以使用 pgvector。
确保 Dify 服务器和 PostgreSQL 在同一 VPC。
生产环境建议 PostgreSQL 规格 ≥ 4核8G。
数据库密码请通过环境变量或密钥管理服务注入,禁止硬编码。

相关文档