必须用Elasticsearch替代Dify默认向量库以支撑高并发与千万级实时召回;部署9.1.3集群(3数据+2协调节点,禁用master选举),索引需设routing_partition_size=2、content用ik_max_word分词、vector为cosine相似度dense_vector;关闭自动refresh,改bulk后手动refresh;Dify中启用混合检索并绑定ES,配置Basic Auth与命名空间路由;按查询特征调权(keyword/semantic);Nginx代理层实现least_conn负载与条件缓存(排除vector_query等语义查询)。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

准备Elasticsearch集群与索引
必须用Elasticsearch替代Dify默认向量库,否则无法支撑每秒数百次并发查询与千万级文档实时召回。
使用腾讯云ES AI搜索增强版9.1.3集群,部署3节点数据节点+2节点协调节点,禁用master节点选举,避免脑裂风险;协调节点只处理HTTP请求与路由,不参与写入或存储。
创建索引时显式设置routing_partition_size=2,并在mapping中为content字段配置ik_max_word分词器与term_vectors: with_positions_offsets;为vector字段声明type: dense_vector、dims: 768、similarity: cosine、index: true。
【必须关闭refresh_interval自动刷新】,改用bulk写入后手动调用POST /my_index/_refresh,否则高频更新将触发段合并风暴,CPU飙升且查询延迟突增超300ms。
在Dify控制台启用混合检索并绑定ES
登录Dify控制台→「数据集」→「新建知识库」→「高级设置」,勾选「启用混合检索」。
在「外部检索引擎」下拉框中选择「Elasticsearch」,填写Host为协调节点内网地址(如http://es-coord-01:9200),Index name填已创建的索引名(如kb_finance_2024)。
Authentication选择「Basic Auth」,输入用户名密码;Advanced Settings中启用「Enable query routing by namespace」——该选项开启后,Dify会按知识库命名空间自动路由到对应ES索引,避免跨库混查。
权重配置需按业务查询特征调整:若用户常搜带编号条款(如“SOP-2023-004第5.2条”),设keyword_weight=0.7、semantic_weight=0.3;若多为自然语言提问(如“海外差旅怎么报销?”),则反向设为0.3和0.7。
部署Nginx代理层实现并发感知与缓存协同
第一步:在Dify所在VPC内新建一台4核8G ECS,安装nginx 1.24+,配置upstream指向全部3个ES数据节点的9200端口,启用least_conn负载均衡策略。
第二步:添加proxy_cache_path指令,定义10GB本地磁盘缓存区,key为$host$request_uri,inactive=30m,max_size=8g。
第三步:对GET /_search请求启用proxy_cache,但必须排除含"vector_query"或"runtime_mappings"的请求——这两类语义重写类查询不可缓存,必须直连ES数据节点。











