Update semantic search integration#424
Conversation
|
Thanks for the effort here. The OpenAI-Compatible provider itself ( I can't merge it as-is though. The diff carries three unrelated regressions that look like a stale rebase — your fork's base predates #380, and the merge brought those files back to the older version:
CI passing doesn't catch these — they're TUI rendering behavior, not anything the unit tests exercise. Could you reset just those three files to current git fetch upstream main
git checkout upstream/main -- src/cli/commands/chat.tsx src/cli/ui/layout/CardStream.tsx src/cli/ui/ticker.tsx
git commit --amend --no-edit
git push --force-with-leaseThe rest of the PR stays untouched. Once those three files are back to |
|
now? |
|
The three files are byte-identical to One last thing before merge: a few i18n PRs landed on
Merge git fetch upstream main
git merge upstream/main
# resolve the three conflicts
git push |
now ? |
Keep the EmbeddingProvider import added by this PR; auto-merge handled the two dashboard i18n files (adjacent string additions on both sides).
|
Took the liberty of doing the merge myself since What's now on your
Ran Thanks for sticking with this through the rebase churn. |
Closes #449 - Theme runtime via useColor() hook + ThemeProvider context - Built-in themes: default, dark, light, tokyo-night, github-dark, github-light, plus auto/high-contrast - Persisted via config: theme.name, with auto resolving against terminal background - /theme slash command (advanced group) with arg completer Merged through #453 slash refactor (theme placed in advanced group) and #424 semantic config additions.
Configurable API URL / key / model / request body for embeddings, replacing the Ollama-only setup. Adds a provider abstraction in src/index/semantic/embedding.ts, index identity check + abort wiring through the builder, API-key redaction in dashboard/status output, and en-US + zh-CN strings for the new provider UI.
Closes esengine#449 - Theme runtime via useColor() hook + ThemeProvider context - Built-in themes: default, dark, light, tokyo-night, github-dark, github-light, plus auto/high-contrast - Persisted via config: theme.name, with auto resolving against terminal background - /theme slash command (advanced group) with arg completer Merged through esengine#453 slash refactor (theme placed in advanced group) and esengine#424 semantic config additions.
What
This pull request introduces support for OpenAI-compatible embedding providers to the semantic search feature. It allows users to configure custom API URLs, API keys, models, and request bodies for embedding generation, replacing the previously hardcoded Ollama-only setup. Additionally, it refactors the semantic search panel UI, adds comprehensive UI text improvements for both English and Chinese translations, and enhances the indexing job handling with more detailed status reporting.
Why
This change enables users to leverage alternative embedding models or services that are compatible with the OpenAI API standard. This flexibility is crucial for users who may prefer different embedding models for performance, cost, or language support reasons. The update also improves the user experience by providing clearer status messages, better configuration options, and more robust error handling during the indexing process. No pre-existing issue is directly linked, but the changes fulfill a common feature request for broader embedding model support.
How to verify
Start the application: Run reasonix code to start the main application or launch the dashboard directly.
Navigate to Semantic Search: Open the dashboard (via /dashboard command) and go to the semantic search settings panel.
Select a new provider: In the semantic panel, select "OpenAI-Compatible" from the provider dropdown.
Configure the provider: Enter a valid API URL, API key, and model name. Add any optional custom request body if needed.
Save the configuration: Click the "Save" button. The UI should show a success message without errors.
Build an index: Initiate a new index build. The job should proceed through "scanning", "embedding", and "writing" phases.
Verify functionality: After the index is built, perform a semantic search query. The search should return relevant results using the configured provider.
Check UI text: Verify that the updated English and Chinese text strings appear correctly in the interface (e.g., "incompatible status", "setup failed", "remote provider").
Checklist