MCPcopy Create free account
hub / github.com/nlweb-ai/NLWeb / get_embedding

Function get_embedding

AskAgent/python/core/embedding.py:28–183  ·  view source on GitHub ↗

Get embedding for the provided text using the specified provider and model. Args: text: The text to embed provider: Optional provider name, defaults to preferred_embedding_provider model: Optional model name, defaults to the provider's configured model timeo

(
    text: str,
    provider: str | None = None,
    model: str | None = None,
    timeout: int = 30,
    query_params: dict | None = None
)

Source from the content-addressed store, hash-verified

26}
27
28async def get_embedding(
29 text: str,
30 provider: str | None = None,
31 model: str | None = None,
32 timeout: int = 30,
33 query_params: dict | None = None
34) -> list[float]:
35 """
36 Get embedding for the provided text using the specified provider and model.
37
38 Args:
39 text: The text to embed
40 provider: Optional provider name, defaults to preferred_embedding_provider
41 model: Optional model name, defaults to the provider's configured model
42 timeout: Maximum time to wait for embedding response in seconds
43 query_params: Optional query parameters from HTTP request
44
45 Returns:
46 List of floats representing the embedding vector
47 """
48 # Allow overriding provider in development mode
49 if CONFIG.is_development_mode() and query_params and 'embedding_provider' in query_params:
50 provider = query_params['embedding_provider']
51 logger.debug(f"Overriding embedding provider to: {provider}")
52
53 provider = provider or CONFIG.preferred_embedding_provider
54
55 # Truncate text to 20k characters to avoid token limit issues
56 MAX_CHARS = 20000
57 original_length = len(text)
58 if original_length > MAX_CHARS:
59 text = text[:MAX_CHARS]
60 logger.warning(f"Truncated text from {original_length} to {MAX_CHARS} characters for embedding generation")
61
62 logger.debug(f"Getting embedding with provider: {provider}")
63 logger.debug(f"Text length: {len(text)} chars")
64
65 if provider not in CONFIG.embedding_providers:
66 error_msg = f"Unknown embedding provider '{provider}'"
67 logger.error(error_msg)
68 raise ValueError(error_msg)
69
70 # Get provider config using the helper method
71 provider_config = CONFIG.get_embedding_provider(provider)
72 if not provider_config:
73 error_msg = f"Missing configuration for embedding provider '{provider}'"
74 logger.error(error_msg)
75 raise ValueError(error_msg)
76
77 # Use the provided model or fall back to the configured model
78 model_id = model or provider_config.model
79 if not model_id:
80 error_msg = f"No embedding model specified for provider '{provider}'"
81 logger.error(error_msg)
82 raise ValueError(error_msg)
83
84 logger.debug(f"Using embedding model: {model_id}")
85

Callers 15

get_embedding_asyncMethod · 0.90
add_conversationMethod · 0.90
search_conversationsMethod · 0.90
add_conversationMethod · 0.90
search_conversationsMethod · 0.90
add_conversationMethod · 0.90
search_conversationsMethod · 0.90
get_embedding_asyncFunction · 0.90
searchMethod · 0.90
searchMethod · 0.90
search_all_sitesMethod · 0.90
searchMethod · 0.90

Calls 15

get_embeddingsMethod · 0.95
closeMethod · 0.95
get_openai_embeddingsFunction · 0.90
get_gemini_embeddingsFunction · 0.90
get_azure_embeddingFunction · 0.90
get_ollama_embeddingFunction · 0.90
cortex_embedFunction · 0.90
is_development_modeMethod · 0.80
debugMethod · 0.45
warningMethod · 0.45

Tested by

no test coverage detected