Upload 3 files
Browse files- Dockerfile +12 -0
- requirements.txt +4 -0
- server.py +21 -0
Dockerfile
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
FROM python:3.11
|
3 |
+
|
4 |
+
WORKDIR /app
|
5 |
+
|
6 |
+
COPY ./requirements.txt .
|
7 |
+
|
8 |
+
RUN pip install --no-cache-dir -r requirements.txt
|
9 |
+
|
10 |
+
COPY . .
|
11 |
+
|
12 |
+
CMD ["python", "server.py"]
|
requirements.txt
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
uvloop
|
2 |
+
sentence_transformers
|
3 |
+
litserve
|
4 |
+
--extra-index-url https://download.pytorch.org/whl/cpu
|
server.py
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from sentence_transformers import SentenceTransformer
|
2 |
+
import litserve as ls
|
3 |
+
|
4 |
+
class EmbeddingAPI(ls.LitAPI):
|
5 |
+
def setup(self, device):
|
6 |
+
self.instruction = "Represent this sentence for searching relevant passages: "
|
7 |
+
self.model = SentenceTransformer('BAAI/bge-large-en-v1.5', device=device)
|
8 |
+
|
9 |
+
def decode_request(self, request):
|
10 |
+
return request["input"]
|
11 |
+
|
12 |
+
def predict(self, query):
|
13 |
+
return self.model.encode([self.instruction + query], normalize_embeddings=True)
|
14 |
+
|
15 |
+
def encode_response(self, output):
|
16 |
+
return {"embedding": output[0].tolist()}
|
17 |
+
|
18 |
+
if __name__ == "__main__":
|
19 |
+
api = EmbeddingAPI()
|
20 |
+
server = ls.LitServer(api, devices="cpu")
|
21 |
+
server.run(port=7860)
|