新增功能: - 创建 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
27 lines
973 B
Python
27 lines
973 B
Python
# app/rag_initializer.py
|
|
from ..rag.tools import create_rag_tool_sync
|
|
from rag_core import create_parent_retriever
|
|
from ..model_services import get_embedding_service
|
|
from ..logger import info, warning
|
|
|
|
async def init_rag_tool(local_llm_creator):
|
|
"""初始化 RAG 工具,失败返回 None"""
|
|
try:
|
|
info("🔄 正在初始化 RAG 检索系统...")
|
|
# 使用统一的嵌入服务获取接口
|
|
embeddings = get_embedding_service()
|
|
retriever = create_parent_retriever(
|
|
collection_name="rag_documents",
|
|
search_k=5,
|
|
embeddings=embeddings
|
|
)
|
|
rewrite_llm = local_llm_creator()
|
|
rag_tool = create_rag_tool_sync(
|
|
retriever, rewrite_llm,
|
|
num_queries=3, rerank_top_n=5
|
|
)
|
|
info("✅ RAG 检索工具初始化成功")
|
|
return rag_tool
|
|
except Exception as e:
|
|
warning(f"⚠️ RAG 检索工具初始化失败: {e}")
|
|
return None |