From ffd35d11c14a96e421e4ef438aceec6e24b57678 Mon Sep 17 00:00:00 2001 From: Vipul Maheshwari Date: Thu, 15 Aug 2024 13:01:22 +0530 Subject: [PATCH 1/4] develop branch --- ingestion_server/__init__.py | 177 ------------------ ingestion_server/datachecks/__init__.py | 49 ----- ingestion_server/embeddings/__init__.py | 9 - ingestion_server/embeddings/base.py | 10 - ingestion_server/embeddings/openai_emded.py | 31 --- ingestion_server/main.py | 119 ------------ ingestion_server/rags/__init__.py | 10 - ingestion_server/rags/base.py | 156 --------------- ingestion_server/rags/lancedb_rag.py | 90 --------- ingestion_server/rags/mongoDB_rag.py | 96 ---------- ingestion_server/utils/__init__.py | 1 - ingestion_server/utils/log.py | 31 --- main.py | 54 +++--- ...0-7d52c1d3-fecb-493d-b2ea-4bc0a09415ce.txn | 3 - ...1-a5103a06-2d62-4754-8034-4b664e420161.txn | Bin 105 -> 0 bytes ...b819d82e-ad4f-4e3d-954b-c85d55394c49.lance | Bin 269536 -> 0 bytes 16 files changed, 27 insertions(+), 809 deletions(-) delete mode 100644 ingestion_server/__init__.py delete mode 100644 ingestion_server/datachecks/__init__.py delete mode 100644 ingestion_server/embeddings/__init__.py delete mode 100644 ingestion_server/embeddings/base.py delete mode 100644 ingestion_server/embeddings/openai_emded.py delete mode 100644 ingestion_server/main.py delete mode 100644 ingestion_server/rags/__init__.py delete mode 100644 ingestion_server/rags/base.py delete mode 100644 ingestion_server/rags/lancedb_rag.py delete mode 100644 ingestion_server/rags/mongoDB_rag.py delete mode 100644 ingestion_server/utils/__init__.py delete mode 100644 ingestion_server/utils/log.py delete mode 100644 vectordb_data/dev/b0d1b64a-32f8-47be-a0b2-3c614967c2a5.lance/_transactions/0-7d52c1d3-fecb-493d-b2ea-4bc0a09415ce.txn delete mode 100644 vectordb_data/dev/b0d1b64a-32f8-47be-a0b2-3c614967c2a5.lance/_transactions/1-a5103a06-2d62-4754-8034-4b664e420161.txn delete mode 100644 vectordb_data/dev/b0d1b64a-32f8-47be-a0b2-3c614967c2a5.lance/data/b819d82e-ad4f-4e3d-954b-c85d55394c49.lance diff --git a/ingestion_server/__init__.py b/ingestion_server/__init__.py deleted file mode 100644 index 374fff0..0000000 --- a/ingestion_server/__init__.py +++ /dev/null @@ -1,177 +0,0 @@ -from ingestion_server.embeddings import EmbedProviders -from ingestion_server.rags import RAGProviders, BaseRAG -from ingestion_server.datachecks import RAGConfig, RAGTask, RAGTaskStatus -import asyncio -from threading import Thread -from ingestion_server.utils import configure_logger -from typing import Dict -from uuid import uuid4 -import tempfile -import os - -logger = configure_logger(__name__) - -class RAG: - """ - Retrieval-Augmented Generation (RAG) implementation. - - This class handles the ingestion and storage of documents for RAG. - """ - - def __init__(self, VectorDB: BaseRAG, Workers: int = 2) -> None: - """ - Initialize the RAG instance. - - Args: - VectorDB (BaseRAG): The vector database to use. - Workers (int, optional): Number of worker threads. Defaults to 2. - """ - self.file_process_task_queue: asyncio.Queue = asyncio.Queue() - self.file_store_task_queue: asyncio.Queue = asyncio.Queue() - - self.VectorDB: BaseRAG = VectorDB - self.Workers: int = Workers - - self.RAG_THREAD = Thread(target=self.start) - self.shutdown = False - - async def __shutdown_loop(self): - """Monitor the shutdown flag.""" - while not self.shutdown: - await asyncio.sleep(0.5) - - async def __ingestion_task(self): - """Process ingestion tasks from the queue.""" - while not self.shutdown: - task: RAGTask = await self.file_process_task_queue.get() - task._status = RAGTaskStatus.PROCESSING - try: - nodes = await self.VectorDB.generate_nodes_sentence_splitter(task.file_loc) - except Exception as e: - logger.error(f"ERROR in {e}") - task._status = RAGTaskStatus.ERROR - continue - task._nodes = nodes - await self.file_store_task_queue.put(task) - - async def __nodes_storage(self): - """Store processed nodes in the vector database.""" - while not self.shutdown: - task: RAGTask = await self.file_store_task_queue.get() - try: - index = await self.VectorDB.add_index(task._nodes) - except Exception as e: - logger.error(f"ERROR in {e}") - task._status = RAGTaskStatus.ERROR - continue - task._index = index - task._status = RAGTaskStatus.SUCESSFUL - - def start(self): - """Start the RAG processing loop.""" - loop = asyncio.new_event_loop() - ingestion_task_pool = [loop.create_task(self.__ingestion_task()) for _ in range(self.Workers)] - file_storage = loop.create_task(self.__nodes_storage()) - loop.run_until_complete(self.__shutdown_loop()) - file_storage.cancel() - for t in ingestion_task_pool: - t.cancel() - loop.close() - - -class RAGFactory: - """ - Factory class for creating and managing RAG instances. - """ - - def __init__(self) -> None: - """Initialize the RAGFactory.""" - self.RAGS: Dict[str, RAG] = dict() - - def make_rag(self, config: RAGConfig): - """ - Create a new RAG instance. - - Args: - config (RAGConfig): Configuration for the RAG instance. - - Returns: - str: Unique identifier for the created RAG instance. - """ - rag_name = f"RAG-{uuid4()}" - embedding_name = EmbedProviders[config.provider_config.embedding_name.provider](config.provider_config.embedding_name.embedding_model_name) - vector_db = RAGProviders[config.provider](embedding_name, config.provider_config) - rag = RAG(vector_db, config.provider_config.worker) - rag.RAG_THREAD.start() - self.RAGS[rag_name] = rag - return rag_name - - def stop_all(self): - """Stop all RAG instances.""" - for rag in self.RAGS.values(): - rag.shutdown = True - - def stop(self, rag_name: str): - """ - Stop a specific RAG instance. - - Args: - rag_name (str): Identifier of the RAG instance to stop. - - Raises: - ValueError: If the specified RAG instance doesn't exist. - """ - if rag_name in self.RAGS.keys(): - self.RAGS[rag_name].shutdown = True - self.RAGS.pop(rag_name) - else: - raise ValueError("No RAG with that ID exists") - - async def file_ingest(self, rag_name, file) -> RAGTask: - """ - Ingest a file into a RAG instance. - - Args: - rag_name (str): Identifier of the RAG instance. - file: File object to ingest. - - Returns: - RAGTask: Task object representing the ingestion process. - - Raises: - ValueError: If the specified RAG instance doesn't exist or if the file type is unsupported. - """ - if rag_name not in self.RAGS.keys(): - raise ValueError(f"RAG: {rag_name} does not exist") - if file.content_type not in ["application/pdf", "application/x-pdf"]: - raise ValueError("Only PDF files are supported for now") - - task_id = str(uuid4()) - temp_file = tempfile.NamedTemporaryFile() - temp_file.write(await file.read()) - prev = temp_file.name - file_name = f"/tmp/{task_id}.pdf" - os.rename(prev, file_name) - task = RAGTask(file_loc=file_name) - await self.RAGS[rag_name].file_process_task_queue.put(task) - - while task._status in [RAGTaskStatus.WAIT, RAGTaskStatus.PROCESSING]: - await asyncio.sleep(0.4) - - os.rename(file_name, prev) - return task - - async def retrieve_query(self, rag_name: str, index: str, query: str): - """ - Retrieve documents based on a query. - - Args: - rag_name (str): Identifier of the RAG instance. - index (str): Index to search in. - query (str): Query string. - - Returns: - List of relevant documents. - """ - rag = self.RAGS[rag_name] - return await rag.VectorDB.get_docs_index(query=query, index=index) \ No newline at end of file diff --git a/ingestion_server/datachecks/__init__.py b/ingestion_server/datachecks/__init__.py deleted file mode 100644 index 7b0b27f..0000000 --- a/ingestion_server/datachecks/__init__.py +++ /dev/null @@ -1,49 +0,0 @@ -from pydantic import BaseModel -from typing import Union, Optional - -# Embedding config -class embeddings(BaseModel): - provider:str - embedding_model_name:Optional[str] = "" - -# DB Configs -class LanceDBConfig(BaseModel): - loc: Optional[str] = "" - -class MongoDBConfig(BaseModel): - uri: Optional[str] = "" - db: Optional[str] = "" - collection_name: Optional[str] = "" - -# Provider Configs -class ProviderConfig(BaseModel): - embedding_name:embeddings - chunk_size:int - overlapping:int - worker:int - similarity_top_k:int - rag: Union[LanceDBConfig,MongoDBConfig] - -# Rag Config -class RAGConfig(BaseModel): - provider:str - provider_config:ProviderConfig - -class Query(BaseModel): - provider:str - index:str - query:str - -# Utility checks for RAG -class RAGTaskStatus: - WAIT = "WAITING" - PROCESSING = "PROCESSING" - ERROR = "ERROR" - SUCESSFUL = "SUCESSFUL" - -class RAGTask(BaseModel): - file_loc:str - _status:str = RAGTaskStatus.WAIT - _message:str = "" - _index:str = "" - _nodes:list = [] diff --git a/ingestion_server/embeddings/__init__.py b/ingestion_server/embeddings/__init__.py deleted file mode 100644 index f1dc8ff..0000000 --- a/ingestion_server/embeddings/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -from typing import Dict - -from ingestion_server.embeddings.openai_emded import OpenAI -from ingestion_server.embeddings.base import BaseEmbed - -# EmbedProviders dictionary with the key being the name of the provider and the value being the class of the provider -EmbedProviders : Dict[str, BaseEmbed] = { - "OpenAI": OpenAI -} \ No newline at end of file diff --git a/ingestion_server/embeddings/base.py b/ingestion_server/embeddings/base.py deleted file mode 100644 index 37b4dd9..0000000 --- a/ingestion_server/embeddings/base.py +++ /dev/null @@ -1,10 +0,0 @@ -from abc import ABC, abstractmethod - -class BaseEmbed(ABC): - def __init__(self, name: str) -> None: - self.name = name - - @abstractmethod - def get_embedding(self): - """Method to retrieve the embedding representation.""" - raise NotImplementedError("Subclasses must implement this method.") \ No newline at end of file diff --git a/ingestion_server/embeddings/openai_emded.py b/ingestion_server/embeddings/openai_emded.py deleted file mode 100644 index d6677d6..0000000 --- a/ingestion_server/embeddings/openai_emded.py +++ /dev/null @@ -1,31 +0,0 @@ -from ingestion_server.embeddings.base import BaseEmbed -from llama_index.embeddings.openai import OpenAIEmbedding -import dotenv -import os - -dotenv.load_dotenv() - -class OpenAI(BaseEmbed): - def __init__(self, model: str) -> None: - """Initialize the OpenAI embedding provider. - - Args: - model (str): The model name to be used for embeddings. - - Raises: - ValueError: If the OpenAI API key is not found in the environment variables. - """ - super().__init__("OpenAI") - self.model = model - api_key = os.getenv("OPENAI_API_KEY") - if api_key is None: - raise ValueError("OPENAI KEY IS NOT FOUND") - self.embedding_instance = OpenAIEmbedding(model=model, api_key=api_key) - - def get_embedding(self): - """Retrieve the embedding instance. - - Returns: - OpenAIEmbedding: The instance of the OpenAI embedding. - """ - return self.embedding_instance \ No newline at end of file diff --git a/ingestion_server/main.py b/ingestion_server/main.py deleted file mode 100644 index d78deb7..0000000 --- a/ingestion_server/main.py +++ /dev/null @@ -1,119 +0,0 @@ -from fastapi import FastAPI, UploadFile -from ingestion_server.datachecks import RAGConfig -from ingestion_server import RAGFactory -import uvicorn -import time -from typing import Dict -import dotenv - -dotenv.load_dotenv() -DB: Dict[str, RAGConfig] = {} - -rag_factory = RAGFactory() -app = FastAPI() - - -@app.get("/") -def heartbeat() -> float: - """Health check endpoint that returns the current server time.""" - return time.time() - - -@app.post("/create-rag") -def create_rag(request: RAGConfig) -> Dict[str, str]: - """Create a RAG configuration and return its ID. - - Args: - request (RAGConfig): The RAG configuration to create. - - Returns: - Dict[str, str]: A dictionary containing the created RAG ID. - """ - print(request) - rag_id = rag_factory.make_rag(request) - return {"rag_id": rag_id} - - -@app.post("/rag-upload-file/{rag_id}") -async def rag_upload_file(file: UploadFile, rag_id: str) -> Dict[str, str]: - """Upload a file for a specific RAG ID. - - Args: - file (UploadFile): The file to upload. - rag_id (str): The ID of the RAG to associate with the file. - - Returns: - Dict[str, str]: A dictionary containing the upload status and index. - """ - try: - task = await rag_factory.file_ingest(rag_name=rag_id, file=file) - return {"index": task._index, "status": task._status, "message": "DONE"} - except Exception as e: - return {"index": None, "status": "ERROR", "message": f"{e}"} - - -@app.get("/rag-retrive/{rag_id}/{index}") -async def rag_retrive(query: str, rag_id: str, index: str) -> list: - """Retrieve documents based on a query for a specific RAG ID and index. - - Args: - query (str): The query string to search for. - rag_id (str): The ID of the RAG to search in. - index (str): The index to search in. - - Returns: - list: A list of documents matching the query. - """ - docs = await rag_factory.retrive_query(rag_name=rag_id, index=index, query=query) - send_filter = [{"text": node.text, "score": node.score} for node in docs] - return send_filter - -@app.post("/make-rag") -async def make_rag( - file: UploadFile = File(...), - config: str = Form(...) -) -> Dict[str, Any]: - """ - Create a RAG configuration, return its ID, and ingest the uploaded file. - - Args: - file (UploadFile): The file to upload and ingest. - config (str): The RAG configuration as a JSON string. - - Returns: - Dict[str, Any]: A dictionary containing the created RAG ID, upload status, and index. - """ - try: - # Parse the JSON string into a RAGConfig object - rag_config = RAGConfig.parse_raw(config) - - # Create RAG configuration - rag_id = rag_factory.make_rag(rag_config) - - # Ingest the file - task = await rag_factory.file_ingest(rag_name=rag_id, file=file) - - return { - "rag_id": rag_id, - "index": task._index, - "status": task._status, - "message": "RAG created and file ingested successfully" - } - except json.JSONDecodeError: - return { - "rag_id": None, - "index": None, - "status": "ERROR", - "message": "Invalid JSON in config parameter" - } - except Exception as e: - return { - "rag_id": None, - "index": None, - "status": "ERROR", - "message": f"Error creating RAG or ingesting file: {str(e)}" - } - - -if __name__ == "__main__": - uvicorn.run("main:app", port=8000, host="0.0.0.0", reload=True) \ No newline at end of file diff --git a/ingestion_server/rags/__init__.py b/ingestion_server/rags/__init__.py deleted file mode 100644 index d237f53..0000000 --- a/ingestion_server/rags/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -from ingestion_server.rags.lancedb_rag import LanceDB -from ingestion_server.rags.mongoDB_rag import MongoDB -from ingestion_server.rags.base import BaseRAG - -from typing import Dict - -RAGProviders : Dict[str, BaseRAG] = { - "LanceDB": LanceDB, - "MongoDB": MongoDB -} \ No newline at end of file diff --git a/ingestion_server/rags/base.py b/ingestion_server/rags/base.py deleted file mode 100644 index 4a07ee7..0000000 --- a/ingestion_server/rags/base.py +++ /dev/null @@ -1,156 +0,0 @@ -import os -import dotenv -from uuid import uuid4 - -from llama_parse import LlamaParse -from llama_index.core.node_parser import ( - MarkdownElementNodeParser, - SentenceSplitter, - TextSplitter -) -from llama_index.llms.openai import OpenAI -from llama_index.core import Settings - -from ingestion_server.embeddings import BaseEmbed -from ingestion_server.utils import configure_logger - - -dotenv.load_dotenv() - -logger = configure_logger(__name__) - -class BaseRAG: - """ - Base class for Retrieval-Augmented Generation (RAG) systems. - - Attributes: - provider (str): The provider for the RAG system. - base_embed (BaseEmbed): The embedding model used. - embeding_model: The actual embedding model instance. - chunk_size (int): Size of the chunks for splitting documents. - overlapping (int): Overlap size for chunking. - LLAMA_CLOUD (str): API key for Llama Cloud. - parse (LlamaParse): Instance of LlamaParse for data parsing. - OPENAI_API_KEY (str): API key for OpenAI. - llm (OpenAI): Instance of OpenAI model. - """ - - def __init__(self, provider: str, embedding_name: BaseEmbed, chunk_size: int, overlapping: int) -> None: - """ - Initializes the BaseRAG instance with the specified parameters. - - Args: - provider (str): The provider for the RAG system. - embedding_name (BaseEmbed): The embedding model used. - chunk_size (int): Size of the chunks for splitting documents. - overlapping (int): Overlap size for chunking. - - Raises: - ValueError: If required environment variables are not set. - """ - self.provider = provider - self.base_embed: BaseEmbed = embedding_name - self.embeding_model = self.base_embed.get_embedding() - self.chunk_size = chunk_size - self.overlapping = overlapping - self.LLAMA_CLOUD = os.getenv("LLAMA_CLOUD_API_KEY") - - if self.LLAMA_CLOUD is None: - raise ValueError("LLAMA_CLOUD_API_KEY is not set in .env") - - self.parse = LlamaParse(api_key=self.LLAMA_CLOUD, result_type="markdown") - - self.OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") - - if self.OPENAI_API_KEY is None: - raise ValueError("OPENAI_API_KEY is not set in .env") - - self.llm = OpenAI(model="gpt-3.5-turbo", temperature=0.2, api_key=self.OPENAI_API_KEY) - - Settings.embed_model = self.embeding_model - Settings.llm = self.llm - - def generate_index_name(self) -> str: - """Generates a unique index name using UUID. - - Returns: - str: A unique index name. - """ - return str(uuid4()) - - async def generate_nodes_sentence_splitter(self, file_loc: str): - """Generates nodes using a sentence splitter. - - Args: - file_loc (str): The file location to load data from. - - Returns: - nodes: The generated nodes after processing. - """ - docs = await self.parse.aload_data(file_path=file_loc) - node_parser = MarkdownElementNodeParser(num_workers=8, llm=self.llm) - nodes = await node_parser.aget_nodes_from_documents(docs) - nodes, _ = node_parser.get_nodes_and_objects(nodes) - nodes = await SentenceSplitter(chunk_size=self.chunk_size, chunk_overlap=self.overlapping).aget_nodes_from_documents(nodes) - return nodes - - async def generate_nodes_text_splitter(self, file_loc: str): - """Generates nodes using a text splitter. - - Args: - file_loc (str): The file location to load data from. - - Returns: - nodes: The generated nodes after processing. - """ - docs = await self.parse.aload_data(file_path=file_loc) - node_parser = MarkdownElementNodeParser(num_workers=8, llm=self.llm) - nodes = await node_parser.aget_nodes_from_documents(docs) - nodes, _ = node_parser.get_nodes_and_objects(nodes) - nodes = await TextSplitter(chunk_size=self.chunk_size, chunk_overlap=self.overlapping).aget_nodes_from_documents(nodes) - return nodes - - async def append_index(self, nodes) -> str: - """Appends nodes to the existing index. - - Args: - nodes: The nodes to append. - - Raises: - NotImplementedError: This method should be implemented in subclasses. - """ - raise NotImplementedError - - async def add_index(self, nodes) -> str: - """Adds nodes to the index. - - Args: - nodes: The nodes to add. - - Raises: - NotImplementedError: This method should be implemented in subclasses. - """ - raise NotImplementedError - - async def delete_index(self, index: str) -> bool: - """Deletes an index. - - Args: - index (str): The index to delete. - - Raises: - NotImplementedError: This method should be implemented in subclasses. - """ - raise NotImplementedError - - async def get_docs_index(self, query: str, index: str): - """Retrieves documents from the index based on a query. - - Args: - query (str): The query to search for. - index (str): The index to search in. - - Raises: - NotImplementedError: This method should be implemented in subclasses. - """ - raise NotImplementedError \ No newline at end of file diff --git a/ingestion_server/rags/lancedb_rag.py b/ingestion_server/rags/lancedb_rag.py deleted file mode 100644 index ecf8507..0000000 --- a/ingestion_server/rags/lancedb_rag.py +++ /dev/null @@ -1,90 +0,0 @@ -from typing import Any, Coroutine -from ingestion_server.embeddings.base import BaseEmbed -from ingestion_server.rags.base import BaseRAG -from llama_index.vector_stores.lancedb import LanceDBVectorStore -from llama_index.core import VectorStoreIndex, StorageContext -from ingestion_server.datachecks import ProviderConfig, LanceDBConfig -from llama_index.core.retrievers import VectorIndexRetriever - -class LanceDB(BaseRAG): - """ - LanceDB class for managing vector storage and retrieval using LanceDB. - - Attributes: - similarity_top_k (int): Number of top similar items to retrieve. - config (LanceDBConfig): Configuration for LanceDB. - loc (str): Location for the vector database. - path (str): Path to the vector database data. - """ - - def __init__(self, embedding_name: BaseEmbed, config: ProviderConfig) -> None: - """ - Initializes the LanceDB instance. - - Args: - embedding_name (BaseEmbed): The embedding model used. - config (ProviderConfig): Configuration for the provider. - """ - super().__init__("LanceDB", embedding_name, config.chunk_size, config.overlapping) - self.similarity_top_k = config.similarity_top_k - self.config: LanceDBConfig = config.rag - self.loc = self.config.loc - self.path = f"vectordb_data/{self.loc}" - - async def append_index(self, nodes) -> Coroutine[Any, Any, str]: - """Appends nodes to the existing index. - - Args: - nodes: The nodes to append. - - Returns: - Coroutine: A coroutine that returns None. - """ - return None - - async def add_index(self, nodes) -> str: - """Adds nodes to the index and creates a new table. - - Args: - nodes: The nodes to add. - - Returns: - str: The name of the created table. - """ - table_name = self.generate_index_name() - # TODO: add reranking in the DB - vector_store = LanceDBVectorStore(self.path, table_name=table_name) - storage_context = StorageContext.from_defaults(vector_store=vector_store) - vector_index = VectorStoreIndex(nodes=nodes, storage_context=storage_context, embed_model=self.embeding_model) - return table_name - - async def delete_index(self, index: str) -> bool: - """Deletes an index. - - Args: - index (str): The index to delete. - - Returns: - bool: Result of the deletion operation. - """ - return await super().delete_index(index) - - async def get_docs_index(self, query: str, index: str): - """Retrieves documents from the index based on a query. - - Args: - query (str): The query to search for. - index (str): The index to search in. - - Returns: - Retrieved documents based on the query. - """ - vector_store = LanceDBVectorStore(uri=self.path, table_name=index) - storage_context = StorageContext.from_defaults(vector_store=vector_store) - vector_index = VectorStoreIndex(nodes=[], storage_context=storage_context) - query_engine = VectorIndexRetriever(vector_index, similarity_top_k=self.similarity_top_k) - return query_engine.retrieve(query) - - # query_engine = vector_index.as_query_engine(llm=self.llm) - - diff --git a/ingestion_server/rags/mongoDB_rag.py b/ingestion_server/rags/mongoDB_rag.py deleted file mode 100644 index 8d55c21..0000000 --- a/ingestion_server/rags/mongoDB_rag.py +++ /dev/null @@ -1,96 +0,0 @@ -from typing import Any, Coroutine -from pymongo import MongoClient -from llama_index.vector_stores.mongodb import MongoDBAtlasVectorSearch - -from ingestion_server.embeddings.base import BaseEmbed -from ingestion_server.rags.base import BaseRAG -from ingestion_server.datachecks import ProviderConfig, MongoDBConfig - -from llama_index.core import VectorStoreIndex, StorageContext -from llama_index.core.retrievers import VectorIndexRetriever - -class MongoDB(BaseRAG): - """ - MongoDB class for managing vector storage and retrieval using MongoDB. - - Attributes: - similarity_top_k (int): Number of top similar items to retrieve. - config (MongoDBConfig): Configuration for MongoDB. - client (MongoClient): MongoDB client instance. - """ - - def __init__(self, embedding_name: BaseEmbed, config: ProviderConfig) -> None: - """ - Initializes the MongoDB instance. - - Args: - embedding_name (BaseEmbed): The embedding model used. - config (ProviderConfig): Configuration for the provider. - """ - super().__init__("MongoDB", embedding_name, config.chunk_size, config.overlapping) - self.similarity_top_k = config.similarity_top_k - self.config: MongoDBConfig = config.rag - self.client = MongoClient(self.config.uri) - - async def append_index(self, nodes) -> Coroutine[Any, Any, str]: - """Appends nodes to the existing index. - - Args: - nodes: The nodes to append. - - Returns: - Coroutine: A coroutine that calls the base class method. - """ - return await super().append_index(nodes) - - async def get_docs_index(self, query: str, index: str): - """Retrieves documents from the index based on a query. - - Args: - query (str): The query to search for. - index (str): The index to search in. - - Returns: - Retrieved documents based on the query. - """ - vector_store = MongoDBAtlasVectorSearch( - self.client, - db_name=self.config.db, - collection_name=self.config.collection_name, - vector_index_name=index - ) - vector_store_context = StorageContext.from_defaults(vector_store=vector_store) - vector_store_index = VectorStoreIndex(nodes=[], storage_context=vector_store_context) - vector_store_retriever = VectorIndexRetriever(index=vector_store_index, similarity_top_k=self.similarity_top_k) - return vector_store_retriever.retrieve(query) - - async def delete_index(self, index: str) -> Coroutine[Any, Any, bool]: - """Deletes an index. - - Args: - index (str): The index to delete. - - Returns: - Coroutine: A coroutine that calls the base class method. - """ - return await super().delete_index(index) - - async def add_index(self, nodes) -> str: - """Adds nodes to the index and creates a new index. - - Args: - nodes: The nodes to add. - - Returns: - str: The name of the created index. - """ - index = self.generate_index_name() - vector_store = MongoDBAtlasVectorSearch( - self.client, - db_name=self.config.db, - collection_name=self.config.collection_name, - index_name=index - ) - vector_store_context = StorageContext.from_defaults(vector_store=vector_store) - vector_store_index = VectorStoreIndex(nodes=nodes, storage_context=vector_store_context, embed_model=self.embeding_model) - return index \ No newline at end of file diff --git a/ingestion_server/utils/__init__.py b/ingestion_server/utils/__init__.py deleted file mode 100644 index 77bbf5d..0000000 --- a/ingestion_server/utils/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from ingestion_server.utils.log import configure_logger \ No newline at end of file diff --git a/ingestion_server/utils/log.py b/ingestion_server/utils/log.py deleted file mode 100644 index acc0815..0000000 --- a/ingestion_server/utils/log.py +++ /dev/null @@ -1,31 +0,0 @@ -import logging - -VALID_LOGGING_LEVELS = ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"] - -def configure_logger(file_name, enabled=True, logging_level='INFO'): - """ - Configures a logger for the specified file. - - Parameters: - - file_name (str): The name of the file for which the logger is being configured. - - enabled (bool): Flag to enable or disable the logger. Default is True. - - logging_level (str): The logging level to set. Must be one of the valid levels. Default is 'INFO'. - - Returns: - - logger (logging.Logger): Configured logger instance. - """ - if logging_level not in VALID_LOGGING_LEVELS: - logging_level = "INFO" - - logging.basicConfig( - level=logging_level, - format="%(asctime)s.%(msecs)03d %(levelname)s {%(module)s} [%(funcName)s] %(message)s", - datefmt="%Y-%m-%d %H:%M:%S", - ) - - logger = logging.getLogger(file_name) - - if not enabled: - logger.disabled = True - - return logger \ No newline at end of file diff --git a/main.py b/main.py index 388e20b..bb5cd63 100644 --- a/main.py +++ b/main.py @@ -199,33 +199,33 @@ def heartbeat() -> float: return time.time() -@app.post("/create-rag") -def create_rag(request: RAGConfig) -> Dict[str, str]: - """Create a RAG configuration and return its ID. - Args: - request (RAGConfig): The RAG configuration to create. - Returns: - Dict[str, str]: A dictionary containing the created RAG ID. - """ - print(request) - rag_id = rag_factory.make_rag(request) - return {"rag_id": rag_id} - - -@app.post("/rag-upload-file/{rag_id}") -async def rag_upload_file(file: UploadFile, rag_id: str) -> Dict[str, str]: - """Upload a file for a specific RAG ID. - Args: - file (UploadFile): The file to upload. - rag_id (str): The ID of the RAG to associate with the file. - Returns: - Dict[str, str]: A dictionary containing the upload status and index. - """ - try: - task = await rag_factory.file_ingest(rag_name=rag_id, file=file) - return {"index": task._index, "status": task._status, "message": "DONE"} - except Exception as e: - return {"index": None, "status": "ERROR", "message": f"{e}"} +# @app.post("/create-rag") +# def create_rag(request: RAGConfig) -> Dict[str, str]: +# """Create a RAG configuration and return its ID. +# Args: +# request (RAGConfig): The RAG configuration to create. +# Returns: +# Dict[str, str]: A dictionary containing the created RAG ID. +# """ +# print(request) +# rag_id = rag_factory.make_rag(request) +# return {"rag_id": rag_id} + + +# @app.post("/rag-upload-file/{rag_id}") +# async def rag_upload_file(file: UploadFile, rag_id: str) -> Dict[str, str]: +# """Upload a file for a specific RAG ID. +# Args: +# file (UploadFile): The file to upload. +# rag_id (str): The ID of the RAG to associate with the file. +# Returns: +# Dict[str, str]: A dictionary containing the upload status and index. +# """ +# try: +# task = await rag_factory.file_ingest(rag_name=rag_id, file=file) +# return {"index": task._index, "status": task._status, "message": "DONE"} +# except Exception as e: +# return {"index": None, "status": "ERROR", "message": f"{e}"} @app.post("/make-rag") async def make_rag( diff --git a/vectordb_data/dev/b0d1b64a-32f8-47be-a0b2-3c614967c2a5.lance/_transactions/0-7d52c1d3-fecb-493d-b2ea-4bc0a09415ce.txn b/vectordb_data/dev/b0d1b64a-32f8-47be-a0b2-3c614967c2a5.lance/_transactions/0-7d52c1d3-fecb-493d-b2ea-4bc0a09415ce.txn deleted file mode 100644 index eecff1f..0000000 --- a/vectordb_data/dev/b0d1b64a-32f8-47be-a0b2-3c614967c2a5.lance/_transactions/0-7d52c1d3-fecb-493d-b2ea-4bc0a09415ce.txn +++ /dev/null @@ -1,3 +0,0 @@ -$7d52c1d3-fecb-493d-b2ea-4bc0a09415ce²Ñid ÿÿÿÿÿÿÿÿÿ*string08!doc_id ÿÿÿÿÿÿÿÿÿ*string085vector ÿÿÿÿÿÿÿÿÿ*fixed_size_list:float:153608text ÿÿÿÿÿÿÿÿÿ*string08!metadata ÿÿÿÿÿÿÿÿÿ*struct0 _node_content *string08 -_node_type *string08doc_id *string08 document_id *string08 -ref_doc_id *string08 \ No newline at end of file diff --git a/vectordb_data/dev/b0d1b64a-32f8-47be-a0b2-3c614967c2a5.lance/_transactions/1-a5103a06-2d62-4754-8034-4b664e420161.txn b/vectordb_data/dev/b0d1b64a-32f8-47be-a0b2-3c614967c2a5.lance/_transactions/1-a5103a06-2d62-4754-8034-4b664e420161.txn deleted file mode 100644 index 5e1deb6b4fa7980976c2b5a75273480e91bd1606..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105 zcmV~$OAf*?3PX=ko zAT$vSq!1-;%iF!Yx_i@DOw*uh_z*@mDvU;5*_d-dM|phfuMh8b(|$f2m(zN_UjD*N B7Cis} diff --git a/vectordb_data/dev/b0d1b64a-32f8-47be-a0b2-3c614967c2a5.lance/data/b819d82e-ad4f-4e3d-954b-c85d55394c49.lance b/vectordb_data/dev/b0d1b64a-32f8-47be-a0b2-3c614967c2a5.lance/data/b819d82e-ad4f-4e3d-954b-c85d55394c49.lance deleted file mode 100644 index 1b4c628778b3bf3f3953cbdcc9ef43859aeb10f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 269536 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

#MkAT^`ug+$q%On_N4Nc^>D` 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 TN6tLz1e6CK`258$KKcIvlR|kx From 97a411130ca82989ce668bb653889c06272826ad Mon Sep 17 00:00:00 2001 From: anshjoseph Date: Thu, 15 Aug 2024 13:58:47 +0530 Subject: [PATCH 2/4] add index in the mongodb --- datachecks/__init__.py | 1 + rags/mongoDB_rag.py | 8 ++++---- utils/__init__.py | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/datachecks/__init__.py b/datachecks/__init__.py index 3bede1d..ea45ba2 100644 --- a/datachecks/__init__.py +++ b/datachecks/__init__.py @@ -11,6 +11,7 @@ class LanceDBConfig(BaseModel): loc: Optional[str] = "" class MongoDBConfig(BaseModel): + index: Optional[str] = "" uri: Optional[str] = "" db: Optional[str] = "" collection_name: Optional[str] = "" diff --git a/rags/mongoDB_rag.py b/rags/mongoDB_rag.py index 844626d..be7abea 100644 --- a/rags/mongoDB_rag.py +++ b/rags/mongoDB_rag.py @@ -57,7 +57,7 @@ async def get_docs_index(self, query: str, index: str): self.client, db_name=self.config.db, collection_name=self.config.collection_name, - vector_index_name=index + vector_index_name=self.config.index ) vector_store_context = StorageContext.from_defaults(vector_store=vector_store) vector_store_index = VectorStoreIndex(nodes=[], storage_context=vector_store_context) @@ -84,13 +84,13 @@ async def add_index(self, nodes) -> str: Returns: str: The name of the created index. """ - index = self.generate_index_name() + # index = self.generate_index_name() vector_store = MongoDBAtlasVectorSearch( self.client, db_name=self.config.db, collection_name=self.config.collection_name, - index_name=index + index_name=self.config.index ) vector_store_context = StorageContext.from_defaults(vector_store=vector_store) vector_store_index = VectorStoreIndex(nodes=nodes, storage_context=vector_store_context, embed_model=self.embeding_model) - return index \ No newline at end of file + return self.config.index \ No newline at end of file diff --git a/utils/__init__.py b/utils/__init__.py index 6f2c0c3..80c88a3 100644 --- a/utils/__init__.py +++ b/utils/__init__.py @@ -1 +1 @@ -from bolna.ingestion_server.utils.log import configure_logger \ No newline at end of file +from .log import configure_logger \ No newline at end of file From 7acd42a8b0ff10f8fc6be333a0be3d2ba6ed4525 Mon Sep 17 00:00:00 2001 From: anshjoseph Date: Thu, 22 Aug 2024 15:24:04 +0530 Subject: [PATCH 3/4] fix union --- datachecks/__init__.py | 15 ++++++++++++--- main.py | 8 ++++++-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/datachecks/__init__.py b/datachecks/__init__.py index ea45ba2..bfac197 100644 --- a/datachecks/__init__.py +++ b/datachecks/__init__.py @@ -1,4 +1,4 @@ -from pydantic import BaseModel +from pydantic import BaseModel, Field, root_validator from typing import Union, Optional # Embedding config @@ -11,6 +11,7 @@ class LanceDBConfig(BaseModel): loc: Optional[str] = "" class MongoDBConfig(BaseModel): + index: Optional[str] = "" uri: Optional[str] = "" db: Optional[str] = "" @@ -23,8 +24,16 @@ class ProviderConfig(BaseModel): overlapping:int worker:int similarity_top_k:int - rag: Union[LanceDBConfig,MongoDBConfig] - + rag: Union[MongoDBConfig, LanceDBConfig] = Field(union_mode="left_to_right") + @root_validator(pre=True) + def check_config_type(cls, values): + config = values.get('rag') + if isinstance(config, dict): + if 'uri' in config and 'collection_name' in config: + values['rag'] = MongoDBConfig(**config) + else: + values['rag'] = LanceDBConfig(**config) + return values # Rag Config class RAGConfig(BaseModel): provider:str diff --git a/main.py b/main.py index bb5cd63..7f4d971 100644 --- a/main.py +++ b/main.py @@ -16,11 +16,12 @@ from uuid import uuid4 import tempfile import os +import json logger = configure_logger(__name__) -dotenv.load_dotenv() +dotenv.load_dotenv(".env") DB: Dict[str, RAGConfig] = {} @@ -244,8 +245,11 @@ async def make_rag( """ try: # Parse the JSON string into a RAGConfig object - rag_config = RAGConfig.parse_raw(config) + config = json.loads(config) + print(config) + rag_config = RAGConfig(**config) + print(rag_config) # Create RAG configuration rag_id = rag_factory.make_rag(rag_config) logging.info(f"Rag id {rag_id}") From 6eba0bab3ba0892127bd10253a780485c736956e Mon Sep 17 00:00:00 2001 From: Vipul Maheshwari Date: Thu, 22 Aug 2024 17:30:41 +0530 Subject: [PATCH 4/4] fixes with union --- datachecks/__init__.py | 2 ++ main.py | 32 ++------------------------------ rags/lancedb_rag.py | 2 -- rags/mongoDB_rag.py | 2 +- requirements.txt | 7 +++++++ 5 files changed, 12 insertions(+), 33 deletions(-) create mode 100644 requirements.txt diff --git a/datachecks/__init__.py b/datachecks/__init__.py index bfac197..a33adec 100644 --- a/datachecks/__init__.py +++ b/datachecks/__init__.py @@ -25,6 +25,7 @@ class ProviderConfig(BaseModel): worker:int similarity_top_k:int rag: Union[MongoDBConfig, LanceDBConfig] = Field(union_mode="left_to_right") + @root_validator(pre=True) def check_config_type(cls, values): config = values.get('rag') @@ -34,6 +35,7 @@ def check_config_type(cls, values): else: values['rag'] = LanceDBConfig(**config) return values + # Rag Config class RAGConfig(BaseModel): provider:str diff --git a/main.py b/main.py index 7f4d971..f105329 100644 --- a/main.py +++ b/main.py @@ -200,34 +200,6 @@ def heartbeat() -> float: return time.time() -# @app.post("/create-rag") -# def create_rag(request: RAGConfig) -> Dict[str, str]: -# """Create a RAG configuration and return its ID. -# Args: -# request (RAGConfig): The RAG configuration to create. -# Returns: -# Dict[str, str]: A dictionary containing the created RAG ID. -# """ -# print(request) -# rag_id = rag_factory.make_rag(request) -# return {"rag_id": rag_id} - - -# @app.post("/rag-upload-file/{rag_id}") -# async def rag_upload_file(file: UploadFile, rag_id: str) -> Dict[str, str]: -# """Upload a file for a specific RAG ID. -# Args: -# file (UploadFile): The file to upload. -# rag_id (str): The ID of the RAG to associate with the file. -# Returns: -# Dict[str, str]: A dictionary containing the upload status and index. -# """ -# try: -# task = await rag_factory.file_ingest(rag_name=rag_id, file=file) -# return {"index": task._index, "status": task._status, "message": "DONE"} -# except Exception as e: -# return {"index": None, "status": "ERROR", "message": f"{e}"} - @app.post("/make-rag") async def make_rag( file: UploadFile = File(...), @@ -246,10 +218,10 @@ async def make_rag( try: # Parse the JSON string into a RAGConfig object config = json.loads(config) - print(config) + logger.info(f"Config : {config}") rag_config = RAGConfig(**config) + logger.info(f"RAG Config : {rag_config}") - print(rag_config) # Create RAG configuration rag_id = rag_factory.make_rag(rag_config) logging.info(f"Rag id {rag_id}") diff --git a/rags/lancedb_rag.py b/rags/lancedb_rag.py index cec92de..ad80c00 100644 --- a/rags/lancedb_rag.py +++ b/rags/lancedb_rag.py @@ -85,5 +85,3 @@ async def get_docs_index(self, query: str, index: str): query_engine = VectorIndexRetriever(vector_index, similarity_top_k=self.similarity_top_k) return query_engine.retrieve(query) - # query_engine = vector_index.as_query_engine(llm=self.llm) - diff --git a/rags/mongoDB_rag.py b/rags/mongoDB_rag.py index be7abea..d939279 100644 --- a/rags/mongoDB_rag.py +++ b/rags/mongoDB_rag.py @@ -89,7 +89,7 @@ async def add_index(self, nodes) -> str: self.client, db_name=self.config.db, collection_name=self.config.collection_name, - index_name=self.config.index + vector_index_name=self.config.index ) vector_store_context = StorageContext.from_defaults(vector_store=vector_store) vector_store_index = VectorStoreIndex(nodes=nodes, storage_context=vector_store_context, embed_model=self.embeding_model) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..c121965 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,7 @@ +pylance==0.16.0 +pymongo==4.8.0 +python-multipart==0.0.6 +llama-index==0.10.65 +llama-index-vector-stores-lancedb==0.1.7 +llama-index-vector-stores-mongodb==0.1.8 +llama-index-llms-openai==0.1.29 \ No newline at end of file