ADR-001: Milvus Database Isolation¶
Status: Accepted
Context¶
Multi-industry deployments need physical isolation between domains without cross-tenant scalar filter bugs.
Decision¶
plugin_namespacemaps to a Milvus Database (core->default,lakehouse-bi->lakehouse_bi).- Each DB has base collections
eagle_text+eagle_visual; plugins add specialized collections. kb_nameremains a scalar filter within a DB.
Consequences¶
- No
plugin_namespaceMilvus scalar field. MilvusClientPoolbindsdb_nameat client construction; noclose()on pooled clients.
Evidence (pymilvus 语义,G17/G24)¶
经 pymilvus 官方文档/示例(manage_milvus_client/how_to_manage_milvus_client.md)验证:
MilvusClient(uri, db_name=...)在构造时绑定客户端到指定 Database 上下文;db_name是构造器参数。- 同一 URI 上的多个
MilvusClient共享同一底层连接(同 alias)。每个客户端保留各自的 DB 上下文,故操作经单连接命中不同数据库。 - 对一个客户端调用
close()会使共享该连接的全部客户端失效(alias ≠ 独立 TCP 连接)。因此MilvusClientPool禁止close(),按 DB 缓存进程级客户端。 - LlamaIndex
MilvusVectorStore不暴露db_name,故 text store 为MilvusClient(uri, db_name=)薄封装(与 visual store 对齐),不依赖MilvusVectorStore。