新增功能: - 创建 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
""" 模型服务模块(model_services)
提供统一的嵌入和重排模型服务获取接口,支持自动降级:
- 优先使用本地 llama.cpp 服务
- 本地服务不可用时,自动降级到智谱 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 """