ed948666
tangwang
tidy
|
1
|
"""Embedding provider - HTTP service."""
|
42e3aea6
tangwang
tidy
|
2
3
4
|
from __future__ import annotations
|
7214c2e7
tangwang
mplemented**
|
5
6
7
8
9
|
from config.services_config import (
get_embedding_config,
get_embedding_image_base_url,
get_embedding_text_base_url,
)
|
42e3aea6
tangwang
tidy
|
10
11
12
13
14
15
|
def create_embedding_provider() -> "EmbeddingProvider":
"""Create embedding provider from services config."""
cfg = get_embedding_config()
provider = (cfg.provider or "http").strip().lower()
|
950a640e
tangwang
embeddings
|
16
|
if provider != "http":
|
ed948666
tangwang
tidy
|
17
|
raise ValueError(f"Unsupported embedding provider: {provider}")
|
42e3aea6
tangwang
tidy
|
18
19
20
21
22
23
24
25
26
27
|
return EmbeddingProvider()
class EmbeddingProvider:
"""
Provides text and image encoders. Both use HTTP embedding service
configured via services_config.
"""
def __init__(self) -> None:
|
7214c2e7
tangwang
mplemented**
|
28
29
|
self._text_base_url = get_embedding_text_base_url()
self._image_base_url = get_embedding_image_base_url()
|
26b910bd
tangwang
refactor service ...
|
30
31
32
33
|
from embeddings.text_encoder import TextEmbeddingEncoder
from embeddings.image_encoder import CLIPImageEncoder
# Initialize once; avoid per-access instantiation.
|
7214c2e7
tangwang
mplemented**
|
34
35
|
self._text_encoder = TextEmbeddingEncoder(service_url=self._text_base_url)
self._image_encoder = CLIPImageEncoder(service_url=self._image_base_url)
|
42e3aea6
tangwang
tidy
|
36
37
38
|
@property
def text_encoder(self):
|
26b910bd
tangwang
refactor service ...
|
39
40
|
"""Pre-initialized text encoder (TextEmbeddingEncoder)."""
return self._text_encoder
|
42e3aea6
tangwang
tidy
|
41
42
43
|
@property
def image_encoder(self):
|
26b910bd
tangwang
refactor service ...
|
44
45
|
"""Pre-initialized image encoder (CLIPImageEncoder)."""
return self._image_encoder
|