Files
ailine/backend/rag_core/embedders.py
root a07e398739
Some checks failed
构建并部署 AI Agent 服务 / deploy (push) Failing after 6m34s
refactor!: 完全异步化 RAG 系统,移除 LangChain ParentDocumentRetriever 依赖
- 重写 rag_core/vector_store.py:完全异步实现 aadd_documents、asimilarity_search
- 重写 app/rag/retriever.py:异步混合检索,移除同步兼容代码
- 修改 rag_indexer/index_builder.py:全链路异步调用
- 删除 rag_core/retriever_factory.py:不再使用 LangChain ParentDocumentRetriever
- 清理冗余导入和代码:移除 model_services 兼容、不需要的异常导入
- 更新 rag_indexer/README.md:反映新架构

核心改进:
- 完全异步化:索引构建和检索全链路 async/await
- 自定义实现:不再依赖 LangChain 的 ParentDocumentRetriever
- 双向量支持:子文档同时存储 dense + sparse 向量到 Qdrant
- 架构清晰:rag_core 公共组件、rag_indexer 索引、app/rag 检索
2026-05-04 14:33:12 +08:00

38 lines
864 B
Python

"""
嵌入模型包装器 - 直接使用统一嵌入服务
"""
import logging
from typing import List, Optional
from langchain_core.embeddings import Embeddings
logger = logging.getLogger(__name__)
def get_embeddings() -> Embeddings:
"""
获取统一的嵌入服务实例。
Returns:
LangChain 兼容的 Embeddings 实例
"""
from backend.app.model_services import get_embedding_service
return get_embedding_service()
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)