一、架构
┌──────────────────────────────────────────────────┐│ Dify 平台 ││ ┌──────────┐ ┌───────────┐ ┌──────────────┐ ││ │ RAG 引擎 │ │ Agent │ │ 工作流引擎 │ ││ └─────┬────┘ └─────┬─────┘ └──────┬───────┘ ││ └─────────────┼───────────────┘ │└──────────────────────┼─────────────────────────────┘ │ ┌─────────────┼─────────────┐ ▼ ▼ ▼┌──────────────┐ ┌──────────┐ ┌──────────────┐│ PostgreSQL │ │ 大模型 │ │ 外部工具 ││ + pgvector │ │ (推理) │ │ (API) ││ (向量存储) │ │ │ │ │└──────────────┘ └──────────┘ └──────────────┘
二、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 聊天应用
1. 新建应用 → 选择聊天助手。
2. 添加知识库上下文。
3. 配置检索策略:
·向量检索(语义搜索)。
·全文检索(关键词匹配)。
·混合检索(推荐)。
4. 设置系统提示词。
5. 选择大模型(如腾讯混元、通义、Qwen 等已开通的模型)。
八、高级检索配置
| 参数 | 说明 | 建议值 |
| Top K | 返回最相关的文档数 | 3 – 5 |
| Score 阈值 | 最低相似度分数 | 0.5 – 0.7 |
| 重排序 | 是否使用 Rerank 模型 | 推荐开启 |
| Chunk 大小 | 文档切片大小 | 500 – 1000 字 |
九、配置 Agent 工具
可以为 Agent 添加数据库查询工具:
# 自定义工具配置name: pg_querydescription: 查询 PostgreSQL 数据库parameters: – name: sql type: string description: 要执行的 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。
·数据库密码请通过环境变量或密钥管理服务注入,禁止硬编码。
十四、相关文档
·pgvector 向量扩展使用指南。
·tencentdb_ai 插件功能介绍。
·Dify 产品文档。