概述
Dify 是一个开源的 LLM 应用开发平台,支持通过可视化方式构建 RAG、Agent、工作流等 AI 应用。结合腾讯云数据库 PostgreSQL 作为向量存储和知识库后端,可以快速构建企业级 AI 应用。
架构
┌──────────────────────────────────────────────────┐│ Dify 平台 ││ ┌──────────┐ ┌───────────┐ ┌──────────────┐ ││ │ RAG 引擎 │ │ Agent │ │ 工作流引擎 │ ││ └─────┬────┘ └─────┬─────┘ └──────┬───────┘ ││ └─────────────┼───────────────┘ │└──────────────────────┼─────────────────────────────┘│┌─────────────┼─────────────┐▼ ▼ ▼┌──────────────┐ ┌──────────┐ ┌──────────────┐│ PostgreSQL │ │ 大模型 │ │ 外部工具 ││ + pgvector │ │ (推理) │ │ (API) ││ (向量存储) │ │ │ │ │└──────────────┘ └──────────┘ └──────────────┘
部署 Dify
Docker Compose 部署
# 克隆 Difygit clone https://github.com/langgenius/dify.gitcd dify/docker# 配置环境变量cp .env.example .env
配置 PostgreSQL 作为向量数据库
在
.env 中配置:# 向量数据库类型选择 pgvectorVECTOR_STORE=pgvector# PostgreSQL 连接信息PGVECTOR_HOST=your-pg-instance.tencentcdb.comPGVECTOR_PORT=5432PGVECTOR_USER=dify_userPGVECTOR_PASSWORD=your-passwordPGVECTOR_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_documentsUSING 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_querydescription: 查询 PostgreSQL 数据库parameters:- name: sqltype: stringdescription: 要执行的 SQL 查询
说明:
将 SQL 直接交给 Agent 执行存在注入风险。建议改为白名单函数 / 视图调用模式:仅暴露固定签名的 RPC 函数(如
rag_search、ai_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。
数据库密码请通过环境变量或密钥管理服务注入,禁止硬编码。