diff options
author | Lain Soykaf <lain@lain.com> | 2024-05-19 12:47:08 +0400 |
---|---|---|
committer | Lain Soykaf <lain@lain.com> | 2024-05-19 12:47:08 +0400 |
commit | dd48810186e3b4ee14e1d3727f37bd470d0711a4 (patch) | |
tree | ee7b0480adedac30316b76ff74f099b13c82ca23 /supplemental/search | |
parent | e142ea400a9ed3595f8d432edd90ea26fc7d2eb5 (diff) | |
download | pleroma-dd48810186e3b4ee14e1d3727f37bd470d0711a4.tar.gz pleroma-dd48810186e3b4ee14e1d3727f37bd470d0711a4.zip |
B FastembedAPI: Move to more appropriate folder
Diffstat (limited to 'supplemental/search')
-rw-r--r-- | supplemental/search/fastembed-api/Dockerfile | 8 | ||||
-rw-r--r-- | supplemental/search/fastembed-api/compose.yml | 5 | ||||
-rw-r--r-- | supplemental/search/fastembed-api/fastembed-server.py | 23 |
3 files changed, 36 insertions, 0 deletions
diff --git a/supplemental/search/fastembed-api/Dockerfile b/supplemental/search/fastembed-api/Dockerfile new file mode 100644 index 000000000..f83c1c1b3 --- /dev/null +++ b/supplemental/search/fastembed-api/Dockerfile @@ -0,0 +1,8 @@ +FROM python:3.9 + +WORKDIR /code +COPY fastembed-server.py /workdir/fastembed-server.py + +RUN pip install --no-cache-dir --upgrade fastembed fastapi uvicorn + +CMD ["python", "/workdir/fastembed-server.py"] diff --git a/supplemental/search/fastembed-api/compose.yml b/supplemental/search/fastembed-api/compose.yml new file mode 100644 index 000000000..d4cb31722 --- /dev/null +++ b/supplemental/search/fastembed-api/compose.yml @@ -0,0 +1,5 @@ +services: + web: + build: . + ports: + - "11345:11345" diff --git a/supplemental/search/fastembed-api/fastembed-server.py b/supplemental/search/fastembed-api/fastembed-server.py new file mode 100644 index 000000000..dd4a7a9c8 --- /dev/null +++ b/supplemental/search/fastembed-api/fastembed-server.py @@ -0,0 +1,23 @@ +from fastembed import TextEmbedding +from fastapi import FastAPI +from pydantic import BaseModel + +models = {} + +app = FastAPI() + +class EmbeddingRequest(BaseModel): + model: str + input: str + +@app.post("/v1/embeddings") +def embeddings(request: EmbeddingRequest): + model = models.get(request.model) or TextEmbedding(request.model) + models[request.model] = model + embeddings = next(model.embed(request.input)).tolist() + return {"data": [{"embedding": embeddings}]} + +if __name__ == "__main__": + import uvicorn + + uvicorn.run(app, host="0.0.0.0", port=11345) |