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()}