Skip to content

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

Open
angelatgithub wants to merge 1 commit into
zilliztech:mainfrom
angelatgithub:telys-connector
Open

feat(clients): add Telys connector (on-device, Algenta-powered vector engine)#824
angelatgithub wants to merge 1 commit into
zilliztech:mainfrom
angelatgithub: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 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; 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} — connector + config + CLI
  • Registered in backend/clients/__init__.py (DB enum + init_cls/config_cls/case_config_cls) and cli/vectordbbench.py; icon/color in frontend/config/styles.py
  • pyproject.toml: telys extra (pip install vectordb-bench[telys], telys>=0.1.0b3); README table

Supported

  • NonFilter + StrEqual (label==value — the wedge). NumGE (int-range) intentionally not declared (Telys Eq is equality, not a range).
  • Cosine/IP only (need_normalize_cosine); L2 datasets are rejected loudly (would otherwise mis-rank).

Validation

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 fixtures (unfiltered + label filters @ 50% / 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"

Happy to add a curated-board entry — could you point me at the inclusion process for zilliz.com/vdbbench-leaderboard?

… engine)

Telys 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
(server-vs-server), partitioning by the label field so the label-filter case (StrEqual)
maps to Telys's single-key contiguous-partition wedge.

- backend/clients/telys/{telys.py,config.py,cli.py,__init__.py}: VectorDB connector + config + CLI
- registered in backend/clients/__init__.py (DB enum + init/config/case-config) and cli/vectordbbench.py
- frontend/config/styles.py: DB_TO_ICON + COLOR_MAP entries
- pyproject.toml: telys extra (pip install vectordb-bench[telys], telys>=0.1.0b3); README table
- supports NonFilter + StrEqual (label==value); NumGE (range) intentionally not declared;
  cosine/IP only (need_normalize_cosine) — L2 datasets are rejected loudly

Validated end-to-end through VDBBench's real CaseRunner against a live telys serve:
Cohere-100K (768-d cosine, label-filter 1%) recall 1.0000, ndcg 1.0000, p99 1.5ms,
4099 qps @ concurrency 8; custom fixtures (unfiltered + label filters) recall 1.000.
@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

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