Source code for nv_ingest_client.primitives.tasks.vdb_upload
# SPDX-FileCopyrightText: Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES.
# All rights reserved.
# SPDX-License-Identifier: Apache-2.0
# pylint: disable=too-few-public-methods
# pylint: disable=too-many-arguments
import logging
from typing import Dict
from pydantic import BaseModel
from .task_base import Task
logger = logging.getLogger(__name__)
[docs]
class VdbUploadTaskSchema(BaseModel):
filter_errors: bool = False
bulk_ingest: bool = False
bulk_ingest_path: str = ""
params: dict = None
[docs]
class Config:
extra = "forbid"
[docs]
class VdbUploadTask(Task):
"""
Object for document embedding task
"""
def __init__(
self,
filter_errors: bool = False,
bulk_ingest: bool = False,
bulk_ingest_path: str = "embeddings/",
params: dict = None,
) -> None:
"""
Setup VDB Upload Task Config
"""
super().__init__()
self._filter_errors = filter_errors
self._bulk_ingest = bulk_ingest
self._bulk_ingest_path = bulk_ingest_path
self._params = params or {}
def __str__(self) -> str:
"""
Returns a string with the object's config and run time state
"""
info = ""
info += "VDB Upload Task:\n"
info += f" filter_errors: {self._filter_errors}\n"
return info
[docs]
def to_dict(self) -> Dict:
"""
Convert to a dict for submission to redis
"""
task_properties = {
"filter_errors": self._filter_errors,
"bulk_ingest": self._bulk_ingest,
"bulk_ingest_path": self._bulk_ingest_path,
"params": self._params,
}
return {"type": "vdb_upload", "task_properties": task_properties}