需在dify中接入opensearch作为双模检索引擎,配置ik分词器与dense_vector字段,修改.env启用opensearch连接,并通过测试连接与文档上传验证链路。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要在Dify中接入OpenSearch作为全文检索与向量检索双模引擎,支撑知识库问答类RAG应用的实时召回与语义匹配能力,避免默认Weaviate在千万级文档下的性能瓶颈和单点故障风险。
准备OpenSearch实例与网络连通
开通天翼云云搜索服务OpenSearch实例,获取内网地址(如https://opensearch-xxx.cn-east-3.es.tianyi.cloud:9200)和实例密码;确保部署Dify的云主机与该OpenSearch实例处于同一VPC且安全组放行9200端口。
这一步不可跳过:【OpenSearch必须启用vector dense_vector字段支持,并已安装ik分词器插件】。若未预装ik,请登录OpenSearch控制台→节点管理→插件中心手动安装,否则后续中文分词将失效,检索准确率归零。
创建专用索引并配置mapping:使用curl或Kibana Dev Tools执行以下命令,显式声明content字段用ik_max_word、embedding字段为dense_vector(dims=1024,similarity=cosine)。
修改Dify环境配置启用OpenSearch
进入Dify项目根目录下的docker/子目录,打开.env文件。
将VECTOR_STORE值由默认weaviate改为opensearch;同时取消注释并填写以下四行:
OPENSEARCH_HOST=https://opensearch-xxx.cn-east-3.es.tianyi.cloud:9200
OPENSEARCH_USERNAME=elastic
OPENSEARCH_PASSWORD=your_actual_password
OPENSEARCH_INDEX_NAME=dify_knowledge_v1
注意:【OPENSEARCH_HOST必须带https协议头,且端口明确写出;若漏掉s或端口,Dify启动时会静默失败,日志仅显示“connection refused”】。
构建索引并验证连接
第一步:执行docker-compose up -d启动全部服务;等待约90秒,直到docker ps | grep api显示healthy状态。
第二步:访问http://[Dify服务器IP]:3000(或你配置的EXPOSE_NGINX_PORT),登录后进入「数据集」→「新建知识库」。
第三步:在「高级设置」中勾选「启用混合检索」→「外部检索引擎」选择「OpenSearch」→点击「测试连接」;成功提示“Connection successful”即表示链路打通。
若测试失败,请立即检查docker logs docker-api-1 2>&1 | grep opensearch,重点排查SSL证书校验错误(需在.env中追加OPENSEARCH_VERIFY_CERTS=false临时绕过)或DNS解析超时(应改用内网IP直连而非域名)。
第四步:上传一份PDF文档,触发自动切片与嵌入;数分钟后,在OpenSearch Dashboard的_cat/indices中确认dify_knowledge_v1索引文档数增长,且docs.count大于0。











