Skip to content

feat(clients): add Telys connector (on-device, Algenta-powered vector engine)#823

Closed
angelatgithub wants to merge 4 commits into
zilliztech:mainfrom
angelatgithub:feat/telys-connector
Closed

feat(clients): add Telys connector (on-device, Algenta-powered vector engine)#823
angelatgithub wants to merge 4 commits into
zilliztech:mainfrom
angelatgithub:feat/telys-connector

Conversation

@angelatgithub

Copy link
Copy Markdown

What

Adds a VectorDBBench client for Telys — an on-device, Algenta-powered vector-execution layer that accelerates filtered search by physical layout: the partition key is stored as a contiguous slice, so label == X reads one block instead of scanning + masking the whole table. The connector talks to a running telys serve (TCP) via the public telys SDK, so it's a fair server-vs-server measurement. It partitions by the label field, so the label-filter case (StrEqual) maps to Telys's single-key contiguous-partition wedge.

Changes

  • backend/clients/telys/{telys.py,config.py,cli.py,__init__.py}VectorDB connector + config + CLI
  • Registered in backend/clients/__init__.py (DB enum + init_cls/config_cls/case_config_cls) and cli/vectordbbench.py
  • pyproject.toml: telys extra (pip install vectordb-bench[telys], telys>=0.1.0b3); README supported-clients table updated

Supported filters

  • NonFilter and StrEqual (label==value — the wedge)
  • NumGE (int-range) is intentionally not declared — Telys Eq is equality, not a range
  • Cosine/IP datasets (need_normalize_cosine=True)

Validation

Run end-to-end through the real CaseRunner against a live telys serve:

  • Cohere-100K, 768-d cosine, label-filter @ 1%: recall 1.0000, ndcg 1.0000, serial p99 1.5 ms, 4099 qps @ concurrency 8
  • Custom local fixture (unfiltered + label filters @ 50% and 2%): recall 1.000; concurrent multiprocessing search (each worker its own connection); no crashes

Run

pip install vectordb-bench[telys]
telys serve --host 0.0.0.0 --port 9099 --access-token "$TELYS_ACCESS_TOKEN"
vectordbbench telys --host 127.0.0.1 --port 9099 --access-token "$TELYS_ACCESS_TOKEN" ...

Notes for maintainers

  • Inserts go over the SDK's length-prefixed JSON wire (search latency — the headline metric — is unaffected); load throughput is thus conservative vs binary-protocol clients.
  • Happy to add a curated-board entry — could you point me at the process for inclusion in the zilliz.com/vdbbench-leaderboard set?

@sre-ci-robot

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: angelatgithub
To complete the pull request process, please assign xuanyang-cn after the PR has been reviewed.
You can assign the PR to them by writing /assign @xuanyang-cn in a comment when ready.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@angelatgithub

Copy link
Copy Markdown
Author

/assign @XuanYang-cn

Telys (github via PyPI `telys`) is an on-device, Algenta-powered vector-execution
layer that accelerates FILTERED search by physical layout: the partition key becomes
a contiguous slice, so a `label == X` filter reads one block instead of scanning +
masking the whole table.

- backend/clients/telys/{telys.py,config.py,__init__.py}: VectorDB connector over a
  running `telys serve` (TCP) via the public telys.client (RemoteTelys). Partitions by
  the label field, so the label-filter case (StrEqual) maps to a single contiguous
  partition slice; the no-filter case uses one constant partition. Supports NonFilter
  + StrEqual; thread_safe=False (each concurrent runner gets its own connection);
  need_normalize_cosine=True (raw collections score by IP == cosine when normalized).
- register Telys in the DB enum + init_cls/config_cls/case_config_cls.

Requires telys >= (PR: remote build_ivf/drop_collection) for optimize()/drop_old.
- clients/telys/cli.py: `vectordbbench telys` command (host/port/access-token/
  min-rows/target-recall), registered in cli/vectordbbench.py.
- pyproject: `telys` optional-dependency extra (pip install vectordb-bench[telys]).
- README: add telys to the supported-clients table.

The connector runs over a `telys serve` TCP endpoint; label==key equality maps to
Telys's single-key contiguous-partition wedge. Validated end-to-end through the real
CaseRunner on Cohere-100K label-filter (recall 1.0, ndcg 1.0).
…build_ivf

Reviewer simulation with the published telys 0.1.0b2 surfaced that drop_old cannot
reset state without remote drop_collection, causing a schema conflict when a case
re-runs or switches partition schema. drop_collection (and build_ivf) ship in the
0.1.0b3 self-host hardening, so pin the extra to it. build_ivf is additionally wrapped
so an older server degrades to exact search (still correct) rather than erroring.
Pre-PR review follow-ups:
- Reject L2/Euclidean datasets in __init__ (Telys ranks by IP; L2 would silently give
  wrong recall) instead of the previous silent mis-scoring.
- Fix ruff (drop redundant noqa, sort imports) + black formatting -> CI lint passes.
- Register DB.Telys in frontend styles (DB_TO_ICON + COLOR_MAP) so the Run-Test UI shows
  an icon instead of a broken image.
@angelatgithub
angelatgithub force-pushed the feat/telys-connector branch from 1a55487 to dfd2100 Compare July 21, 2026 01:49
@angelatgithub

Copy link
Copy Markdown
Author

Closing to resubmit cleanly with correct commit authorship (angelatgithub). Reopening shortly.

@angelatgithub
angelatgithub deleted the feat/telys-connector branch July 21, 2026 01:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants