Ezhil commited on
Commit
989f2d4
·
1 Parent(s): 09e24e5

added the endpoint

Browse files
Files changed (1) hide show
  1. main.py +51 -5
main.py CHANGED
@@ -1,27 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  from fastapi import FastAPI
2
  from pydantic import BaseModel
3
- from typing import List, Tuple
4
  import numpy as np
5
  from sentence_transformers import SentenceTransformer
6
 
7
  # Load the pre-trained model
8
  model = SentenceTransformer('Alibaba-NLP/gte-base-en-v1.5', trust_remote_code=True)
9
 
10
- # Define request model
11
  class MessageRequest(BaseModel):
12
  messages: List[str]
13
 
14
- # Define response model
 
 
 
 
15
  class EmbeddingResponse(BaseModel):
16
  dimensions: int # Only return embedding size
17
  numeric_values: List[List[float]]
18
 
 
 
 
19
  # Initialize FastAPI app
20
  app = FastAPI()
21
 
22
  @app.get("/")
23
- def home ():
24
- return {"Message":"Welcome to homepage, kindly proceed by giving /docs in the URL" }
25
 
26
  @app.post("/embed", response_model=EmbeddingResponse)
27
  def embed(request: MessageRequest):
@@ -30,3 +70,9 @@ def embed(request: MessageRequest):
30
  dimensions=new_embeddings.shape[1], # Return only the embedding dimension
31
  numeric_values=new_embeddings.tolist()
32
  )
 
 
 
 
 
 
 
1
+ # from fastapi import FastAPI
2
+ # from pydantic import BaseModel
3
+ # from typing import List, Tuple
4
+ # import numpy as np
5
+ # from sentence_transformers import SentenceTransformer
6
+
7
+ # # Load the pre-trained model
8
+ # model = SentenceTransformer('Alibaba-NLP/gte-base-en-v1.5', trust_remote_code=True)
9
+
10
+ # # Define request model
11
+ # class MessageRequest(BaseModel):
12
+ # messages: List[str]
13
+
14
+ # # Define response model
15
+ # class EmbeddingResponse(BaseModel):
16
+ # dimensions: int # Only return embedding size
17
+ # numeric_values: List[List[float]]
18
+
19
+ # # Initialize FastAPI app
20
+ # app = FastAPI()
21
+
22
+ # @app.get("/")
23
+ # def home ():
24
+ # return {"Message":"Welcome to homepage, kindly proceed by giving /docs in the URL" }
25
+
26
+ # @app.post("/embed", response_model=EmbeddingResponse)
27
+ # def embed(request: MessageRequest):
28
+ # new_embeddings = model.encode(request.messages, convert_to_tensor=True)
29
+ # return EmbeddingResponse(
30
+ # dimensions=new_embeddings.shape[1], # Return only the embedding dimension
31
+ # numeric_values=new_embeddings.tolist()
32
+ # )
33
+
34
  from fastapi import FastAPI
35
  from pydantic import BaseModel
36
+ from typing import List
37
  import numpy as np
38
  from sentence_transformers import SentenceTransformer
39
 
40
  # Load the pre-trained model
41
  model = SentenceTransformer('Alibaba-NLP/gte-base-en-v1.5', trust_remote_code=True)
42
 
43
+ # Define request models
44
  class MessageRequest(BaseModel):
45
  messages: List[str]
46
 
47
+ class CosineSimilarityRequest(BaseModel):
48
+ text1: str
49
+ text2: str
50
+
51
+ # Define response models
52
  class EmbeddingResponse(BaseModel):
53
  dimensions: int # Only return embedding size
54
  numeric_values: List[List[float]]
55
 
56
+ class CosineSimilarityResponse(BaseModel):
57
+ similarity: float
58
+
59
  # Initialize FastAPI app
60
  app = FastAPI()
61
 
62
  @app.get("/")
63
+ def home():
64
+ return {"Message": "Welcome to homepage, kindly proceed by giving /docs in the URL"}
65
 
66
  @app.post("/embed", response_model=EmbeddingResponse)
67
  def embed(request: MessageRequest):
 
70
  dimensions=new_embeddings.shape[1], # Return only the embedding dimension
71
  numeric_values=new_embeddings.tolist()
72
  )
73
+
74
+ @app.post("/cosine_similarity", response_model=CosineSimilarityResponse)
75
+ def cosine_similarity(request: CosineSimilarityRequest):
76
+ embeddings = model.encode([request.text1, request.text2], convert_to_tensor=True)
77
+ cos_sim = np.dot(embeddings[0], embeddings[1]) / (np.linalg.norm(embeddings[0]) * np.linalg.norm(embeddings[1]))
78
+ return CosineSimilarityResponse(similarity=cos_sim)