From 3cbbda489b66b2f71e4463a86323ecfa2c8f77ba Mon Sep 17 00:00:00 2001 From: yuta3003 Date: Thu, 12 Jun 2025 09:39:04 +0900 Subject: [PATCH] =?UTF-8?q?:rocket:=20local=E3=81=ABembedding=20model?= =?UTF-8?q?=E3=82=92=E6=A7=8B=E7=AF=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/embedding-api/Dockerfile | 8 ++++++++ docker/embedding-api/embedding_api.py | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 docker/embedding-api/Dockerfile create mode 100644 docker/embedding-api/embedding_api.py diff --git a/docker/embedding-api/Dockerfile b/docker/embedding-api/Dockerfile new file mode 100644 index 0000000000..523cee4e5b --- /dev/null +++ b/docker/embedding-api/Dockerfile @@ -0,0 +1,8 @@ +FROM python:3.10-slim + +WORKDIR /app +COPY embedding_api.py . + +RUN pip install fastapi uvicorn sentence-transformers + +CMD ["uvicorn", "embedding_api:app", "--host", "0.0.0.0", "--port", "8001"] diff --git a/docker/embedding-api/embedding_api.py b/docker/embedding-api/embedding_api.py new file mode 100644 index 0000000000..55ad80717d --- /dev/null +++ b/docker/embedding-api/embedding_api.py @@ -0,0 +1,19 @@ +from fastapi import FastAPI +from pydantic import BaseModel +from typing import List +from sentence_transformers import SentenceTransformer + +app = FastAPI() +model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2") + +class EmbeddingRequest(BaseModel): + input: List[str] + +@app.post("/v1/embeddings") +async def embed(request: EmbeddingRequest): + embeddings = model.encode(request.input).tolist() + return { + "data": [{"embedding": emb, "index": i} for i, emb in enumerate(embeddings)], + "model": "sentence-transformers/all-MiniLM-L6-v2", + "object": "list" + }