File size: 2,357 Bytes
ca8bacf ed7f561 ca8bacf 3944fa7 ca8bacf ed7f561 bb18925 ca8bacf 3944fa7 f3e3788 3944fa7 f3e3788 ed7f561 f3e3788 3944fa7 ed7f561 f3e3788 bb18925 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
from fastapi import FastAPI
from sentence_transformers import SentenceTransformer
app = FastAPI(
title="Generate Embeddings API",
description="""
## Generate Embeddings API
A simple API to generate sentence embeddings using **Sentence Transformers**.
### π Useful Links
- [Hugging Face Code](https://huggingface.co/spaces/TheMihirNaik/generate-embeddings-api/tree/main)
- [SEO Workflow Automation Newsletter](https://mihirnaik.substack.com/)
- [Mihir Naik](https://www.mihirnaik.com)
### How It Works
1. Send a **POST request** to `/generate-embeddings/` with a list of sentences.
2. Get **embeddings** as JSON response.
Built by **Mihir Naik** π
""",
version="1.0.0",
contact={
"name": "Mihir Naik",
"url": "https://www.mihirnaik.com",
}
)
all_MiniLM_L6_V2_model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')
intfloat_e5_large_v2_model = SentenceTransformer('intfloat/e5-large-v2')
@app.get("/")
def redirect_to_docs():
"""
Redirects to the FastAPI documentation.
Returns:
RedirectResponse: A response that redirects to the documentation URL.
"""
from fastapi.responses import RedirectResponse
return RedirectResponse(url="/docs")
from typing import List
@app.post("/generate-embeddings/sentence-transformers-all-MiniLM-L6-v2/")
def generate_embeddings_all_MiniLM_L6_V2_model(sentences: List[str]):
"""
Generates embeddings for a list of sentences using the MiniLM model.
Args:
sentences (List[str]): A list of sentences to generate embeddings for.
Returns:
dict: A dictionary containing the embeddings as a JSON-compatible list.
"""
embeddings = all_MiniLM_L6_V2_model.encode(sentences)
return {"embeddings": embeddings.tolist()} # Return embeddings as a JSON-compatible list
@app.post("/generate-embeddings/intfloat-e5-large-v2/")
def generate_embeddings_intfloat_e5_large_v2_model(sentences: List[str]):
"""
Generates embeddings for a list of sentences using the intfloat/e5-large-v2 model.
Args:
sentences (List[str]): A list of sentences to generate embeddings for.
Returns:
dict: A dictionary containing the embeddings as a JSON-compatible list.
"""
embeddings = intfloat_e5_large_v2_model.encode(sentences)
return {"embeddings": embeddings.tolist()}
|