agentic_huge_data_base / wiki
页面 Dify · 4.4 向量数据库集成架构·DeepWiki 中文全文译文

4.4 · 向量数据库集成架构(Vector Database Integration Architecture)

应用编排与外部知识接入 · 聚焦本章的模块关系、源码依据与实现要点。

项目Dify 章节4.4 状态全文译文 模块检索、召回与索引、系统架构、安装与启动、测试、发布与运维
源码线索
  • api/.env.example
  • api/app.py
  • api/app_factory.py
  • api/configs/feature/__init__.py
  • api/configs/middleware/__init__.py
  • api/configs/observability/__init__.py
  • api/configs/observability/otel/otel_config.py
  • api/configs/packaging/__init__.py
  • api/controllers/console/datasets/datasets.py
  • api/core/plugin/backwards_invocation/model.py
模块标签
  • 检索、召回与索引
  • 系统架构
  • 安装与启动
  • 测试、发布与运维
  • 配置治理

章节正文

向量数据库集成架构

向量数据库集成架构

相关源文件

本章引用的主要源码文件:

  • api/.env.example
  • api/app.py
  • api/app_factory.py
  • api/configs/feature/__init__.py
  • api/configs/middleware/__init__.py
  • api/configs/observability/__init__.py
  • api/configs/observability/otel/otel_config.py
  • api/configs/packaging/__init__.py
  • api/controllers/console/datasets/datasets.py
  • api/core/plugin/backwards_invocation/model.py
  • api/core/rag/datasource/keyword/jieba/jieba.py
  • api/core/rag/datasource/keyword/jieba/jieba_keyword_table_handler.py
  • api/core/rag/datasource/vdb/vector_factory.py
  • api/core/rag/datasource/vdb/vector_type.py
  • api/core/rag/retrieval/router/multi_dataset_function_call_router.py
  • api/core/rag/retrieval/router/multi_dataset_react_route.py
  • api/core/rag/splitter/fixed_text_splitter.py
  • api/core/rag/splitter/text_splitter.py
  • api/extensions/ext_compress.py
  • api/extensions/ext_otel.py
  • api/extensions/otel/instrumentation.py
  • api/providers/vdb/vdb-couchbase/src/dify_vdb_couchbase/couchbase_vector.py
  • api/providers/vdb/vdb-elasticsearch/src/dify_vdb_elasticsearch/elasticsearch_vector.py
  • api/providers/vdb/vdb-huawei-cloud/src/dify_vdb_huawei_cloud/huawei_cloud_vector.py
  • api/providers/vdb/vdb-lindorm/src/dify_vdb_lindorm/lindorm_vector.py
  • api/providers/vdb/vdb-milvus/src/dify_vdb_milvus/milvus_vector.py
  • api/providers/vdb/vdb-opensearch/src/dify_vdb_opensearch/opensearch_vector.py
  • api/providers/vdb/vdb-oracle/src/dify_vdb_oracle/oraclevector.py
  • api/providers/vdb/vdb-pgvector/src/dify_vdb_pgvector/pgvector.py
  • api/providers/vdb/vdb-relyt/src/dify_vdb_relyt/relyt_vector.py
  • api/providers/vdb/vdb-tablestore/src/dify_vdb_tablestore/tablestore_vector.py
  • api/providers/vdb/vdb-tidb-vector/src/dify_vdb_tidb_vector/tidb_vector.py
  • api/providers/vdb/vdb-upstash/src/dify_vdb_upstash/upstash_vector.py
  • api/providers/vdb/vdb-vastbase/src/dify_vdb_vastbase/vastbase_vector.py
  • api/pyproject.toml
  • api/tests/unit_tests/configs/test_dify_config.py
  • api/tests/unit_tests/core/rag/splitter/__init__.py
  • api/tests/unit_tests/core/rag/splitter/test_text_splitter.py
  • api/tests/unit_tests/core/workflow/graph_engine/test_table_runner.py
  • api/uv.lock
  • docker/.env.example
  • docker/README.md
  • docker/docker-compose-template.yaml
  • docker/docker-compose.middleware.yaml
  • docker/docker-compose.yaml
  • docker/envs/core-services/shared.env.example
  • docker/envs/infrastructure/nginx.env.example
  • docker/envs/security.env.example
  • docker/nginx/conf.d/default.conf.template
  • web/package.json

目的与范围

本文档描述了 Dify 中的向量数据库集成架构,包括支持 23 种以上不同向量数据库实现的 VectorFactory 抽象、配置驱动的选择机制,以及向量数据库如何与文档索引和检索管线集成。

关于文档如何被索引到向量数据库的信息,请参阅文档索引管线。关于检索过程中如何使用向量搜索的信息,请参阅检索策略与元数据过滤。关于部署层面的存储和向量数据库配置,请参阅存储后端与向量数据库配置

架构总览

向量数据库集成架构使用工厂模式来抽象各个向量数据库实现的具体细节,使系统仅通过配置即可在不同向量数据库之间切换。

系统上下文图
Dify · 系统上下文图 · 图 1
Dify · 系统上下文图 · 图 1

来源: api/core/rag/datasource/vdb/vector_factory.py:1-30, api/core/rag/datasource/vdb/vector_type.py:4-30, api/configs/middleware/__init__.py:86-101

向量工厂模式

VectorFactory 作为创建向量数据库实例的入口点。它根据 VECTOR_STORE 环境变量或特定数据集配置来决定实例化哪个实现。

工厂类结构
Dify · 工厂类结构 · 图 2
Dify · 工厂类结构 · 图 2

来源: api/core/rag/datasource/vdb/vector_factory.py:1-30, api/core/rag/datasource/vdb/vector_type.py:4-30, api/providers/vdb/vdb-milvus/src/dify_vdb_milvus/milvus_vector.py:1-100

配置系统

向量数据库的选择和配置由 Pydantic 模型和环境变量驱动,允许在部署时进行选择而无需修改代码。

配置模型

每个向量数据库实现都有对应的配置模型来校验设置。

实现配置类关键字段来源
WeaviateWeaviateConfigWEAVIATE_ENDPOINT, WEAVIATE_API_KEYapi/configs/middleware/vdb/weaviate_config.py:1-15
MilvusMilvusConfigMILVUS_URI, MILVUS_TOKEN, MILVUS_DATABASEapi/configs/middleware/__init__.py:34-34
PGVectorPGVectorConfigPGVECTOR_HOST, PGVECTOR_PORT, PGVECTOR_USERapi/configs/middleware/__init__.py:40-40
QdrantQdrantConfigQDRANT_ENDPOINT, QDRANT_API_KEYapi/configs/middleware/__init__.py:42-42
TiDB VectorTiDBVectorConfigTIDB_VECTOR_HOST, TIDB_VECTOR_PORTapi/configs/middleware/__init__.py:47-47
选择逻辑

选择主要由环境中的 VECTOR_STORE 变量控制。

# VECTOR_STORE 支持的取值
# weaviate, oceanbase, qdrant, milvus, myscale, relyt, pgvector, pgvecto-rs, chroma, opensearch, oracle, tencent, elasticsearch, elasticsearch-ja, analyticdb, couchbase, vikingdb, opengauss, tablestore, vastbase, tidb, tidb_on_qdrant, baidu, lindorm, huawei_cloud, upstash, matrixone, hologres

来源: api/.env.example:204-205, api/configs/middleware/__init__.py:86-101

支持的向量数据库实现

Dify 通过使用 uv 的类似插件的工作区结构,支持超过 23 种向量数据库实现。

实现矩阵(部分列表)
VectorType代码标识符工作区包
WEAVIATEweaviatedify-vdb-weaviate
MILVUSmilvusdify-vdb-milvus
PGVECTORpgvectordify-vdb-pgvector
QDRANTqdrantdify-vdb-qdrant
ORACLEoracledify-vdb-oracle
COUCHBASEcouchbasedify-vdb-couchbase
TIDBtidb_vectordify-vdb-tidb-vector

来源: api/pyproject.toml:62-91, api/uv.lock:22-51

向量数据库生命周期

数据流:将文档索引到向量空间

此图展示了由 IndexingRunner 处理的索引阶段中,从自然语言处理到代码级向量存储的桥梁。

Dify · 数据流:将文档索引到向量空间 · 图 3
Dify · 数据流:将文档索引到向量空间 · 图 3

来源: api/core/rag/datasource/vdb/vector_factory.py:10-25, api/providers/vdb/vdb-milvus/src/dify_vdb_milvus/milvus_vector.py:115-130

数据流:从自然语言到向量搜索的查询

此流程展示了自然语言查询如何在检索逻辑中被转换和搜索。

Dify · 数据流:从自然语言到向量搜索的查询 · 图 4
Dify · 数据流:从自然语言到向量搜索的查询 · 图 4

来源: api/providers/vdb/vdb-milvus/src/dify_vdb_milvus/milvus_vector.py:196-220, api/providers/vdb/vdb-oracle/src/dify_vdb_oracle/oraclevector.py:150-180

基础设施与部署

向量数据库通常作为边车容器或外部服务部署。

Docker Compose 集成

docker-compose.yamldocker-compose-template.yaml 文件定义了多个支持的向量数据库的编排。

服务名称镜像默认端口
weaviatesemitechnologies/weaviate:1.19.08080
milvus-standalonemilvusdb/milvus:v2.3.119530
qdrantqdrant/qdrant:v1.7.36333

来源: docker/docker-compose.yaml:22-55, docker/docker-compose-template.yaml:16-49

配置环境文件

Dify 使用结构化的环境文件系统来管理不同向量存储的配置。

  • envs/vectorstores/weaviate.env
  • envs/vectorstores/qdrant.env
  • envs/vectorstores/milvus.env
  • envs/vectorstores/pgvector.env

来源: docker/docker-compose.yaml:22-55, docker/docker-compose-template.yaml:16-49