velmurugan1122 commited on
Commit
892a768
·
1 Parent(s): aee76e0
.gitignore ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ __pycache__/*
2
+ __pycache__
Dockerfile ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.9
2
+
3
+ RUN useradd -m -u 1000 user
4
+ USER user
5
+ ENV PATH="/home/user/.local/bin:$PATH"
6
+
7
+ WORKDIR /app
8
+
9
+ COPY --chown=user ./requirements.txt requirements.txt
10
+ RUN pip install --no-cache-dir --upgrade -r requirements.txt
11
+
12
+ COPY --chown=user . /app
13
+ CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
__init__.py ADDED
File without changes
app.py ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI
2
+ from back_end.routers import embedding
3
+
4
+ app = FastAPI(title="Text Embedding API")
5
+
6
+ # Include the embedding router
7
+ app.include_router(embedding.router, prefix="/api")
8
+
9
+ @app.get("/")
10
+ def home():
11
+ return {"message": "Welcome to the Text Embedding API"}
back_end/data/sms_process_data_main.xlsx ADDED
Binary file (42.2 kB). View file
 
back_end/models/embedding_model.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ from sentence_transformers import SentenceTransformer
2
+
3
+ # Load the pre-trained embedding model
4
+ model = SentenceTransformer('Alibaba-NLP/gte-base-en-v1.5', trust_remote_code=True)
5
+
6
+ def generate_embedding(text: str):
7
+ """Generate a 768-dimensional embedding for the input text."""
8
+ embedding = model.encode(text).tolist() # Convert NumPy array to list
9
+ return embedding
back_end/routers/__init__.py ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ from fastapi import APIRouter
2
+
3
+ router = APIRouter()
back_end/routers/embedding.py ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import APIRouter, HTTPException
2
+ from back_end.models.embedding_model import generate_embedding
3
+ from back_end.schemas.request import TextRequest
4
+
5
+ router = APIRouter()
6
+
7
+ @router.get("/generate_embedding/")
8
+ def get_embedding(text: str):
9
+ """Returns a 768-dimensional embedding for the given text."""
10
+ if not text:
11
+ raise HTTPException(status_code=400, detail="Text cannot be empty")
12
+
13
+ embedding = generate_embedding(text)
14
+ return {"embedding": embedding, "dimensions": len(embedding)}
back_end/schemas/request.py ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ from pydantic import BaseModel
2
+
3
+ class TextRequest(BaseModel):
4
+ text: str
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ pandas
2
+ sentence-transformers
3
+ scikit-learn
4
+ openpyxl
5
+ fastapi[standard]