2026-04-21 11:02:16 +08:00
|
|
|
|
"""
|
2026-04-29 10:52:01 +08:00
|
|
|
|
嵌入模型包装器 - 直接使用统一嵌入服务
|
2026-04-21 11:02:16 +08:00
|
|
|
|
"""
|
|
|
|
|
|
|
2026-04-29 10:52:01 +08:00
|
|
|
|
import logging
|
2026-05-04 14:33:12 +08:00
|
|
|
|
from typing import List, Optional
|
2026-04-29 10:52:01 +08:00
|
|
|
|
|
2026-04-21 11:02:16 +08:00
|
|
|
|
from langchain_core.embeddings import Embeddings
|
|
|
|
|
|
|
2026-04-29 10:52:01 +08:00
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
2026-04-21 19:06:34 +08:00
|
|
|
|
|
2026-05-04 14:33:12 +08:00
|
|
|
|
def get_embeddings() -> Embeddings:
|
2026-04-29 10:52:01 +08:00
|
|
|
|
"""
|
2026-05-04 14:33:12 +08:00
|
|
|
|
获取统一的嵌入服务实例。
|
|
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
LangChain 兼容的 Embeddings 实例
|
2026-04-29 10:52:01 +08:00
|
|
|
|
"""
|
2026-05-04 14:33:12 +08:00
|
|
|
|
from backend.app.model_services import get_embedding_service
|
|
|
|
|
|
return get_embedding_service()
|
2026-04-21 11:02:16 +08:00
|
|
|
|
|
|
|
|
|
|
|
2026-05-04 14:33:12 +08:00
|
|
|
|
def get_embedding_dimension(embeddings: Optional[Embeddings] = None) -> int:
|
|
|
|
|
|
"""
|
|
|
|
|
|
获取嵌入维度。
|
|
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
|
embeddings: 可选的嵌入实例,如果不提供则自动获取
|
|
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
嵌入维度大小
|
|
|
|
|
|
"""
|
|
|
|
|
|
if embeddings is None:
|
|
|
|
|
|
embeddings = get_embeddings()
|
|
|
|
|
|
test_embedding = embeddings.embed_query("test")
|
|
|
|
|
|
return len(test_embedding)
|