From e29196e4585be328bb5790862489e81a72e95d4c Mon Sep 17 00:00:00 2001 From: groupuser Date: Tue, 22 Apr 2025 23:56:02 +0000 Subject: [PATCH] Upload embedding.py --- app/embedding.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 app/embedding.py diff --git a/app/embedding.py b/app/embedding.py new file mode 100644 index 0000000..ad6fde3 --- /dev/null +++ b/app/embedding.py @@ -0,0 +1,33 @@ +from langchain.embeddings.base import Embeddings +from typing import List, Dict, Any +import requests +import os + +embedding_host = os.getenv("EMBEDDING_HOST", "http://183.111.96.67:30136") + +class WeaviateCustomEmbeddings(Embeddings): + """커스텀 엔드포인트를 사용하는 임베딩 모델""" + + def __init__(self): + self.api_url = embedding_host.rstrip("/") + print(self.api_url) + + def embed_documents(self, texts: List[str]) -> List[List[float]]: + """문서 리스트를 임베딩합니다.""" + embeddings = [] + for text in texts: + embeddings.append(self.embed_query(text)) + return embeddings + + def embed_query(self, text: str) -> List[float]: + """쿼리 텍스트를 임베딩합니다.""" + query_text = text.question if hasattr(text, 'question') else str(text) + + response = requests.post( + f"{self.api_url}/vectors", + json={"text": query_text} + ) + if response.status_code != 200: + raise ValueError(f"임베딩 API 호출 실패: {self.api_url}/vectors, {query_text}, {response.status_code}, {response.text}") + + return response.json()["vector"]