MCPcopy
hub / github.com/volcengine/OpenViking / _probe_embedding_provider

Function _probe_embedding_provider

openviking_cli/doctor.py:198–268  ·  view source on GitHub ↗

Create the configured embedder, make one request, and validate vector shape.

(
    embedding: dict[str, Any],
    dense: dict[str, Any],
)

Source from the content-addressed store, hash-verified

196
197
198def _probe_embedding_provider(
199 embedding: dict[str, Any],
200 dense: dict[str, Any],
201) -> tuple[bool, str, Optional[str]]:
202 """Create the configured embedder, make one request, and validate vector shape."""
203 from openviking.models.embedder.base import embed_compat
204 from openviking_cli.utils.config.embedding_config import EmbeddingConfig, EmbeddingModelConfig
205
206 provider = dense.get("provider", "local")
207 model = dense.get("model", "bge-small-zh-v1.5-f16")
208 label = _embedding_probe_label(provider, model, dense)
209
210 try:
211 model_config = EmbeddingModelConfig(**dense)
212 config_kwargs = {
213 key: embedding[key]
214 for key in ("max_concurrent", "max_retries", "text_source", "max_input_tokens")
215 if key in embedding
216 }
217 embedding_config = EmbeddingConfig(dense=model_config, **config_kwargs)
218 embedder = embedding_config.get_embedder()
219 expected_dimension = (
220 model_config.dimension
221 if model_config.dimension is not None
222 else embedder.get_dimension()
223 )
224 except Exception as exc:
225 return (
226 False,
227 f"{label} (invalid embedding config: {exc})",
228 "Fix embedding.dense provider/model/api_base/dimension in ov.conf",
229 )
230
231 async def _run_probe():
232 return await asyncio.wait_for(
233 embed_compat(embedder, "OpenViking doctor embedding probe", is_query=True),
234 timeout=10.0,
235 )
236
237 try:
238 result = asyncio.run(_run_probe())
239 except TimeoutError:
240 return (
241 False,
242 f"{label} (probe timed out)",
243 "Check embedding.dense.api_base and make sure the embedding provider is reachable",
244 )
245 except Exception as exc:
246 return (
247 False,
248 f"{label} (probe failed: {exc})",
249 "Check the embedding provider service, model name, API key, and api_base",
250 )
251
252 vector = getattr(result, "dense_vector", None)
253 if not vector:
254 return (
255 False,

Calls 8

get_embedderMethod · 0.95
EmbeddingConfigClass · 0.90
_embedding_probe_labelFunction · 0.85
_run_probeFunction · 0.85
getMethod · 0.45
get_dimensionMethod · 0.45
runMethod · 0.45