docs: 文档清理与重构 — 统一为 3 个核心文档
- 删除 5 个过时/残留文档(project_plan/agent_prompt/optimization_plan/report_db_design/deploy/README) - 新建 docs/architecture.md(项目架构:11 包职责+数据模型+配置+产物) - 重写 docs/user-guide.md(CLI 全量+增量/断点续跑+MCP+FAQ) - 重写 README.md(精简入口+文档索引) - 更新 continuation.md(追加本次记录) - 更新 .gitignore(排除 data/* 运行产物)
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
"""Embedding provider 工厂:根据配置构造合适后端。
|
||||
|
||||
配置优先级: 显式参数 > configs/llm_models.yaml scenes.embedding > .env > 默认。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
|
||||
from configs.loader import load_scene_config
|
||||
|
||||
from .base import AsyncEmbeddingProvider, EmbeddingProvider
|
||||
from .models import EmbeddingError, EmbeddingProviderType
|
||||
from .remote import (
|
||||
DashScopeAsyncEmbeddingProvider,
|
||||
DashScopeEmbeddingProvider,
|
||||
)
|
||||
|
||||
|
||||
def _read_env(key: str, default: str | None = None) -> str | None:
|
||||
val = os.environ.get(key)
|
||||
if val is None or val.strip() == "":
|
||||
return default
|
||||
return val.strip()
|
||||
|
||||
|
||||
def resolve_provider_type(provider: str | None = None) -> EmbeddingProviderType:
|
||||
"""根据 provider 参数 / YAML 场景 / env 解析出 EmbeddingProviderType。
|
||||
|
||||
映射:
|
||||
dashscope / qwen / remote -> DASHSCOPE
|
||||
local / local-bge / bge / bge-m3 -> LOCAL_BGE
|
||||
默认 dashscope。
|
||||
"""
|
||||
scene_provider = load_scene_config("embedding").get("provider")
|
||||
p = (
|
||||
provider
|
||||
or scene_provider
|
||||
or _read_env("EMBEDDING_PROVIDER", "dashscope")
|
||||
or "dashscope"
|
||||
).lower()
|
||||
if p in ("dashscope", "qwen", "remote"):
|
||||
return EmbeddingProviderType.DASHSCOPE
|
||||
if p in ("local", "local-bge", "bge", "bge-m3"):
|
||||
return EmbeddingProviderType.LOCAL_BGE
|
||||
raise EmbeddingError(f"未知 embedding provider: {provider!r}")
|
||||
|
||||
|
||||
def make_sync_provider(
|
||||
provider: str | None = None,
|
||||
**kwargs: object,
|
||||
) -> EmbeddingProvider:
|
||||
"""构造同步 provider。"""
|
||||
pt = resolve_provider_type(provider)
|
||||
if pt == EmbeddingProviderType.DASHSCOPE:
|
||||
return DashScopeEmbeddingProvider(**kwargs) # type: ignore[arg-type]
|
||||
# 本地后端
|
||||
from .local import LocalBGEEmbeddingProvider
|
||||
return LocalBGEEmbeddingProvider(**kwargs) # type: ignore[arg-type]
|
||||
|
||||
|
||||
def make_async_provider(
|
||||
provider: str | None = None,
|
||||
**kwargs: object,
|
||||
) -> AsyncEmbeddingProvider:
|
||||
"""构造异步 provider。"""
|
||||
pt = resolve_provider_type(provider)
|
||||
if pt == EmbeddingProviderType.DASHSCOPE:
|
||||
return DashScopeAsyncEmbeddingProvider(**kwargs) # type: ignore[arg-type]
|
||||
from .local import LocalBGEAsyncEmbeddingProvider
|
||||
return LocalBGEAsyncEmbeddingProvider(**kwargs) # type: ignore[arg-type]
|
||||
Reference in New Issue
Block a user