Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions comps/cores/mega/orchestrator.py
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@ async def execute(
headers={"Content-type": "application/json", "Authorization": f"Bearer {access_token}"},
proxies={"http": None},
stream=True,
timeout=1000,
timeout=2000,
)
else:
response = requests.post(
Expand All @@ -285,7 +285,7 @@ async def execute(
},
proxies={"http": None},
stream=True,
timeout=1000,
timeout=2000,
)

downstream = runtime_graph.downstream(cur_node)
Expand Down Expand Up @@ -317,6 +317,7 @@ def generate():
"Authorization": f"Bearer {access_token}",
},
proxies={"http": None},
timeout=2000,
)
else:
res = requests.post(
Expand All @@ -326,6 +327,7 @@ def generate():
"Content-type": "application/json",
},
proxies={"http": None},
timeout=2000,
)
res_json = res.json()
if "text" in res_json:
Expand Down
1 change: 1 addition & 0 deletions comps/embeddings/deployment/docker_compose/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ services:
https_proxy: ${https_proxy}
TEI_EMBEDDING_ENDPOINT: ${TEI_EMBEDDING_ENDPOINT}
EMBEDDING_COMPONENT_NAME: "OPEA_TEI_EMBEDDING"
EMBEDDING_MODEL_ID: ${EMBEDDING_MODEL_ID}
depends_on:
tei-embedding-serving:
condition: service_healthy
Expand Down
23 changes: 9 additions & 14 deletions comps/embeddings/src/integrations/ovms.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

from comps import CustomLogger, OpeaComponent, OpeaComponentRegistry, ServiceType
from comps.cores.mega.utils import get_access_token
from comps.cores.proto.api_protocol import EmbeddingRequest, EmbeddingResponse
from comps.cores.proto.api_protocol import EmbeddingRequest, EmbeddingResponse, EmbeddingResponseData

logger = CustomLogger("opea_ovms_embedding")
logflag = os.getenv("LOGFLAG", False)
Expand Down Expand Up @@ -45,7 +45,7 @@ def _initialize_client(self) -> AsyncInferenceClient:
)
headers = {"Authorization": f"Bearer {access_token}"} if access_token else {}
return AsyncInferenceClient(
model=MODEL_ID,
model=f"{self.base_url}/embed",
token=os.getenv("HUGGINGFACEHUB_API_TOKEN"),
headers=headers,
)
Expand All @@ -69,18 +69,13 @@ async def invoke(self, input: EmbeddingRequest) -> EmbeddingResponse:
raise ValueError("Invalid input format: Only string or list of strings are supported.")
else:
raise TypeError("Unsupported input type: input must be a string or list of strings.")
response = await self.client.post(
json={
"input": texts,
"encoding_format": input.encoding_format,
"model": self.client.model,
"user": input.user,
},
model=f"{self.base_url}/v3/embeddings",
task="text-embedding",
)
embeddings = json.loads(response.decode())
return EmbeddingResponse(**embeddings)
# feature_extraction return np.ndarray
response = await self.client.feature_extraction(text=texts, model=MODEL_ID)
# Convert np.ndarray to a list of lists (embedding)
data = [EmbeddingResponseData(index=i, embedding=embedding.tolist()) for i, embedding in enumerate(response)]
# Construct the EmbeddingResponse
response = EmbeddingResponse(data=data)
return response

def check_health(self) -> bool:
"""Checks the health of the embedding service.
Expand Down
19 changes: 10 additions & 9 deletions comps/embeddings/src/integrations/tei.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,14 @@

from comps import CustomLogger, OpeaComponent, OpeaComponentRegistry, ServiceType
from comps.cores.mega.utils import get_access_token
from comps.cores.proto.api_protocol import EmbeddingRequest, EmbeddingResponse
from comps.cores.proto.api_protocol import EmbeddingRequest, EmbeddingResponse, EmbeddingResponseData

logger = CustomLogger("opea_tei_embedding")
logflag = os.getenv("LOGFLAG", False)
TOKEN_URL = os.getenv("TOKEN_URL")
CLIENTID = os.getenv("CLIENTID")
CLIENT_SECRET = os.getenv("CLIENT_SECRET")
MODEL_ID = os.getenv("EMBEDDING_MODEL_ID", "BAAI/bge-base-en-v1.5")


@OpeaComponentRegistry.register("OPEA_TEI_EMBEDDING")
Expand Down Expand Up @@ -44,7 +45,7 @@ def _initialize_client(self) -> AsyncInferenceClient:
)
headers = {"Authorization": f"Bearer {access_token}"} if access_token else {}
return AsyncInferenceClient(
model=f"{self.base_url}/v1/embeddings",
model=f"{self.base_url}/embed",
token=os.getenv("HUGGINGFACEHUB_API_TOKEN"),
headers=headers,
)
Expand All @@ -68,13 +69,13 @@ async def invoke(self, input: EmbeddingRequest) -> EmbeddingResponse:
raise ValueError("Invalid input format: Only string or list of strings are supported.")
else:
raise TypeError("Unsupported input type: input must be a string or list of strings.")
response = await self.client.post(
json={"input": texts, "encoding_format": input.encoding_format, "model": input.model, "user": input.user},
model=f"{self.base_url}/v1/embeddings",
task="text-embedding",
)
embeddings = json.loads(response.decode())
return EmbeddingResponse(**embeddings)
# feature_extraction return np.ndarray
response = await self.client.feature_extraction(text=texts, model=MODEL_ID)
# Convert np.ndarray to a list of lists (embedding)
data = [EmbeddingResponseData(index=i, embedding=embedding.tolist()) for i, embedding in enumerate(response)]
# Construct the EmbeddingResponse
response = EmbeddingResponse(data=data)
return response

def check_health(self) -> bool:
"""Checks the health of the embedding service.
Expand Down
1 change: 1 addition & 0 deletions comps/rerankings/src/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ aiohttp
docarray[full]
fastapi
httpx
huggingface-hub==0.30.2
opentelemetry-api
opentelemetry-exporter-otlp
opentelemetry-sdk
Expand Down
Loading