feat(config): 删死配置 + 同步文档(T5 架构审查整改)
- Issue5: 删除 QdrantStoreConfig / VectorStoreConfig.qdrant / task_queue.redis_url - OV1: 同步 6 处文档(api-design §1/§4.3/§5/§6、rag-layer §9、agent-runtime §3、 design §5.5/§8.4.1、config-design、web-ui §4.1)+ tests/fixtures/rag.yaml - TaskQueue 标注 v1 仅 InMemory,Redis/Valkey 为 v2 预留(Scope 缩减裁定) - Storage Adapter 仅 ChromaAdapter,工厂移除 qdrant 分支 - 历史评审记录保留原样不改写 - 新增 3 用例,同步 2 个 qdrant 依赖用例;全量 189 passed / 100.00%(991 stmts/252 br)
This commit is contained in:
@@ -49,7 +49,7 @@ RAG 层存储三类内容,分类在 Parser 解析时完成:
|
||||
|
||||
| 选型点 | 决策 | 说明 |
|
||||
|--------|------|------|
|
||||
| 向量数据库 | **混合方案**:Chroma 默认 + 可配置切换 Qdrant | 初期用 Chroma(轻量本地,嵌入进程,Docker 部署最简);通过 Storage Adapter 抽象,未来可切换 Qdrant |
|
||||
| 向量数据库 | **Chroma(v1 唯一)** | 初期用 Chroma(轻量本地,嵌入进程,Docker 部署最简);通过 Storage Adapter 抽象保留接口,Qdrant 切换为 v2 预留(Scope 缩减裁定,T5 整改)|
|
||||
| Embedding 模型 | **bge-small-zh-v1.5**(本地运行) | 中文小模型(1024维,~100MB),CPU 可跑;统一配置 `config/rag.yaml` 的 `embedding.model`(见 docs/config-design.md §5)可切换为 `BAAI/bge-m3`(多语言更好) |
|
||||
| 实现方式 | **手写实现**(不引入 LangChain/LlamaIndex) | chromadb + rank_bm25 + sentence-transformers 直接实现;依赖轻、可控性强、与现有轻量技术栈一致 |
|
||||
|
||||
@@ -536,7 +536,7 @@ class ConflictHandler:
|
||||
|
||||
### 9.1 定位
|
||||
|
||||
向量存储访问的**统一抽象层**。RAG 业务逻辑(分割/检索/融合)不直接依赖具体向量数据库,而是通过 Storage Adapter 访问。初期使用 Chroma,未来可切换 Qdrant,**业务层无需改动**。
|
||||
向量存储访问的**统一抽象层**。RAG 业务逻辑(分割/检索/融合)不直接依赖具体向量数据库,而是通过 Storage Adapter 访问。v1 仅实现 **ChromaAdapter**(本地持久化,零外部依赖)。(T5 架构审查整改:Scope 缩减裁定移除 Qdrant 可切换抽象,QdrantAdapter 为 v2 预留。)
|
||||
|
||||
### 9.2 接口定义
|
||||
|
||||
@@ -584,28 +584,17 @@ class VectorHit:
|
||||
|
||||
| 实现 | 说明 | 使用场景 |
|
||||
|------|------|---------|
|
||||
| **ChromaAdapter** | 默认实现,chromadb 本地持久化(`/data/shared/rules-handbook/chroma/`)| 默认 |
|
||||
| **QdrantAdapter** | 可选实现,通过 Qdrant HTTP/gRPC API | 切换时启用 |
|
||||
| **ChromaAdapter** | v1 唯一实现,chromadb 本地持久化(`/data/shared/rules-handbook/chroma/`)| 默认 |
|
||||
| **QdrantAdapter** | v2 预留(不实现)| Scope 缩减裁定移除;接口保留供 v2 扩展 |
|
||||
|
||||
### 9.4 配置切换
|
||||
### 9.4 配置
|
||||
|
||||
```yaml
|
||||
# config/inference.yaml 或 config/rag.yaml
|
||||
vector_store:
|
||||
adapter: chroma # "chroma" | "qdrant"
|
||||
adapter: chroma # v1 仅 "chroma"(Scope 缩减裁定)
|
||||
chroma:
|
||||
persist_dir: /data/shared/rules-handbook/chroma
|
||||
qdrant:
|
||||
url: http://qdrant:6333
|
||||
api_key: ${QDRANT_API_KEY}
|
||||
```
|
||||
|
||||
```
|
||||
切换流程:
|
||||
1. 修改配置 adapter: qdrant
|
||||
2. 系统启动时通过 StorageAdapterFactory 创建对应实现
|
||||
3. 已有规则手册数据需迁移(重新构建索引)或通过脚本复制
|
||||
4. 业务层(检索引擎/版本管理)无感知
|
||||
```
|
||||
|
||||
### 9.5 工厂与依赖注入
|
||||
@@ -614,9 +603,7 @@ vector_store:
|
||||
class StorageAdapterFactory:
|
||||
@staticmethod
|
||||
def create(config: dict) -> VectorStoreAdapter:
|
||||
adapter = config["vector_store"]["adapter"]
|
||||
if adapter == "qdrant":
|
||||
return QdrantAdapter(config["vector_store"]["qdrant"])
|
||||
# v1 仅 ChromaAdapter(Qdrant 分支 v2 预留)
|
||||
return ChromaAdapter(config["vector_store"]["chroma"])
|
||||
|
||||
# 使用: RagService / RuleHandbookManager 通过构造注入 adapter
|
||||
@@ -628,7 +615,7 @@ rag_service = RagService(
|
||||
|
||||
### 9.6 一致性保证
|
||||
|
||||
- ChromaAdapter 与 QdrantAdapter 对同一数据(chunks/embeddings/metadata)的操作结果一致
|
||||
- v1 仅 ChromaAdapter(无跨实现一致性要求;v2 新增实现时需保证对同一数据的操作结果一致)
|
||||
- 单元测试中可注入 **MockAdapter**(内存实现),使检索逻辑测试不依赖真实向量库
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user