跳转到主要内容

在 Helm Chart 值中查找向量数据库配置

显示 Helm Chart 值

helm show values dify/dify

向量数据库配置概览

在 Helm chart 的 values 中,通过 vectorDB 字段配置向量数据库。Dify 支持两种部署方式:
模式何时选用切换字段
外部连接(推荐生产)连接到自管或云托管的向量数据库vectorDB.useExternal: true
内置部署(仅限测试)由 Helm chart 自动拉起一个集群内向量数据库vectorDB.useExternal: false
3.9.x chart 的默认值是 useExternal: true + externalType: "qdrant" 也就是说开箱即处于”连接外部 Qdrant”的状态——你必须把 externalQdrant.endpoint / apiKey 替换成自己集群的实际值,否则 api / worker Pod 会因无法连接向量库而启动失败。

1. 使用内置向量库

⚠️ 生产慎用:内置选项仅适合本地试用与功能验证,不提供高可用、备份和容量伸缩。生产环境请使用第二部分的外部连接方式。
Helm chart 提供两种集群内向量数据库可供启用。

内置 Qdrant

vectorDB.useExternal 设置为 false,并启用 qdrant.enabled 即可使用。
vectorDB:
  useExternal: false

qdrant:
  enabled: true
  replicaCount: 3
  image:
    repository: langgenius/qdrant
    pullPolicy: IfNotPresent
    tag: "v1.7.3"
  apiKey: "dify123456"
  persistence:
    accessModes: ["ReadWriteOnce"]
    size: 10Gi
  resources: {}
    # limits:
    #   cpu: 100m
    #   memory: 128Mi
    # requests:
    #   cpu: 100m
    #   memory: 128Mi
字段说明默认值
qdrant.enabled是否启用内置 Qdrantfalse
qdrant.replicaCount副本数3
qdrant.image.repository镜像仓库langgenius/qdrant
qdrant.image.tag镜像版本v1.7.3
qdrant.apiKeyQdrant API Keydify123456
qdrant.persistence.accessModes持久化存储访问模式["ReadWriteOnce"]
qdrant.persistence.size持久化存储大小10Gi
qdrant.resources资源限制(CPU/内存){}

内置 Weaviate

weaviate 在父 chart 的 values.yaml 里只显式列出 enabled 开关,但它实际上是一个嵌套 subchart(位于 chart tarball 的 dify/charts/weaviate/,约 947 行 values)。该 subchart 的所有字段都可以在你的 values.yaml 中以 weaviate.<field> 的形式覆盖——常用项见下表。
weaviate:
  enabled: true
  image:
    repo: semitechnologies/weaviate
    tag: "1.18.0"
  replicas: 1
  storage:
    size: 32Gi
    storageClassName: ""
  service:
    type: LoadBalancer  # 也可改为 ClusterIP / NodePort
  resources: {}
  authentication: {}
  authorization: {}
  modules: {}
字段说明subchart 默认值
weaviate.enabled是否启用内置 Weaviatefalse
weaviate.image.tagWeaviate 镜像版本(建议在自己的 values 中固定)1.18.0
weaviate.replicas副本数(导入数据后扩缩容受限,详见 subchart 说明)1
weaviate.storage.sizePVC 容量32Gi
weaviate.storage.storageClassName存储类""(默认 SC)
weaviate.service.typeService 类型LoadBalancer
weaviate.resources资源限制{}
weaviate.{startup,liveness,readiness}Probe探针配置见 subchart
weaviate.authentication / authorization鉴权配置见 subchart
weaviate.modules文本/图像向量化等扩展模块(contextionary、img2vec、transformers 等)见 subchart
💡 若需要获取完整字段列表,可下载 chart 包后查看其中的 dify/charts/weaviate/values.yaml
helm pull dify/dify --untar
less dify/charts/weaviate/values.yaml
如果只是连接已有的外部 Weaviate 集群,请改用下文 WeaviateexternalWeaviate 配置。

2. 使用外置向量库

如需连接外部向量数据库,配置分为两步: 第一步: 设置 vectorDB.useExternaltrue,并指定 externalType。3.9.x 的 chart 默认即为此状态(externalType: "qdrant"),你只需要在切换其他类型时覆盖 externalType
vectorDB:
  useExternal: true
  externalType: "<类型>"
第二步: 根据所选类型,填写对应的 externalXxx 配置块。values.yaml 已经为每种类型预置了默认骨架,你只需覆盖目标类型对应的字段即可,无需删除其他类型的块。各类型的字段示例见 第 4 节 附录

支持的类型

Dify 企业版支持的类型

Dify 企业版官方支持以下向量数据库,您同时可获得针对向量数据库连接的技术支持(详见第三节)。
  • qdrant(建议)
  • weaviate(可选)
  • elasticsearch(可选)

社区支持的类型

Dify 社区版提供以下向量数据库支持。如果你想使用这些向量数据库,Dify 企业版也支持它们,但 Dify 提供有限的技术支持(详见第三节)。
  • milvus
  • relyt
  • pgvecto-rs
  • tencent
  • analyticdb
  • opensearch
  • lindorm

3. 企业版技术支持范围

当 Dify 企业版部署在云上(如 AWS)并连接到外部向量数据库时,整套链路通常涉及 Dify、向量数据库厂商、云厂商 三方。Dify 支持团队将先判断故障所在层。

责任共担模型

范围责任方
Dify 侧配置:数据库配置、连接配置、知识库配置Dify
Dify 数据库操作逻辑:建立连接、Schema/Collection 初始化、写入、检索召回Dify
Helm chart 中 vectorDB.* / externalXxx 字段的语义与取值约束Dify
向量数据库自身:集群可用性、分片/副本、版本升级、性能调优、备份恢复向量数据库厂商 / 托管服务方
基础设施:VPC、子网、安全组、IAM/IRSA、DNS、负载均衡、跨 AZ 网络云厂商
容量规划与配置取值:节点规格、存储容量、QPS 与并发预估用户(Dify 仅提供建议)

Dify 不直接支持的范围

下列问题可能在 Dify 报错信息中暴露出来,但根因不在 Dify 侧,需要由数据库厂商、云厂商或用户自行处理:
  • 向量数据库本身的运维:重启、升级、扩缩容、备份恢复
  • 数据库侧的索引参数调优
  • 网络与权限层故障:VPC peering、安全组放行、IAM/IRSA、TLS 证书
  • 容量规划与压测:节点规格、存储容量、QPS 上限的预估(Dify 仅提供 Dify 侧的建议)
  • 由数据库版本 bug 或厂商行为变更引起的回归(Dify 仅跟进,但根因修复在厂商侧)

两档支持级别的差异

支持级别包含产品Dify 提供的能力
官方支持qdrant、weaviate、elasticsearchDify 侧连接器维护、版本兼容性测试、Helm 配置问题协助排查
社区支持milvus、relyt、pgvecto-rs、tencent、analyticdb、opensearch、lindorm连接器可用、配置文档、best-effort 排障;深度问题建议优先寻求厂商或社区支持
有关您使用的 Dify 企业版所支持的向量数据库的更多详细信息,请参阅 values.yaml :https://helm-watchdog.dify.ai/ 。实际技术支持情况将由 Dify 企业版技术支持团队基于您的具体问题进行评估后判断。

4. 附录:各向量数据库的配置示例

Qdrant

externalType: "qdrant"
  externalQdrant:
    endpoint: "http://your-qdrant-cluster-url.qdrant.tech/"
    apiKey: "#REPLACE_ME#"
字段说明示例
endpointQdrant 集群的 URLhttp://your-qdrant-cluster-url.qdrant.tech/
apiKeyQdrant API Key-

Weaviate

externalType: "weaviate"
  externalWeaviate:
    endpoint: "http://weaviate:8080"
    apiKey: "#REPLACE_ME#"
字段说明示例
endpointWeaviate 服务地址http://weaviate:8080
apiKeyWeaviate API Key-

Elasticsearch

externalType: "elasticsearch"
  externalElasticsearch:
    host: "127.0.0.1"
    port: 9200
    username: "elastic"
    password: "#REPLACE_ME#"
字段说明示例
hostElasticsearch 主机地址127.0.0.1
port端口号9200
username用户名elastic
password密码-

Milvus

externalType: "milvus"
  externalMilvus:
    uri: "http://127.0.0.1:19530"
    token: ""
    user: ""
    password: ""
    database: "default"
字段说明示例
uriMilvus 服务器连接 URIhttp://127.0.0.1:19530
token认证 Token(可选)-
user用户名(可选)-
password密码(可选)-
database数据库名称default

Relyt (pgvectors)

externalType: "relyt"
  externalRelyt:
    host: "your-relyt.domain"
    port: 5431
    user: "postgres"
    password: "#REPLACE_ME#"
    database: "pgvectors"
字段说明示例
hostRelyt 主机地址your-relyt.domain
port端口号5431
user用户名postgres
password密码-
database数据库名称pgvectors

PgVecto-RS

externalType: "pgvecto-rs"
  externalPgVectoRS:
    host: "your-pgvectors.domain"
    port: 5432
    user: "postgres"
    password: "#REPLACE_ME#"
    database: "pgvectors"
字段说明示例
hostPgVecto-RS 主机地址your-pgvectors.domain
port端口号5432
user用户名postgres
password密码-
database数据库名称pgvectors

Tencent VectorDB

externalType: "tencent"
  externalTencentVectorDB:
    host: "your-tencent-vector-db.domain"
    apiKey: "#REPLACE_ME#"
    timeout: 30
    username: "tencent"
    password: "#REPLACE_ME#"
    shard: 1
    replicas: 2
    database: "tencent"
字段说明示例
host腾讯向量数据库主机地址your-tencent-vector-db.domain
apiKeyAPI Key-
timeout连接超时时间(秒)30
username用户名tencent
password密码-
shard分片数1
replicas副本数2
database数据库名称tencent

OpenSearch

externalType: "opensearch"
  externalOpenSearch:
    host: "your-opensearch.domain"
    port: 9200
    user: ""
    password: "#REPLACE_ME#"
    useTLS: false
字段说明示例
hostOpenSearch 主机地址your-opensearch.domain
port端口号9200
user用户名(可选)-
password密码-
useTLS是否启用 TLSfalse

AnalyticDB

externalType: "analyticdb"
  externalAnalyticDB:
    keyID: "#REPLACE_ME#"
    keySecret: "#REPLACE_ME#"
    regionID: "#REPLACE_ME#"
    instanceID: "#REPLACE_ME#"
    account: "#REPLACE_ME#"
    password: "#REPLACE_ME#"
    host: "#REPLACE_ME#"
    port: 5432
    namespace: ""
    namespacePassword: ""
    minConnection: 1
    maxConnection: 5
字段说明示例
keyID阿里云 AccessKey ID-
keySecret阿里云 AccessKey Secret-
regionID地域 ID-
instanceID实例 ID-
account账号-
password密码-
host主机地址-
port端口号5432
namespace命名空间(可选)-
namespacePassword命名空间密码(可选)-
minConnection最小连接数1
maxConnection最大连接数5

Lindorm

externalType: "lindorm"
  externalLindorm:
    url: "http://localhost:30070"
    username: "admin"
    password: "admin"
    indexType: "hnsw"
    distanceType: "l2"
    usingUgc: true
    queryTimeout: 2.0
字段说明示例
urlLindorm 搜索引擎地址http://localhost:30070
username用户名admin
password密码admin
indexType索引类型hnsw
distanceType距离计算类型l2
usingUgc是否使用 UGC 模式true
queryTimeout查询超时时间(秒)2.0