Skip to content

feat: OpenAI-compatible text embeddings plugin - #94

Draft
openvoiceos-bot wants to merge 1 commit into
devfrom
feat/text-embeddings
Draft

openvoiceos-bot wants to merge 1 commit into
devfrom
feat/text-embeddings

Conversation

@openvoiceos-bot

Copy link
Copy Markdown
Contributor

🤖 Auto-generated by Claude Opus 5.5 (claude-opus-5-5) via Claude Code — NOT human-reviewed. Verify before acting.

What changes

A new plugin, ovos-openai-embeddings-plugin (opm.embeddings.text), turns text into vectors through any OpenAI-compatible /v1/embeddings endpoint, such as OpenAI, Ollama, llama.cpp, vLLM, LiteLLM or ovos-persona-server.

Part Behaviour
get_embeddings_batch(texts) One request for each batch_size texts (default 128). The vectors come back in input order, sorted by each item's index
get_embeddings(text) One vector
Config api_url, model (required), key, dimensions, batch_size, timeout
Failures A non-2xx reply, or a vector count that differs from the text count, raises RuntimeError

numpy becomes a dependency, because the vectors are float32 arrays. It is the EmbeddingsArray type of the plugin manager.

On a plugin manager without TextEmbedder.get_embeddings_batch, which OpenVoiceOS/ovos-plugin-manager#472 adds, the method still exists on this class.

Evidence

Check Result
New tests against a local HTTP server in the /v1/embeddings shape 9 passed
The same tests with the index sort removed 2 failed
Full suite 90 passed
Stub reply parsed by the official openai SDK (3.36.1) CreateEmbeddingResponse parses; create() takes the same input, model and dimensions

Not run against a live embeddings server: no server was running on the machine.

🤖 Generated with Claude Code

ovos-openai-embeddings-plugin is a TextEmbedder for any server with an
OpenAI-compatible /v1/embeddings endpoint. get_embeddings_batch sends
one request for each batch_size texts and returns the vectors in input
order, sorted by each item's index.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 22, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Checking back in with the latest test results. 📡

I've aggregated the results of the automated checks for this PR below.

📊 Coverage

Diving deep into the code to see what's covered! 🤿

✅ 90.0% total coverage

Per-file coverage (9 files)
File Coverage Missing lines
ovos_openai_plugin/version.py 0.0% 5
ovos_openai_plugin/translate.py 83.3% 7
ovos_openai_plugin/api.py 87.2% 16
ovos_openai_plugin/rag_memory.py 90.3% 11
ovos_openai_plugin/embeddings.py 97.1% 1
ovos_openai_plugin/__init__.py 100.0% 0
ovos_openai_plugin/chat.py 100.0% 0
ovos_openai_plugin/dialog_transformers.py 100.0% 0
ovos_openai_plugin/summarizer.py 100.0% 0

Full report: download the coverage-report artifact.

🔍 Lint

I've finished the digital walk-through of your PR. 🚶‍♂️

❌ ruff: issues found in 20 file(s) — see job log
✅ actionlint: 9 workflow file(s), no finding

⚖️ License Check

Everything looks good on the legal front. ✅

✅ No license violations found.

Policy: Apache 2.0 (universal donor). StrongCopyleft / NetworkCopyleft / WeakCopyleft / Other / Error categories fail. MPL allowed.

🔌 Skill Tests (ovoscope)

I've checked the skill's 'privacy' (aka data handling). 🔒

✅ 3/3 passed

✅ TestOpenAIPerSessionMemory — 1/1
✅ TestOpenAIPersonaSpeaksThroughPipeline — 2/2

🚌 Bus Coverage

Quantifying the thoroughness of our end-to-end signal tracking. 🧮

⚠️ Bus coverage report unavailable — check the job log.


Closing the loop on this automated check ♻️

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants