ashishbangwal's picture
init
f1d1d20
import chromadb
from uuid import uuid4
from .pre_processor import full_processor
from typing import List
from fastapi import UploadFile
DB_NAME = "chromadb"
class AdvancedDatabase:
def __init__(self) -> None:
self.client = chromadb.PersistentClient(path=DB_NAME)
async def ingest(self, files: List[UploadFile], user_metadata, collection_name):
chunks, metadata, embeddings = await full_processor(
files, user_metadata, collection_name
)
collection = self.client.create_collection(name=collection_name)
collection.add(
ids=[str(uuid4()) for _ in range(len(chunks))],
embeddings=embeddings,
documents=chunks,
metadatas=metadata,
)
return {"chunks_added": len(chunks), "collection_name": collection_name}
def get_context(self, embedding: List[float], group_name: str):
collection = self.client.get_collection(name=group_name)
response = collection.query(
query_embeddings=embedding, n_results=5, include=["documents"]
)
return response["documents"][0]