Some checks failed
构建并部署 AI Agent 服务 / deploy (push) Failing after 6m34s
- 重写 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 检索
57 lines
1.4 KiB
Python
57 lines
1.4 KiB
Python
# rag_core/client.py
|
|
import os
|
|
from .config import QDRANT_URL, QDRANT_API_KEY
|
|
from qdrant_client import QdrantClient, AsyncQdrantClient
|
|
|
|
|
|
def create_qdrant_client(timeout: int = 300) -> QdrantClient:
|
|
"""
|
|
创建并返回一个配置好的 Qdrant 客户端。
|
|
|
|
Args:
|
|
timeout: 请求超时时间(秒),默认 300 秒(索引构建需要较长超时)。
|
|
|
|
Returns:
|
|
配置好的 QdrantClient 实例。
|
|
|
|
Raises:
|
|
ValueError: 如果 QDRANT_URL 未配置。
|
|
"""
|
|
if not QDRANT_URL:
|
|
raise ValueError("Qdrant URL 未配置")
|
|
|
|
client_kwargs = {
|
|
"url": QDRANT_URL,
|
|
"timeout": timeout,
|
|
}
|
|
if QDRANT_API_KEY:
|
|
client_kwargs["api_key"] = QDRANT_API_KEY
|
|
|
|
return QdrantClient(**client_kwargs)
|
|
|
|
|
|
def create_async_qdrant_client(timeout: int = 300) -> AsyncQdrantClient:
|
|
"""
|
|
创建并返回一个配置好的 Qdrant 异步客户端。
|
|
|
|
Args:
|
|
timeout: 请求超时时间(秒),默认 300 秒。
|
|
|
|
Returns:
|
|
配置好的 AsyncQdrantClient 实例。
|
|
|
|
Raises:
|
|
ValueError: 如果 QDRANT_URL 未配置。
|
|
"""
|
|
if not QDRANT_URL:
|
|
raise ValueError("Qdrant URL 未配置")
|
|
|
|
client_kwargs = {
|
|
"url": QDRANT_URL,
|
|
"timeout": timeout,
|
|
}
|
|
if QDRANT_API_KEY:
|
|
client_kwargs["api_key"] = QDRANT_API_KEY
|
|
|
|
return AsyncQdrantClient(**client_kwargs)
|