Files
ailine/backend/app/model_services
root 8db63e7a8d 重构:添加模型服务模块,支持嵌入和重排服务的自动降级
新增功能:
- 创建 app/model_services 模块,提供统一的模型服务获取接口
- 实现 BaseServiceProvider 基类和 FallbackServiceChain 降级链
- 实现 get_embedding_service():优先本地 llama.cpp,降级到智谱 API
- 实现 get_rerank_service():优先本地 llama.cpp,降级到智谱 API
- 支持单例管理,确保全局只有一个服务实例

修改内容:
- 更新 app/config.py,添加智谱 API 相关配置
- 修改 rag_core/vector_store.py:支持接受外部传入的 embeddings
- 修改 rag_core/retriever_factory.py:支持接受外部传入的 embeddings
- 修改 app/agent/rag_initializer.py:使用 get_embedding_service()
- 修改 app/rag/pipeline.py:使用 get_rerank_service()
- 修改 app/memory/mem0_client.py:智能判断可用服务配置 mem0
- 修改 rag_indexer/index_builder.py:支持使用新服务,保持向后兼容
- 修改 rag_indexer/config.py:添加智谱配置

环境变量:
- ZHIPUAI_API_KEY:智谱 API 密钥(必选)
- ZHIPU_EMBEDDING_MODEL:可选,默认 embedding-3
- ZHIPU_RERANK_MODEL:可选,默认 rerank-2
- ZHIPU_API_BASE:可选,默认 https://open.bigmodel.cn/api/paas/v4
2026-04-24 22:52:36 +08:00
..

""" 模型服务模块model_services

提供统一的嵌入和重排模型服务获取接口,支持自动降级:

  1. 优先使用本地 llama.cpp 服务
  2. 本地服务不可用时,自动降级到智谱 API 服务

使用方法:

from app.model_services import get_embedding_service, get_rerank_service, BaseReranker

获取嵌入服务LangChain 兼容的 Embeddings

embeddings = get_embedding_service()

获取重排服务

reranker = get_rerank_service() sorted_docs = reranker.compress_documents(documents, query, top_n=5)

环境变量配置:

智谱 API 配置

ZHIPUAI_API_KEY=your_api_key ZHIPU_EMBEDDING_MODEL=embedding-3 # 可选embedding-2、embedding-3 ZHIPU_RERANK_MODEL=rerank-2 # 可选rerank-1、rerank-2 ZHIPU_API_BASE=https://open.bigmodel.cn/api/paas/v4

本地 llama.cpp 服务配置(原有配置保持不变)

LLAMACPP_EMBEDDING_URL=http://localhost:port/v1 LLAMACPP_RERANKER_URL=http://localhost:port/v1 LLAMACPP_API_KEY=your_api_key """