Skip to content

Feat flat implementation - #865

Open
aloysiowinter wants to merge 8 commits into
zilliztech:mainfrom
GRINPROJS-PUCRS:feat_flat_implementation
Open

Feat flat implementation#865
aloysiowinter wants to merge 8 commits into
zilliztech:mainfrom
GRINPROJS-PUCRS:feat_flat_implementation

Conversation

@aloysiowinter

Copy link
Copy Markdown

Summary

Adds pgvectorFLAT as a separate benchmark configuration for exact nearest-neighbor search in pgvector.

Changes

  • Adds pgvectorFLAT configuration and CLI support.
  • Reuses the existing pgvector client implementation.
  • Ensures FLAT does not create or use IVFFLAT/HNSW ANN indexes.
  • Adds the required configuration and UI integration.
  • Adds tests for the new behavior.
  • Keeps existing pgvector IVFFLAT and HNSW behavior unchanged.

Validation

Manually validated with PostgreSQL + pgvector in Docker using Performance1536D50K.

  • 50,000 vectors loaded successfully.
  • Recall: 1.0.
  • Result metadata correctly reports "index": "FLAT".
  • Confirmed that no IVFFLAT or HNSW vector index exists during the FLAT benchmark.

aloysiowinter and others added 8 commits August 18, 2026 13:48
The Oracle client had no CASE_CONFIG_MAP entry, so the web UI offered no
index tuning inputs and every UI run fell back to defaults. Add the
Oracle param names to CaseConfigParamType and expose IndexType
(HNSW/IVF_FLAT/FLAT) plus the per-index parameters with the same
conditional display pattern as pgvector.
… COSINE

parse_oracle_metric silently fell back to COSINE for any unmapped
MetricType (HAMMING, JACCARD, BM25), which would produce misleading
recall numbers. Raise ValueError instead; None still means COSINE.
Import ordering, usedforsecurity=False on the md5 index-name hash, bare
raise on re-raise, EM102/TRY400 exception message style, log the skipped
vector_memory_size probe, prefer dict over a useless lambda, and drop
the eager re-exports in oracle/__init__.py: all imports use fully
qualified module paths (matching pgvector), and the eager
'from .oracle import Oracle' defeated the lazy oracledb import design.
- Relocate test_oracle.py to tests/ alongside every other client's tests.
- Construct LabelFilter via label_percentage (label_value is a derived
  property) and use the derived label in the fixture data.
- The IVF live test asserted the optimizer's plan used the vector index,
  which legitimately fails on a 100-row table; assert the index exists
  in user_indexes instead and keep the plan as informational logging.
- Cover the new parse_oracle_metric ValueError.
feat: harden the Oracle client and expose its case configuration
@sre-ci-robot

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: aloysiowinter
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

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.

4 participants