pbrenotvinciguerra commited on
Commit
9beebbd
·
1 Parent(s): d137d9f

cleaning files

Browse files
Files changed (2) hide show
  1. Dockerfile +20 -0
  2. main.py +44 -0
Dockerfile ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.9
2
+
3
+ WORKDIR /code
4
+
5
+ COPY ./requirements.txt /code/requirements.txt
6
+
7
+ RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
8
+
9
+ RUN useradd -m -u 1000 user
10
+
11
+ USER user
12
+
13
+ ENV HOME=/home/user \
14
+ PATH=/home/user/.local/bin:$PATH
15
+
16
+ WORKDIR $HOME/app
17
+
18
+ COPY --chown=user . $HOME/app
19
+
20
+ CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"]
main.py ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ from pathlib import Path
3
+ from llama_index.embeddings import HuggingFaceEmbedding, VoyageEmbedding
4
+ from llama_index import (load_index_from_storage, ServiceContext, StorageContext)
5
+ from llama_index import download_loader, SimpleDirectoryReader
6
+ from llama_index.retrievers import RecursiveRetriever
7
+ from llama_index.query_engine import RetrieverQueryEngine
8
+ from llama_index.llms import Anyscale
9
+ from fastapi import FastAPI
10
+
11
+ app = FastAPI()
12
+
13
+ # Define the inference model
14
+ llm = Anyscale(model="mistralai/Mistral-7B-Instruct-v0.1", api_key=os.getenv("ANYSCALE_API_KEY"))
15
+ # Define the embedding model used to embed the query.
16
+ # query_embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-base-en-v1.5")
17
+ embed_model = VoyageEmbedding(model_name=model_name, voyage_api_key=os.getenv("VOYAGE_API_KEY"))
18
+ service_context = ServiceContext.from_defaults(llm=llm, embed_model=embed_model)
19
+
20
+ if "index" in os.list():
21
+ storage_context = StorageContext.from_defaults(persist_dir=Path("./index"))
22
+ else:
23
+ UnstructuredReader = download_loader('UnstructuredReader')\n",
24
+ dir_reader = SimpleDirectoryReader(Path('./docs/'), file_extractor={".pdf": UnstructuredReader()
25
+ documents = dir_reader.load_data()
26
+ index = VectorStoreIndex.from_documents(documents, service_context=service_context, show_progress=True)
27
+ index.storage_context.persist(Path('index'))
28
+ storage_context = StorageContext.from_defaults(persist_dir=Path("./index"))
29
+
30
+ # Load the vector stores that were created earlier.
31
+ index = load_index_from_storage(storage_context=storage_context, service_context=service_context)
32
+
33
+ # Define query engine:
34
+ index_engine = index.as_retriever(similarity_top_k=4)
35
+ index_retriever = RecursiveRetriever("vector",retriever_dict={"vector": index_engine})
36
+ query_engine = RetrieverQueryEngine.from_args(index_retriever, service_context=service_context)
37
+
38
+ # Deploy the Ray Serve application.
39
+ @app.get("/generate")
40
+ def generate(query: str):
41
+ return str(query_engine.query(query))
42
+
43
+ if __name__ == '__main__':
44
+ uvicorn.run('main:app', reload=True)