Skip to content

Instantly share code, notes, and snippets.

@waleedkadous
Created April 14, 2023 23:13
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save waleedkadous/d0915e52cbe56dff328f5c00ded21107 to your computer and use it in GitHub Desktop.
Save waleedkadous/d0915e52cbe56dff328f5c00ded21107 to your computer and use it in GitHub Desktop.
import ray
from starlette.requests import Request
from ray import serve
from typing import List
from embeddings import LocalHuggingFaceEmbeddings
from langchain.vectorstores import FAISS
import time
FAISS_INDEX_PATH = 'faiss_index'
@serve.deployment
class VectorSearchDeployment:
def __init__(self):
#Load the data from faiss
st = time.time()
self.embeddings = LocalHuggingFaceEmbeddings('multi-qa-mpnet-base-dot-v1')
self.db = FAISS.load_local(FAISS_INDEX_PATH, self.embeddings)
et = time.time() - st
print(f'Loading database took {et} seconds.')
def search(self,query):
results = self.db.max_marginal_relevance_search(query)
retval = ''
for i in range(len(results)):
chunk = results[i]
source = chunk.metadata['source']
retval = retval + f'From http://{source}\n\n'
retval = retval + chunk.page_content
retval = retval + '\n====\n\n'
return retval
async def __call__(self, request: Request) -> List[str]:
return self.search(request.query_params["query"])
deployment = VectorSearchDeployment.bind()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment