Skip to main content

telnyx-embeddings

Text-to-vector embeddings and semantic search using Telnyx AI. Generate embedding vectors via an OpenAI-compatible API โ€” no OpenAI or Google API keys required.

Source facts

Repository
team-telnyx/telnyx-toolkit
Last source activity
February 11, 2026 at 14:40
Detected SKILL.md language
English
Stars
3
Forks
2

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
9 files

Showing SKILL.md

SKILL.md
Source instructions ยท Read-only preview
name
telnyx-embeddings
description
Text-to-vector embeddings and semantic search using Telnyx AI. Generate embedding vectors via an OpenAI-compatible API โ€” no OpenAI or Google API keys required.
metadata
{"openclaw":{"emoji":"๐Ÿ”ฎ","requires":{"bins":"[Truncated]","env":"[Truncated]"},"primaryEnv":"TELNYX_API_KEY"}}
# Telnyx Embeddings Generate embedding vectors from text using Telnyx's OpenAI-compatible AI API. Convert any text to high-dimensional vectors for similarity comparisons, clustering, classification, or building custom search indexes โ€” all with just a `TELNYX_API_KEY`. No OpenAI or Google API keys required. ## Requirements - **Python 3.8+** โ€” stdlib only, no external dependencies - **TELNYX_API_KEY** โ€” get yours at [portal.telnyx.com](https://portal.telnyx.com/#/app/api-keys) ## Quick Start ```bash export TELNYX_API_KEY="KEY..." python3 {baseDir}/tools/embeddings/embed.py "Hello, world!" ``` That's it. No pip install, no setup wizard, no external provider keys. ## Text-to-Vector Embedding Generate embedding vectors for any text input. The API is OpenAI-compatible, so existing integrations work out of the box. ### Basic Usage ```bash # Embed text (uses thenlper/gte-large by default) ./embed.py "text to embed" # Use a specific model ./embed.py "text to embed" --model intfloat/multilingual-e5-large # Read from file ./embed.py --file input.txt # Pipe from stdin echo "text to embed" | ./embed.py --stdin # JSON output (for scripting) ./embed.py "text" --json # List available models ./embed.py --list-models ``` ### Available Models | Model | Description | |-------|-------------| | `thenlper/gte-large` | General text embeddings (default) | | `intfloat/multilingual-e5-large` | Multilingual text embeddings | ### OpenAI-Compatible Client The embeddings API is OpenAI-compatible, so you can use the OpenAI Python SDK with `base_url` pointed at Telnyx: ```python from openai import OpenAI client = OpenAI( api_key="KEY...", base_url="https://api.telnyx.com/v2/ai/openai" ) response = client.embeddings.create( model="thenlper/gte-large", input="Hello, world!" ) print("Dimensions:", len(response.data[0].embedding)) ``` ### From Python (Direct) ```python from embed import embed_text result = embed_text("your text here") for item in result.get("data", []): vector = item["embedding"] # list of floats dims = item["dimensions"] # vector dimensionality print(f"{dims}-dimensional vector") ``` ## Bucket Search Search any Telnyx Storage bucket using natural language. Upload files, trigger server-side embedding, then run similarity search โ€” the query embedding happens server-side too. ### Search ```bash # Search with default bucket (from config.json) ./search.py "what are the project requirements?" # Search a specific bucket ./search.py "meeting notes" --bucket my-bucket # Get more results ./search.py "API rate limits" --num 10 # JSON output (for scripting) ./search.py "deployment steps" --json # Custom timeout ./search.py "long query" --timeout 45 # Full content (no truncation) ./search.py "details" --full ``` ### Output Format Results are ranked by certainty score with confidence indicators: ``` --- Result 1 [HIGH] (certainty: 0.923) --- Source: docs/requirements.md The project requires Python 3.8+ and a valid Telnyx API key... --- Result 2 [MED] (certainty: 0.871) --- Source: notes/planning.md We discussed the requirements in the planning meeting... ``` Confidence levels: `[HIGH]` >= 0.90, `[MED]` >= 0.85, `[LOW]` < 0.85 ### From Python ```python from search import search, similarity_search # Quick search (returns formatted text) print(search("your query", bucket_name="my-bucket")) # Get structured results results = similarity_search("your query", num_docs=5, bucket_name="my-bucket") for doc in results.get("data", []): print(doc["source"], doc["certainty"]) print(doc["content"][:200]) ``` ## Index Content Upload files to a Telnyx Storage bucket and trigger embedding so they become searchable. ### Upload Files ```bash # Upload a single file ./index.py upload path/to/file.md # Upload to a specific bucket ./index.py upload path/to/file.md --bucket my-bucket # Upload with a custom key (filename in bucket) ./index.py upload path/to/file.md --key docs/custom-name.md # Upload all markdown files from a directory ./index.py upload path/to/dir/ --pattern "*.md" # Upload all files from a directory ./index.py upload path/to/dir/ ``` ### Trigger Embedding After uploading files, trigger the embedding process to make them searchable: ```bash # Embed files in default bucket ./index.py embed # Embed files in a specific bucket ./index.py embed --bucket my-bucket ``` ### Check Embedding Status ```bash ./index.py status <task_id> ``` ### List Files and Buckets ```bash # List files in default bucket ./index.py list # List files in a specific bucket ./index.py list --bucket my-bucket # List files with a prefix filter ./index.py list --prefix docs/ # Show embedding status for a bucket ./index.py list --embeddings # List all embedded buckets ./index.py buckets ``` ### Create a Bucket ```bash ./index.py create-bucket my-new-bucket # With a specific region ./index.py create-bucket my-new-bucket --region us-central-1 ``` ### Delete a File ```bash ./index.py delete filename.md ./index.py delete filename.md --bucket my-bucket ``` ## Workflow The typical workflow for making content searchable via bucket search: ``` 1. Upload files 2. Trigger embedding 3. Search ./index.py upload ./index.py embed ./search.py "query" | | | v v v Telnyx Storage ---> Telnyx AI Embeddings ---> Similarity Search (S3-compatible) (server-side vectors) (server-side matching) ``` ### Step-by-step Example ```bash # 1. Create a bucket for your content ./index.py create-bucket my-knowledge # 2. Upload files ./index.py upload ~/docs/ --pattern "*.md" --bucket my-knowledge # 3. Trigger embedding (converts files to searchable vectors) ./index.py embed --bucket my-knowledge # 4. Wait 1-2 minutes for embedding to process # 5. Search! ./search.py "how do I deploy?" --bucket my-knowledge ``` ## Configuration Edit `config.json` to set defaults: ```json { "bucket": "openclaw-main", "region": "us-central-1", "default_num_docs": 5 } ``` | Field | Default | Description | |-------|---------|-------------| | `bucket` | `openclaw-main` | Default bucket for search and index operations | | `region` | `us-central-1` | Telnyx Storage region | | `default_num_docs` | `5` | Default number of search results | All settings can be overridden with CLI flags (`--bucket`, `--num`). ## Integration ### From Other Tools/Bots ```bash # Embed text and capture vector vector=$(python3 {baseDir}/tools/embeddings/embed.py "your text" --json) # Search and capture results results=$(python3 {baseDir}/tools/embeddings/search.py "your query" --json) # Upload and index a file python3 {baseDir}/tools/embeddings/index.py upload /path/to/file.md --bucket my-bucket python3 {baseDir}/tools/embeddings/index.py embed --bucket my-bucket ``` ### From Python ```python import subprocess, json # Embed text result = subprocess.run( ["python3", "{baseDir}/tools/embeddings/embed.py", "your text", "--json"], capture_output=True, text=True ) vector = json.loads(result.stdout) # Search result = subprocess.run( ["python3", "{baseDir}/tools/embeddings/search.py", "your query", "--json"], capture_output=True, text=True ) data = json.loads(result.stdout) ``` ### Replacing OpenAI/Google Memory Search If your bot uses `memory_search` with OpenAI or Google embeddings, switch to: ```bash # Before (requires OPENAI_API_KEY): # memory_search("query") # After (only needs TELNYX_API_KEY): python3 {baseDir}/tools/embeddings/search.py "query" --bucket your-memory-bucket --json ``` ## Relationship to RAG Tool This tool is **complementary** to `tools/rag/`, not a replacement: | Feature | Embeddings (this tool) | RAG (`tools/rag/`) | |---------|----------------------|-------------------| | **Purpose** | Text-to-vector + search primitives | Full RAG pipeline | | **Search** | Direct similarity search | Retrieve + rerank + generate | | **Indexing** | Upload + embed trigger | Auto-sync + smart chunking | | **Q&A** | No (returns raw results) | Yes (LLM-powered answers) | | **Use case** | Vectors, standalone search, integrations | Workspace-level knowledge base | Use **embeddings** when you need vectors or simple search. Use **RAG** when you need AI-powered answers with source citations. ## Troubleshooting ### "No Telnyx API key found" Set your API key: ```bash export TELNYX_API_KEY="KEY..." # or echo 'TELNYX_API_KEY=KEY...' > .env ``` ### "HTTP 401" or "HTTP 403" Your API key is invalid or expired. Get a new one at [portal.telnyx.com](https://portal.telnyx.com/#/app/api-keys). ### "HTTP 404" on search The bucket doesn't exist or embeddings haven't been enabled: ```bash ./index.py create-bucket your-bucket ./index.py embed --bucket your-bucket ``` ### "No results found" - Wait 1-2 minutes after triggering embedding - Check that files were uploaded: `./index.py list --bucket your-bucket` - Verify embeddings are active: `./index.py list --embeddings --bucket your-bucket` ### "Network error" Check your internet connection. The tool needs access to `api.telnyx.com` and `*.telnyxcloudstorage.com`. ## Credits Built for [OpenClaw](https://github.com/openclaw/openclaw) using [Telnyx Storage](https://telnyx.com/products/cloud-storage) and AI APIs.
View on GitHub