Team Ai
Apppublic

rubyrails117/Upload-Docs-react-test

sourceHugging Faceupdated 3y agoView on Hugging Face
0likes
build.py151 linesDownload Raw Back to root
1from llama_index import VectorStoreIndex, SimpleDirectoryReader, ServiceContext2from llama_index.vector_stores import PineconeVectorStore3from llama_index.storage.storage_context import StorageContext4from pinecone import Pinecone5import logging6import sys7import os8import openai9from pymongo.mongo_client import MongoClient10from datetime import datetime11 12logging.basicConfig(stream=sys.stdout, level=logging.INFO)13logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))14 15 16pinecone_key = os.environ['PINECONE_KEY']17globalkey=os.environ["global_key"]18mongo_key=os.environ["MONGO_KEY"]19 20def isBrainFound(brainName):21    if(brainName=="global-tekmed"):22        pinecone.init(globalkey,23                      environment="us-west4-gcp")24    else:    25        Pinecone(api_key=pinecone_key)26    active_indexes = pinecone.list_indexes()27    print(active_indexes)28    brainName = brainName.lower()29    if brainName in active_indexes:30        return True31    else:32        return False33 34def add_file(collection,username, filename):35    document = {36        "brain": username,37        "filename": filename,38        "namespace":None,39        "timestamp": datetime.utcnow()40    }41    collection.insert_one(document)42 43 44def delete_file(collection,username, filename):45    query = {46        "brain": username,47        "filename": filename48    }49    collection.delete_one(query)50 51def updateBrain(files,brainName):52    if(brainName=="unchain3d-demo" or brainName=="Unchain3d-demo"):53        return "updated"54    55    # if(isBrainFound(brainName)==False):56    #     return "brain not found"57    58    print(len(files))59    print("Updating brain")60    print(brainName)61    62    # if(brainName=="global-tekmed"):63    #     pinecone.init(globalkey,64    #                   environment="us-west4-gcp")65    # else:    66    #     Pinecone(api_key=pinecone_key)67    pc=Pinecone(api_key=pinecone_key)68   69    documents = []70    corrupt = []71    newfiles = []72 73 74    i = 075    for file in files:76        loader = SimpleDirectoryReader(input_files=[file.name])77        try:78            document1 = loader.load_data()79            j=180            for doc in document1:81                doc.doc_id=os.path.basename(file.name)82                doc.extra_info={"filename":os.path.basename(file.name),"pageno":j}83                documents.append(doc)84                j=j+185            newfiles.append(os.path.basename(file.name))86        except Exception as e:87            print(e)88            if (str(e) == "Cannot read an empty file"):89                return "Please Wait! Files are uploading, Try again Later!"90            corrupt.append(os.path.basename(file.name))91        i = i+192        print(i)93 94    pindex = pc.Index(brainName)95 96    # try:97    #     print(pindex.describe_index_stats())98    # except Exception as e:99    #     print(e)100 101    vector_store = PineconeVectorStore(pinecone_index=pindex)102    storage_context = StorageContext.from_defaults(vector_store=vector_store)103    service_context = ServiceContext.from_defaults(chunk_size=512,chunk_overlap=20)104    index = VectorStoreIndex.from_documents([], storage_context=storage_context,service_context=service_context)105 106    client = MongoClient(mongo_key)107    db = client['nbrain']108    collection = db['files']109 110    # for prevfile in newfiles:111    #     index.delete_ref_doc(prevfile, delete_from_docstore=True)112    #     delete_file(collection,brainName,prevfile)113 114    uploadedFiles=[]115    j = 1116    117    fileProcessing=documents[0].doc_id118    for doc in documents:119        try:120            index.insert(doc)121            if doc.doc_id not in uploadedFiles:122                print(doc.doc_id)123                add_file(collection,brainName,doc.doc_id)124                uploadedFiles.append(doc.doc_id)125                print(j)126                j = j+1127            if(fileProcessing!=doc.doc_id):128                # yield fileProcessing129                fileProcessing=doc.doc_id130        except Exception as e:131            if doc.doc_id not in corrupt:132                corrupt.append(doc.doc_id)133            print("ERROR : "+str(e))134 135 136    print("Brain Updated: "+brainName)137    # try:138    #     print(pindex.describe_index_stats())139    # except Exception as e:140    #     print(e)141 142    print(corrupt)143 144    if (len(corrupt) > 0):145        print("Brain Updated! Below files are corrupt/unformatted, and not added to the brain. "+ str(corrupt))146        return """Brain Updated! 147        Below files are corrupt/unformatted, and not added to the brain.148         """ + str(corrupt)149 150    return "updated"151